Java Reference

Java Reference

LinearExpr.java
Go to the documentation of this file.
1 // Copyright 2010-2021 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(variable, coefficient, 0);
85  }
86 
88  static LinearExpr term(Literal lit, long coefficient) {
89  return new ScalProd(lit, coefficient, 0);
90  }
91 
93  static LinearExpr affine(IntVar variable, long coefficient, long offset) {
94  return new ScalProd(variable, coefficient, offset);
95  }
96 
98  static LinearExpr affine(Literal lit, long coefficient, long offset) {
99  return new ScalProd(lit, coefficient, offset);
100  }
101 
103  static LinearExpr constant(long value) {
104  return new Constant(value);
105  }
106 }
A linear expression interface that can be parsed.
Definition: LinearExpr.java:17
static LinearExpr affine(IntVar variable, long coefficient, long offset)
Creates an affine expression (var * coefficient + offset).
Definition: LinearExpr.java:93
A linear expression interface that can be parsed.
Definition: ScalProd.java:17
static LinearExpr term(Literal lit, long coefficient)
Creates a linear term (lit * coefficient).
Definition: LinearExpr.java:88
static LinearExpr sum(IntVar[] variables)
Creates a sum expression.
Definition: LinearExpr.java:31
static LinearExpr scalProd(IntVar[] variables, long[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:42
long getOffset()
Returns the constant part of the expression.
static LinearExpr affine(Literal lit, long coefficient, long offset)
Creates an affine expression (lit * coefficient + offset).
Definition: LinearExpr.java:98
IntVar getVariable(int index)
Returns the ith variable.
Exception thrown when parallel arrays have mismatched lengths.
Definition: CpModel.java:51
static LinearExpr booleanScalProd(Literal[] literals, long[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:62
A linear expression interface that can be parsed.
Definition: Constant.java:17
int numElements()
Returns the number of elements in the interface.
Interface to describe a boolean variable or its negation.
Definition: Literal.java:17
static LinearExpr scalProd(IntVar[] variables, int[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:50
static LinearExpr constant(long value)
Creates an constant expression.
Main modeling class.
Definition: CpModel.java:42
static LinearExpr booleanScalProd(Literal[] literals, int[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:70
static LinearExpr booleanSum(Literal[] literals)
Creates a sum expression.
Definition: LinearExpr.java:36
static LinearExpr term(IntVar variable, long coefficient)
Creates a linear term (var * coefficient).
Definition: LinearExpr.java:83
long getCoefficient(int index)
Returns the ith coefficient.
A linear expression interface that can be parsed.