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)
44  if (variables.length != coefficients.length) {
45  throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "variables", "coefficients");
46  }
47  return new ScalProd(variables, coefficients);
48  }
49 
51  static LinearExpr scalProd(IntVar[] variables, int[] coefficients)
53  if (variables.length != coefficients.length) {
54  throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "variables", "coefficients");
55  }
56  long[] tmp = new long[coefficients.length];
57  for (int i = 0; i < coefficients.length; ++i) {
58  tmp[i] = coefficients[i];
59  }
60  return new ScalProd(variables, tmp);
61  }
62 
64  static LinearExpr booleanScalProd(Literal[] literals, long[] coefficients)
66  if (literals.length != coefficients.length) {
67  throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "literals", "coefficients");
68  }
69  return new ScalProd(literals, coefficients);
70  }
71 
73  static LinearExpr booleanScalProd(Literal[] literals, int[] coefficients)
75  if (literals.length != coefficients.length) {
76  throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "literals", "coefficients");
77  }
78 
79  long[] tmp = new long[coefficients.length];
80  for (int i = 0; i < coefficients.length; ++i) {
81  tmp[i] = coefficients[i];
82  }
83  return new ScalProd(literals, tmp);
84  }
85 
87  static LinearExpr term(IntVar variable, long coefficient) {
88  return new ScalProd(new IntVar[] {variable}, new long[] {coefficient});
89  }
90 }
Exception thrown when parallel arrays have mismatched lengths.
Definition: CpModel.java:50
Main modeling class.
Definition: CpModel.java:41
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:73
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:64
static LinearExpr term(IntVar variable, long coefficient)
Creates a linear term (var * coefficient).
Definition: LinearExpr.java:87
static LinearExpr scalProd(IntVar[] variables, int[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:51
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