OR-Tools  7.1
ReifiedSampleSat.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 
15 import com.google.ortools.sat.IntVar;
17 
28 public class ReifiedSampleSat {
29  static {
30  System.loadLibrary("jniortools");
31  }
32 
33  public static void main(String[] args) throws Exception {
34  CpModel model = new CpModel();
35 
36  IntVar x = model.newBoolVar("x");
37  IntVar y = model.newBoolVar("y");
38  IntVar b = model.newBoolVar("b");
39 
40  // Version 1: a half-reified boolean and.
41  model.addBoolAnd(new Literal[] {x, y.not()}).onlyEnforceIf(b);
42 
43  // Version 2: implications.
44  model.addImplication(b, x);
45  model.addImplication(b, y.not());
46 
47  // Version 3: boolean or.
48  model.addBoolOr(new Literal[] {b.not(), x});
49  model.addBoolOr(new Literal[] {b.not(), y.not()});
50  }
51 }
Literal not()
Returns the negation of a boolean variable.
static void main(String[] args)
Constraint addBoolOr(Literal[] literals)
Adds.
Definition: CpModel.java:97
IntVar newBoolVar(String name)
Creates a Boolean variable with the given name.
Definition: CpModel.java:85
Interface to describe a boolean variable or its negation.
Definition: Literal.java:17
Main modeling class.
Definition: CpModel.java:40
Constraint addBoolAnd(Literal[] literals)
Adds.
Definition: CpModel.java:107
Constraint addImplication(Literal a, Literal b)
Adds.
Definition: CpModel.java:127
Reification is the action of associating a Boolean variable to a constraint.