diff --git a/docs/cpp_algorithms/annotated.html b/docs/cpp_algorithms/annotated.html index 37b83104e4..acc434d504 100644 --- a/docs/cpp_algorithms/annotated.html +++ b/docs/cpp_algorithms/annotated.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classes.html b/docs/cpp_algorithms/classes.html index dd184b9565..ba1fd71192 100644 --- a/docs/cpp_algorithms/classes.html +++ b/docs/cpp_algorithms/classes.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver-members.html b/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver-members.html index 6b5ef90909..334aa1a17b 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver.html b/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver.html index 3029feb9e5..ac089429ba 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver.html +++ b/docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList-members.html b/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList-members.html index 18e21e6ab2..adf6a4ec25 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList.html b/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList.html index 45ba4bc9cb..7d13902c44 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList.html +++ b/docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition-members.html b/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition-members.html index ec475ff4d4..3780ac19bd 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition.html b/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition.html index bd780d7a2b..b5020af747 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition.html +++ b/docs/cpp_algorithms/classoperations__research_1_1DynamicPartition.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation-members.html b/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation-members.html index 7ac2b65663..026a26f493 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation.html b/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation.html index 9a635e52a9..1cb993f1e4 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation.html +++ b/docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder-members.html b/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder-members.html index c6845a467e..821fa7b2a0 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder.html b/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder.html index 4543236552..34b45a758a 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder.html +++ b/docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator-members.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator-members.html index 33808cdca6..a12e579fd1 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator.html index 1cc385d0a2..9893a28aca 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver-members.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver-members.html index 3d81564d23..384fa728c9 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver.html index 78c4519890..0ca425eb3e 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator-members.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator-members.html index 98d8896c23..01c85e6cc3 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator.html index f8cbdfed2d..9203280162 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode-members.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode-members.html index a2f13ee2d7..b0ba996c83 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode.html index d490592194..64b403f2dd 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath-members.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath-members.html index 320378a9ed..8309864f14 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath.html index 65d021893d..b4183d02c9 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver-members.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver-members.html index c7bd2eaeea..1cc9cecc8b 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver.html index 82c5e018c1..aea973e7e6 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackState-members.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackState-members.html index 8d9cd4562a..3f5a233783 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackState-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackState-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1KnapsackState.html b/docs/cpp_algorithms/classoperations__research_1_1KnapsackState.html index f7c3a30954..c1a9b60f2f 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1KnapsackState.html +++ b/docs/cpp_algorithms/classoperations__research_1_1KnapsackState.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1MergingPartition-members.html b/docs/cpp_algorithms/classoperations__research_1_1MergingPartition-members.html index 74fa0d9516..c35add4dc7 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1MergingPartition-members.html +++ b/docs/cpp_algorithms/classoperations__research_1_1MergingPartition-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/classoperations__research_1_1MergingPartition.html b/docs/cpp_algorithms/classoperations__research_1_1MergingPartition.html index 88fa586474..81ab908788 100644 --- a/docs/cpp_algorithms/classoperations__research_1_1MergingPartition.html +++ b/docs/cpp_algorithms/classoperations__research_1_1MergingPartition.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dense__doubly__linked__list_8h.html b/docs/cpp_algorithms/dense__doubly__linked__list_8h.html index a244d644b2..7f8e5c69ba 100644 --- a/docs/cpp_algorithms/dense__doubly__linked__list_8h.html +++ b/docs/cpp_algorithms/dense__doubly__linked__list_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dense__doubly__linked__list_8h_source.html b/docs/cpp_algorithms/dense__doubly__linked__list_8h_source.html index 497eb60b0c..f3093e883e 100644 --- a/docs/cpp_algorithms/dense__doubly__linked__list_8h_source.html +++ b/docs/cpp_algorithms/dense__doubly__linked__list_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dir_80dda7a75b0dfcf996988638a63eb03a.html b/docs/cpp_algorithms/dir_80dda7a75b0dfcf996988638a63eb03a.html index f125322931..3a0278cba1 100644 --- a/docs/cpp_algorithms/dir_80dda7a75b0dfcf996988638a63eb03a.html +++ b/docs/cpp_algorithms/dir_80dda7a75b0dfcf996988638a63eb03a.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dir_a7cc1eeded8f693d0da6c729bc88c45a.html b/docs/cpp_algorithms/dir_a7cc1eeded8f693d0da6c729bc88c45a.html index 9248b7cfcd..25cf326d97 100644 --- a/docs/cpp_algorithms/dir_a7cc1eeded8f693d0da6c729bc88c45a.html +++ b/docs/cpp_algorithms/dir_a7cc1eeded8f693d0da6c729bc88c45a.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dynamic__partition_8h.html b/docs/cpp_algorithms/dynamic__partition_8h.html index e7d25b479e..aa07f02011 100644 --- a/docs/cpp_algorithms/dynamic__partition_8h.html +++ b/docs/cpp_algorithms/dynamic__partition_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dynamic__partition_8h_source.html b/docs/cpp_algorithms/dynamic__partition_8h_source.html index 613b0fa5ee..b9337ae0e5 100644 --- a/docs/cpp_algorithms/dynamic__partition_8h_source.html +++ b/docs/cpp_algorithms/dynamic__partition_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dynamic__permutation_8h.html b/docs/cpp_algorithms/dynamic__permutation_8h.html index 9bb01baf02..fa7beaaa88 100644 --- a/docs/cpp_algorithms/dynamic__permutation_8h.html +++ b/docs/cpp_algorithms/dynamic__permutation_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/dynamic__permutation_8h_source.html b/docs/cpp_algorithms/dynamic__permutation_8h_source.html index 7baf409429..7b6d07fb6e 100644 --- a/docs/cpp_algorithms/dynamic__permutation_8h_source.html +++ b/docs/cpp_algorithms/dynamic__permutation_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/files.html b/docs/cpp_algorithms/files.html index 091b1b01f8..555d770d87 100644 --- a/docs/cpp_algorithms/files.html +++ b/docs/cpp_algorithms/files.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/find__graph__symmetries_8h.html b/docs/cpp_algorithms/find__graph__symmetries_8h.html index 776c3cba7c..52ca014bcb 100644 --- a/docs/cpp_algorithms/find__graph__symmetries_8h.html +++ b/docs/cpp_algorithms/find__graph__symmetries_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/find__graph__symmetries_8h_source.html b/docs/cpp_algorithms/find__graph__symmetries_8h_source.html index 13dbef615f..d17069f17c 100644 --- a/docs/cpp_algorithms/find__graph__symmetries_8h_source.html +++ b/docs/cpp_algorithms/find__graph__symmetries_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/functions.html b/docs/cpp_algorithms/functions.html index dfba9a1df2..da93470d38 100644 --- a/docs/cpp_algorithms/functions.html +++ b/docs/cpp_algorithms/functions.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/functions_enum.html b/docs/cpp_algorithms/functions_enum.html index c80825e054..1f5bca41e1 100644 --- a/docs/cpp_algorithms/functions_enum.html +++ b/docs/cpp_algorithms/functions_enum.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/functions_eval.html b/docs/cpp_algorithms/functions_eval.html index b62c694e1c..55cd497661 100644 --- a/docs/cpp_algorithms/functions_eval.html +++ b/docs/cpp_algorithms/functions_eval.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/functions_func.html b/docs/cpp_algorithms/functions_func.html index 143c845d49..1db398d17d 100644 --- a/docs/cpp_algorithms/functions_func.html +++ b/docs/cpp_algorithms/functions_func.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/functions_type.html b/docs/cpp_algorithms/functions_type.html index df1b5bd3c6..2b7971064d 100644 --- a/docs/cpp_algorithms/functions_type.html +++ b/docs/cpp_algorithms/functions_type.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/functions_vars.html b/docs/cpp_algorithms/functions_vars.html index 5308fdfafa..b883f15052 100644 --- a/docs/cpp_algorithms/functions_vars.html +++ b/docs/cpp_algorithms/functions_vars.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/graph_legend.html b/docs/cpp_algorithms/graph_legend.html index b6463c2500..5392ec0305 100644 --- a/docs/cpp_algorithms/graph_legend.html +++ b/docs/cpp_algorithms/graph_legend.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/hierarchy.html b/docs/cpp_algorithms/hierarchy.html index 8ef2b4b67a..279d9a84fd 100644 --- a/docs/cpp_algorithms/hierarchy.html +++ b/docs/cpp_algorithms/hierarchy.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/hungarian_8h.html b/docs/cpp_algorithms/hungarian_8h.html index 90153ba1fe..5c14b815f3 100644 --- a/docs/cpp_algorithms/hungarian_8h.html +++ b/docs/cpp_algorithms/hungarian_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/hungarian_8h_source.html b/docs/cpp_algorithms/hungarian_8h_source.html index 73fa32225e..5fcfea059b 100644 --- a/docs/cpp_algorithms/hungarian_8h_source.html +++ b/docs/cpp_algorithms/hungarian_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/index.html b/docs/cpp_algorithms/index.html index b32cbe7a75..87d6a2fb42 100644 --- a/docs/cpp_algorithms/index.html +++ b/docs/cpp_algorithms/index.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/inherits.html b/docs/cpp_algorithms/inherits.html index c52dc56684..1e1ef88ef0 100644 --- a/docs/cpp_algorithms/inherits.html +++ b/docs/cpp_algorithms/inherits.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/knapsack__solver_8h.html b/docs/cpp_algorithms/knapsack__solver_8h.html index 900b61beee..cd8f513efc 100644 --- a/docs/cpp_algorithms/knapsack__solver_8h.html +++ b/docs/cpp_algorithms/knapsack__solver_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/knapsack__solver_8h_source.html b/docs/cpp_algorithms/knapsack__solver_8h_source.html index 58020a4efb..eda25d923d 100644 --- a/docs/cpp_algorithms/knapsack__solver_8h_source.html +++ b/docs/cpp_algorithms/knapsack__solver_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/namespacemembers.html b/docs/cpp_algorithms/namespacemembers.html index ba91969ede..781c5ec86d 100644 --- a/docs/cpp_algorithms/namespacemembers.html +++ b/docs/cpp_algorithms/namespacemembers.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/namespacemembers_func.html b/docs/cpp_algorithms/namespacemembers_func.html index b5f38e92dd..dd7c8e7141 100644 --- a/docs/cpp_algorithms/namespacemembers_func.html +++ b/docs/cpp_algorithms/namespacemembers_func.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/namespacemembers_type.html b/docs/cpp_algorithms/namespacemembers_type.html index 7e556868cd..fa475e02fd 100644 --- a/docs/cpp_algorithms/namespacemembers_type.html +++ b/docs/cpp_algorithms/namespacemembers_type.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/namespaceoperations__research.html b/docs/cpp_algorithms/namespaceoperations__research.html index f15f5db8ae..f7cc694e50 100644 --- a/docs/cpp_algorithms/namespaceoperations__research.html +++ b/docs/cpp_algorithms/namespaceoperations__research.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/namespaces.html b/docs/cpp_algorithms/namespaces.html index ec5ad0da15..842417f99e 100644 --- a/docs/cpp_algorithms/namespaces.html +++ b/docs/cpp_algorithms/namespaces.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart-members.html b/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart-members.html index f466321c73..b5f1a26329 100644 --- a/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart-members.html +++ b/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart.html b/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart.html index 90debe279a..2e395b175d 100644 --- a/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart.html +++ b/docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment-members.html b/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment-members.html index b552a8c5db..425e3612ca 100644 --- a/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment-members.html +++ b/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment.html b/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment.html index 90192034ad..11f14c7158 100644 --- a/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment.html +++ b/docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem-members.html b/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem-members.html index 87e67ee760..70b4b00a75 100644 --- a/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem-members.html +++ b/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem.html b/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem.html index 925f791250..2de861960a 100644 --- a/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem.html +++ b/docs/cpp_algorithms/structoperations__research_1_1KnapsackItem.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/annotated.html b/docs/cpp_graph/annotated.html index 0d3035dd4a..93d3b18e9d 100644 --- a/docs/cpp_graph/annotated.html +++ b/docs/cpp_graph/annotated.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/christofides_8h.html b/docs/cpp_graph/christofides_8h.html index 6921ef8e3d..ddf735519f 100644 --- a/docs/cpp_graph/christofides_8h.html +++ b/docs/cpp_graph/christofides_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/christofides_8h_source.html b/docs/cpp_graph/christofides_8h_source.html index 7b298e0b4b..d538bbe611 100644 --- a/docs/cpp_graph/christofides_8h_source.html +++ b/docs/cpp_graph/christofides_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classConnectedComponentsFinder-members.html b/docs/cpp_graph/classConnectedComponentsFinder-members.html index 2463a828a7..4a887d9e94 100644 --- a/docs/cpp_graph/classConnectedComponentsFinder-members.html +++ b/docs/cpp_graph/classConnectedComponentsFinder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classConnectedComponentsFinder.html b/docs/cpp_graph/classConnectedComponentsFinder.html index c20e04dfaa..117141e2d4 100644 --- a/docs/cpp_graph/classConnectedComponentsFinder.html +++ b/docs/cpp_graph/classConnectedComponentsFinder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classDenseConnectedComponentsFinder-members.html b/docs/cpp_graph/classDenseConnectedComponentsFinder-members.html index 365077e824..1696f58597 100644 --- a/docs/cpp_graph/classDenseConnectedComponentsFinder-members.html +++ b/docs/cpp_graph/classDenseConnectedComponentsFinder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classDenseConnectedComponentsFinder.html b/docs/cpp_graph/classDenseConnectedComponentsFinder.html index fc7e25dfd0..890ae682bc 100644 --- a/docs/cpp_graph/classDenseConnectedComponentsFinder.html +++ b/docs/cpp_graph/classDenseConnectedComponentsFinder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classes.html b/docs/cpp_graph/classes.html index 2fd437ccd0..e8f4e254a8 100644 --- a/docs/cpp_graph/classes.html +++ b/docs/cpp_graph/classes.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager-members.html b/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager-members.html index 1458f47f0e..99c6eaad7b 100644 --- a/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager-members.html +++ b/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager.html b/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager.html index 89ddec43d0..0321b59cde 100644 --- a/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager.html +++ b/docs/cpp_graph/classoperations__research_1_1AnnotatedGraphBuildManager.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead-members.html b/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead-members.html index a450dfd67f..a72b320c77 100644 --- a/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead.html b/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead.html index 77d434f3f6..be3138d1f2 100644 --- a/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead.html +++ b/docs/cpp_graph/classoperations__research_1_1ArcFunctorOrderingByTailAndHead.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode-members.html b/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode-members.html index 1ba3de61d1..2582658525 100644 --- a/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode.html b/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode.html index 7a34c1eb68..1eb34a468c 100644 --- a/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode.html +++ b/docs/cpp_graph/classoperations__research_1_1ArcIndexOrderingByTailNode.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm-members.html b/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm-members.html index 04af4eb04e..0adb2ffa37 100644 --- a/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm-members.html +++ b/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm.html b/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm.html index 2b51923c81..7b8aee3476 100644 --- a/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm.html +++ b/docs/cpp_graph/classoperations__research_1_1BronKerboschAlgorithm.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver-members.html b/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver-members.html index 969b3a6c40..f2ea66fa41 100644 --- a/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver.html b/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver.html index 932765fa08..19fa6c5b45 100644 --- a/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver.html +++ b/docs/cpp_graph/classoperations__research_1_1ChristofidesPathSolver.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ConnectedComponents-members.html b/docs/cpp_graph/classoperations__research_1_1ConnectedComponents-members.html index 62fd470eea..48d1474fb1 100644 --- a/docs/cpp_graph/classoperations__research_1_1ConnectedComponents-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ConnectedComponents-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ConnectedComponents.html b/docs/cpp_graph/classoperations__research_1_1ConnectedComponents.html index c6b92778ba..f414f4c4c5 100644 --- a/docs/cpp_graph/classoperations__research_1_1ConnectedComponents.html +++ b/docs/cpp_graph/classoperations__research_1_1ConnectedComponents.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler-members.html b/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler-members.html index c950267f27..13905ddf12 100644 --- a/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler-members.html +++ b/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler.html b/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler.html index 7c06e556cf..d9de22061c 100644 --- a/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler.html +++ b/docs/cpp_graph/classoperations__research_1_1CostValueCycleHandler.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraph-members.html b/docs/cpp_graph/classoperations__research_1_1EbertGraph-members.html index 6877958a81..f7d839fd4b 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraph-members.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraph.html b/docs/cpp_graph/classoperations__research_1_1EbertGraph.html index 9f1bd40871..9931410839 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraph.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase-members.html b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase-members.html index 95f080a4eb..5403a798f8 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase-members.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase.html b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase.html index 96c4350d5e..5ca6329200 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs-members.html b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs-members.html index 7b01a60ffa..a581619079 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs-members.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs.html b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs.html index 4e87cdef58..f70edde137 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator-members.html b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator-members.html index a66db03fbc..0d2853fe4d 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator.html b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator.html index e6d476bfb6..e003c30817 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1IncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html index 7bc4d402c5..e25fd6e3cb 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator.html b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator.html index 4ba3ee0206..67e50eaeb7 100644 --- a/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1EbertGraph_1_1OutgoingOrOppositeIncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ElementIterator-members.html b/docs/cpp_graph/classoperations__research_1_1ElementIterator-members.html index 8222d27679..ef3030638e 100644 --- a/docs/cpp_graph/classoperations__research_1_1ElementIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ElementIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ElementIterator.html b/docs/cpp_graph/classoperations__research_1_1ElementIterator.html index 6ad310b21a..d665f0a02f 100644 --- a/docs/cpp_graph/classoperations__research_1_1ElementIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1ElementIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph-members.html b/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph-members.html index 8abfcbe1ea..310e499c4e 100644 --- a/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph.html b/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph.html index 8fac760da0..c2f87225de 100644 --- a/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph.html +++ b/docs/cpp_graph/classoperations__research_1_1ForwardEbertGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph-members.html b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph-members.html index eb2d0142ce..67a957f433 100644 --- a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph.html b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph.html index c134788560..7741bd455b 100644 --- a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph.html +++ b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs-members.html b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs-members.html index 6e300c8da4..5aa9e7c6ce 100644 --- a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs-members.html +++ b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs.html b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs.html index 538f214088..be0d4ce715 100644 --- a/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs.html +++ b/docs/cpp_graph/classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow-members.html b/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow-members.html index 39b7f4a0d2..72a2c9a85b 100644 --- a/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow-members.html +++ b/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow.html b/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow.html index 4565c32f04..4bf435980b 100644 --- a/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow.html +++ b/docs/cpp_graph/classoperations__research_1_1GenericMaxFlow.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow-members.html b/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow-members.html index 9485de3b41..0308cb3d33 100644 --- a/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow-members.html +++ b/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow.html b/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow.html index 739ccfa261..56ea25cdd6 100644 --- a/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow.html +++ b/docs/cpp_graph/classoperations__research_1_1GenericMinCostFlow.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver-members.html b/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver-members.html index 3bf6df02d1..f191af3a22 100644 --- a/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver-members.html +++ b/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver.html b/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver.html index 9ab9e69828..f67dd6afac 100644 --- a/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver.html +++ b/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator-members.html b/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator-members.html index 33c022d7f4..e2627936cc 100644 --- a/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator.html b/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator.html index 0fd5ab7180..d1792c16a4 100644 --- a/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator.html +++ b/docs/cpp_graph/classoperations__research_1_1HeldWolfeCrowderEvaluator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager-members.html b/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager-members.html index 0e8f320b36..bcf80a8715 100644 --- a/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager-members.html +++ b/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager.html b/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager.html index afc1c1188c..5fbe6d22f8 100644 --- a/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager.html +++ b/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment-members.html b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment-members.html index 564a6144aa..5f7e1987ca 100644 --- a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment-members.html +++ b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment.html b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment.html index b9bf1088d1..d3fef9d5c8 100644 --- a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment.html +++ b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator-members.html b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator-members.html index 2f5e82fe2f..dfd4312c0f 100644 --- a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator.html b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator.html index 06c4b36756..c3f3a7e73d 100644 --- a/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1LinearSumAssignment_1_1BipartiteLeftNodeIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MaxFlow-members.html b/docs/cpp_graph/classoperations__research_1_1MaxFlow-members.html index 73c99bd266..2fdbdbce99 100644 --- a/docs/cpp_graph/classoperations__research_1_1MaxFlow-members.html +++ b/docs/cpp_graph/classoperations__research_1_1MaxFlow-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MaxFlow.html b/docs/cpp_graph/classoperations__research_1_1MaxFlow.html index ab22ff2d53..1f73be7b84 100644 --- a/docs/cpp_graph/classoperations__research_1_1MaxFlow.html +++ b/docs/cpp_graph/classoperations__research_1_1MaxFlow.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass-members.html b/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass-members.html index 3cbab1ae8f..32adb47cea 100644 --- a/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass-members.html +++ b/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass.html b/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass.html index 663f2b6370..97db3f6b90 100644 --- a/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass.html +++ b/docs/cpp_graph/classoperations__research_1_1MaxFlowStatusClass.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MinCostFlow-members.html b/docs/cpp_graph/classoperations__research_1_1MinCostFlow-members.html index 61001cd0f8..88ac531ed9 100644 --- a/docs/cpp_graph/classoperations__research_1_1MinCostFlow-members.html +++ b/docs/cpp_graph/classoperations__research_1_1MinCostFlow-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MinCostFlow.html b/docs/cpp_graph/classoperations__research_1_1MinCostFlow.html index 2ac5a217f1..26adad3de2 100644 --- a/docs/cpp_graph/classoperations__research_1_1MinCostFlow.html +++ b/docs/cpp_graph/classoperations__research_1_1MinCostFlow.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase-members.html b/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase-members.html index 8ab2b25905..aaf40222a3 100644 --- a/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase-members.html +++ b/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase.html b/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase.html index 12fb9534aa..09078ad018 100644 --- a/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase.html +++ b/docs/cpp_graph/classoperations__research_1_1MinCostFlowBase.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead-members.html b/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead-members.html index 2cc3b05b2f..d766d97ff1 100644 --- a/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead-members.html +++ b/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead.html b/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead.html index ffa98dec82..871b16a358 100644 --- a/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead.html +++ b/docs/cpp_graph/classoperations__research_1_1PermutationIndexComparisonByArcHead.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush-members.html b/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush-members.html index 714513afae..f810c8908b 100644 --- a/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush-members.html +++ b/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush.html b/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush.html index 9d8ea6b6cf..581277b0c8 100644 --- a/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush.html +++ b/docs/cpp_graph/classoperations__research_1_1PriorityQueueWithRestrictedPush.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver-members.html b/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver-members.html index eff863c378..5a30c76374 100644 --- a/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver-members.html +++ b/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver.html b/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver.html index 754ead83b2..2bbb314819 100644 --- a/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver.html +++ b/docs/cpp_graph/classoperations__research_1_1PruningHamiltonianSolver.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1Set-members.html b/docs/cpp_graph/classoperations__research_1_1Set-members.html index 54522561ad..a584cc4fdb 100644 --- a/docs/cpp_graph/classoperations__research_1_1Set-members.html +++ b/docs/cpp_graph/classoperations__research_1_1Set-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1Set.html b/docs/cpp_graph/classoperations__research_1_1Set.html index 25940dab93..06d14198a6 100644 --- a/docs/cpp_graph/classoperations__research_1_1Set.html +++ b/docs/cpp_graph/classoperations__research_1_1Set.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SetRangeIterator-members.html b/docs/cpp_graph/classoperations__research_1_1SetRangeIterator-members.html index 3a6211a209..c513567590 100644 --- a/docs/cpp_graph/classoperations__research_1_1SetRangeIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1SetRangeIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SetRangeIterator.html b/docs/cpp_graph/classoperations__research_1_1SetRangeIterator.html index 7ed2264870..ebbe02e78b 100644 --- a/docs/cpp_graph/classoperations__research_1_1SetRangeIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1SetRangeIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality-members.html b/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality-members.html index 24fe889799..e22ba5f52e 100644 --- a/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality-members.html +++ b/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality.html b/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality.html index e1267b4ea2..c641f4b37b 100644 --- a/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality.html +++ b/docs/cpp_graph/classoperations__research_1_1SetRangeWithCardinality.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow-members.html b/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow-members.html index a31c2fc1c4..e0630015ed 100644 --- a/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow-members.html +++ b/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow.html b/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow.html index 9899f85582..0395502a29 100644 --- a/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow.html +++ b/docs/cpp_graph/classoperations__research_1_1SimpleMaxFlow.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow-members.html b/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow-members.html index 61e7fc8708..5ed17ee457 100644 --- a/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow-members.html +++ b/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow.html b/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow.html index ee884bd8ff..ab4ee5813c 100644 --- a/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow.html +++ b/docs/cpp_graph/classoperations__research_1_1SimpleMinCostFlow.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase-members.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase-members.html index f07980f458..5a460c5c71 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase-members.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase.html index 7ee7809808..58f18cc0af 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator-members.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator-members.html index ac194dc285..616d1feb0f 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator.html index 2e7d8ad0b6..cfd23b6f3b 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1ArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator-members.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator-members.html index c656a47490..528038c851 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator.html index 1dad25f1ec..dc19bf983d 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1NodeIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator-members.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator-members.html index 8e04b820ea..802f6118fe 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator.html b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator.html index c5dc1377ee..9000f17ff6 100644 --- a/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator.html +++ b/docs/cpp_graph/classoperations__research_1_1StarGraphBase_1_1OutgoingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1TailArrayManager-members.html b/docs/cpp_graph/classoperations__research_1_1TailArrayManager-members.html index faa0a294c6..e18d7627aa 100644 --- a/docs/cpp_graph/classoperations__research_1_1TailArrayManager-members.html +++ b/docs/cpp_graph/classoperations__research_1_1TailArrayManager-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1TailArrayManager.html b/docs/cpp_graph/classoperations__research_1_1TailArrayManager.html index 169a114a76..3c19a6ce10 100644 --- a/docs/cpp_graph/classoperations__research_1_1TailArrayManager.html +++ b/docs/cpp_graph/classoperations__research_1_1TailArrayManager.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator-members.html b/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator-members.html index 061f64c10f..9fca53c98b 100644 --- a/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator-members.html +++ b/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator.html b/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator.html index ca8b74dafe..ed10491fd8 100644 --- a/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator.html +++ b/docs/cpp_graph/classoperations__research_1_1VolgenantJonkerEvaluator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs-members.html b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs-members.html index 462b6660eb..0f11516590 100644 --- a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs-members.html +++ b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs.html b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs.html index 4eab89142e..d2c8aea97e 100644 --- a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs.html +++ b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4-members.html b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4-members.html index cd15cd0d40..fd141723f2 100644 --- a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4-members.html +++ b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4.html b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4.html index 8b9f8742ef..3055160b6f 100644 --- a/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4.html +++ b/docs/cpp_graph/classoperations__research_1_1or__internal_1_1GraphBuilderFromArcs_3_01GraphType_00_01true_01_4.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1BaseGraph-members.html b/docs/cpp_graph/classutil_1_1BaseGraph-members.html index dd796258cf..86637b1328 100644 --- a/docs/cpp_graph/classutil_1_1BaseGraph-members.html +++ b/docs/cpp_graph/classutil_1_1BaseGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1BaseGraph.html b/docs/cpp_graph/classutil_1_1BaseGraph.html index a7099a4b4a..630eb6308e 100644 --- a/docs/cpp_graph/classutil_1_1BaseGraph.html +++ b/docs/cpp_graph/classutil_1_1BaseGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper-members.html b/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper-members.html index 452f54193e..b89ebfb006 100644 --- a/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper-members.html +++ b/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper.html b/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper.html index 32494c6713..45df5c368a 100644 --- a/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper.html +++ b/docs/cpp_graph/classutil_1_1BeginEndReverseIteratorWrapper.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1BeginEndWrapper-members.html b/docs/cpp_graph/classutil_1_1BeginEndWrapper-members.html index 7df05a219d..210cd4678c 100644 --- a/docs/cpp_graph/classutil_1_1BeginEndWrapper-members.html +++ b/docs/cpp_graph/classutil_1_1BeginEndWrapper-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1BeginEndWrapper.html b/docs/cpp_graph/classutil_1_1BeginEndWrapper.html index 4b9349a779..9bdcd12145 100644 --- a/docs/cpp_graph/classutil_1_1BeginEndWrapper.html +++ b/docs/cpp_graph/classutil_1_1BeginEndWrapper.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph-members.html b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph-members.html index 8c851d723e..1e430da544 100644 --- a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph-members.html +++ b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph.html b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph.html index 95cbba4d33..50d9f658e1 100644 --- a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph.html +++ b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator-members.html b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator-members.html index 15cc4ffba6..bd82c9cc49 100644 --- a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator.html b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator.html index 207125a8c2..b29dfc5377 100644 --- a/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1CompleteGraph-members.html b/docs/cpp_graph/classutil_1_1CompleteGraph-members.html index f8c329c3d9..3ee9e5d583 100644 --- a/docs/cpp_graph/classutil_1_1CompleteGraph-members.html +++ b/docs/cpp_graph/classutil_1_1CompleteGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1CompleteGraph.html b/docs/cpp_graph/classutil_1_1CompleteGraph.html index 20eb4010b2..8f4a9d859f 100644 --- a/docs/cpp_graph/classutil_1_1CompleteGraph.html +++ b/docs/cpp_graph/classutil_1_1CompleteGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1IntegerRange-members.html b/docs/cpp_graph/classutil_1_1IntegerRange-members.html index ab630d9d20..e51a2e0be7 100644 --- a/docs/cpp_graph/classutil_1_1IntegerRange-members.html +++ b/docs/cpp_graph/classutil_1_1IntegerRange-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1IntegerRange.html b/docs/cpp_graph/classutil_1_1IntegerRange.html index d62227b21c..a8c41aa915 100644 --- a/docs/cpp_graph/classutil_1_1IntegerRange.html +++ b/docs/cpp_graph/classutil_1_1IntegerRange.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1IntegerRangeIterator-members.html b/docs/cpp_graph/classutil_1_1IntegerRangeIterator-members.html index 43521d1646..cee65e9cee 100644 --- a/docs/cpp_graph/classutil_1_1IntegerRangeIterator-members.html +++ b/docs/cpp_graph/classutil_1_1IntegerRangeIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1IntegerRangeIterator.html b/docs/cpp_graph/classutil_1_1IntegerRangeIterator.html index f1c8781d1f..6d5cd6b35d 100644 --- a/docs/cpp_graph/classutil_1_1IntegerRangeIterator.html +++ b/docs/cpp_graph/classutil_1_1IntegerRangeIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ListGraph-members.html b/docs/cpp_graph/classutil_1_1ListGraph-members.html index 8c9d336a6a..913ef8814d 100644 --- a/docs/cpp_graph/classutil_1_1ListGraph-members.html +++ b/docs/cpp_graph/classutil_1_1ListGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ListGraph.html b/docs/cpp_graph/classutil_1_1ListGraph.html index 3e7738ba18..79fd02e94a 100644 --- a/docs/cpp_graph/classutil_1_1ListGraph.html +++ b/docs/cpp_graph/classutil_1_1ListGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator-members.html index c6c8684e77..744a0bca0d 100644 --- a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator.html b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator.html index c460fbea75..946febfee1 100644 --- a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator-members.html b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator-members.html index a8176c97ca..1283dfe5f2 100644 --- a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator.html b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator.html index 87193f7e13..ed0a3ebbef 100644 --- a/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator.html +++ b/docs/cpp_graph/classutil_1_1ListGraph_1_1OutgoingHeadIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph-members.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph-members.html index 5b69c094ca..1c1dece9ec 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph.html index bfbd556591..33eec16d16 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator-members.html index 59545ce32b..4548ef31b7 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator.html index a7a220eb8e..b9dd59944c 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator-members.html index 0ebe8ea9b9..fd8c3605db 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator.html index 5d80d30522..bea458759e 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator-members.html index 7f56370bee..fdb9c91869 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator.html index 91efa2ba08..eeb239d07d 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator-members.html index 074a7c9a74..315a93d4e7 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator.html index f5d87a8001..5a5f668e42 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html index ae21c43611..21f31dc41e 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator.html index e2a2dc358e..11ab50f0f8 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph-members.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph-members.html index a56117aba1..c9e6cf1e31 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph.html index f5198485c6..3353c1ee02 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator-members.html index 10296fab14..14a8fd37b8 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator.html index a0911c9cb5..412fda34e2 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator-members.html index df2ba56ebd..1e483893c3 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator.html index 1a5d0ec261..e4840bbe2e 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator-members.html index d256a5e645..9ba6f678b4 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator.html index 4d38c49e25..19b31858ff 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html index 404f56a21b..377c051cfd 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator.html index d4baeee5b1..2d460cbcc0 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph-members.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph-members.html index 9987ddc8f4..a8f784743b 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph.html index 420f4cf833..ea662e27a2 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator-members.html index ec11471fd1..ef14a638c2 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator.html index 02e3a9160d..1ece2c2445 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator-members.html index b3ab713255..fb3c99df53 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator.html index 6a9bea33db..80d299c0ef 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator-members.html index 115b865ca4..835a4ce634 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator.html index e1cb12e2e8..a4142898cd 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html index e3cbce4f6d..d9a7df17e3 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator.html b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator.html index 8e304ee242..e48d0deb3c 100644 --- a/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1SVector-members.html b/docs/cpp_graph/classutil_1_1SVector-members.html index 91e0c28290..b73b365179 100644 --- a/docs/cpp_graph/classutil_1_1SVector-members.html +++ b/docs/cpp_graph/classutil_1_1SVector-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1SVector.html b/docs/cpp_graph/classutil_1_1SVector.html index b94812edc9..ed251c1271 100644 --- a/docs/cpp_graph/classutil_1_1SVector.html +++ b/docs/cpp_graph/classutil_1_1SVector.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1StaticGraph-members.html b/docs/cpp_graph/classutil_1_1StaticGraph-members.html index 20323a8bf7..10c7196df1 100644 --- a/docs/cpp_graph/classutil_1_1StaticGraph-members.html +++ b/docs/cpp_graph/classutil_1_1StaticGraph-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1StaticGraph.html b/docs/cpp_graph/classutil_1_1StaticGraph.html index 9323fa7188..e280e02806 100644 --- a/docs/cpp_graph/classutil_1_1StaticGraph.html +++ b/docs/cpp_graph/classutil_1_1StaticGraph.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator-members.html b/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator-members.html index 87172c20fb..e7b11b0c73 100644 --- a/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator-members.html +++ b/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator.html b/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator.html index 2e6d844bc1..9d60d9ce3e 100644 --- a/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator.html +++ b/docs/cpp_graph/classutil_1_1StaticGraph_1_1OutgoingArcIterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/cliques_8h.html b/docs/cpp_graph/cliques_8h.html index ffa79d17ae..6a7418f945 100644 --- a/docs/cpp_graph/cliques_8h.html +++ b/docs/cpp_graph/cliques_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/cliques_8h_source.html b/docs/cpp_graph/cliques_8h_source.html index 14b1486c3d..6c1e3061f7 100644 --- a/docs/cpp_graph/cliques_8h_source.html +++ b/docs/cpp_graph/cliques_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/connected__components_8h.html b/docs/cpp_graph/connected__components_8h.html index b4cd4d654e..d04cd3848c 100644 --- a/docs/cpp_graph/connected__components_8h.html +++ b/docs/cpp_graph/connected__components_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/connected__components_8h_source.html b/docs/cpp_graph/connected__components_8h_source.html index 13936c701c..defc090fac 100644 --- a/docs/cpp_graph/connected__components_8h_source.html +++ b/docs/cpp_graph/connected__components_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/connectivity_8h.html b/docs/cpp_graph/connectivity_8h.html index 68887ba5df..b037434121 100644 --- a/docs/cpp_graph/connectivity_8h.html +++ b/docs/cpp_graph/connectivity_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/connectivity_8h_source.html b/docs/cpp_graph/connectivity_8h_source.html index f2856cdb9b..7ef4b5afac 100644 --- a/docs/cpp_graph/connectivity_8h_source.html +++ b/docs/cpp_graph/connectivity_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/dir_725f3a5915051842f84e3ea508be2a62.html b/docs/cpp_graph/dir_725f3a5915051842f84e3ea508be2a62.html index e48f1c0b39..3da158e160 100644 --- a/docs/cpp_graph/dir_725f3a5915051842f84e3ea508be2a62.html +++ b/docs/cpp_graph/dir_725f3a5915051842f84e3ea508be2a62.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/dir_a7cc1eeded8f693d0da6c729bc88c45a.html b/docs/cpp_graph/dir_a7cc1eeded8f693d0da6c729bc88c45a.html index 1699859c6c..8a878e9d47 100644 --- a/docs/cpp_graph/dir_a7cc1eeded8f693d0da6c729bc88c45a.html +++ b/docs/cpp_graph/dir_a7cc1eeded8f693d0da6c729bc88c45a.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/ebert__graph_8h.html b/docs/cpp_graph/ebert__graph_8h.html index a23da4370a..458cbe153e 100644 --- a/docs/cpp_graph/ebert__graph_8h.html +++ b/docs/cpp_graph/ebert__graph_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/ebert__graph_8h_source.html b/docs/cpp_graph/ebert__graph_8h_source.html index e32fcbf41d..963032b52f 100644 --- a/docs/cpp_graph/ebert__graph_8h_source.html +++ b/docs/cpp_graph/ebert__graph_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/eulerian__path_8h.html b/docs/cpp_graph/eulerian__path_8h.html index 572387ce0e..61dff43ee2 100644 --- a/docs/cpp_graph/eulerian__path_8h.html +++ b/docs/cpp_graph/eulerian__path_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/eulerian__path_8h_source.html b/docs/cpp_graph/eulerian__path_8h_source.html index 5dd7b8d0b8..384ae813c2 100644 --- a/docs/cpp_graph/eulerian__path_8h_source.html +++ b/docs/cpp_graph/eulerian__path_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/files.html b/docs/cpp_graph/files.html index fb14d5b0e5..328f79c1f2 100644 --- a/docs/cpp_graph/files.html +++ b/docs/cpp_graph/files.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions.html b/docs/cpp_graph/functions.html index b857fdd68f..a508bcb509 100644 --- a/docs/cpp_graph/functions.html +++ b/docs/cpp_graph/functions.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_b.html b/docs/cpp_graph/functions_b.html index 610c0835ea..deedb2b6f7 100644 --- a/docs/cpp_graph/functions_b.html +++ b/docs/cpp_graph/functions_b.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_c.html b/docs/cpp_graph/functions_c.html index a270004094..9ec8d3f13a 100644 --- a/docs/cpp_graph/functions_c.html +++ b/docs/cpp_graph/functions_c.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_d.html b/docs/cpp_graph/functions_d.html index 0e752e565d..8f042510ab 100644 --- a/docs/cpp_graph/functions_d.html +++ b/docs/cpp_graph/functions_d.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_e.html b/docs/cpp_graph/functions_e.html index 854ca769ca..43d9965fc5 100644 --- a/docs/cpp_graph/functions_e.html +++ b/docs/cpp_graph/functions_e.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_enum.html b/docs/cpp_graph/functions_enum.html index 2e9f303776..0438d6f235 100644 --- a/docs/cpp_graph/functions_enum.html +++ b/docs/cpp_graph/functions_enum.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_eval.html b/docs/cpp_graph/functions_eval.html index db0ad396d7..f83efe5adc 100644 --- a/docs/cpp_graph/functions_eval.html +++ b/docs/cpp_graph/functions_eval.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_f.html b/docs/cpp_graph/functions_f.html index 9978c756a4..0e3addbdb7 100644 --- a/docs/cpp_graph/functions_f.html +++ b/docs/cpp_graph/functions_f.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func.html b/docs/cpp_graph/functions_func.html index 108865df84..689da84326 100644 --- a/docs/cpp_graph/functions_func.html +++ b/docs/cpp_graph/functions_func.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_b.html b/docs/cpp_graph/functions_func_b.html index 0133b7e9c7..bf0907121b 100644 --- a/docs/cpp_graph/functions_func_b.html +++ b/docs/cpp_graph/functions_func_b.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_c.html b/docs/cpp_graph/functions_func_c.html index bfc6f036f6..d3e22ffa8f 100644 --- a/docs/cpp_graph/functions_func_c.html +++ b/docs/cpp_graph/functions_func_c.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_d.html b/docs/cpp_graph/functions_func_d.html index ad907c5b7c..602a476ae3 100644 --- a/docs/cpp_graph/functions_func_d.html +++ b/docs/cpp_graph/functions_func_d.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_e.html b/docs/cpp_graph/functions_func_e.html index e8b072b2f4..79bed5caa6 100644 --- a/docs/cpp_graph/functions_func_e.html +++ b/docs/cpp_graph/functions_func_e.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_f.html b/docs/cpp_graph/functions_func_f.html index 66b54d2a54..6ee93d9fd7 100644 --- a/docs/cpp_graph/functions_func_f.html +++ b/docs/cpp_graph/functions_func_f.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_g.html b/docs/cpp_graph/functions_func_g.html index bd2039cf71..2fdc079540 100644 --- a/docs/cpp_graph/functions_func_g.html +++ b/docs/cpp_graph/functions_func_g.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_h.html b/docs/cpp_graph/functions_func_h.html index 6ed291b520..acb8b46cb4 100644 --- a/docs/cpp_graph/functions_func_h.html +++ b/docs/cpp_graph/functions_func_h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_i.html b/docs/cpp_graph/functions_func_i.html index 2c0af5754b..12791a3049 100644 --- a/docs/cpp_graph/functions_func_i.html +++ b/docs/cpp_graph/functions_func_i.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_l.html b/docs/cpp_graph/functions_func_l.html index 063c289a43..6692772bc6 100644 --- a/docs/cpp_graph/functions_func_l.html +++ b/docs/cpp_graph/functions_func_l.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_m.html b/docs/cpp_graph/functions_func_m.html index 9cd509d91e..c02160e91d 100644 --- a/docs/cpp_graph/functions_func_m.html +++ b/docs/cpp_graph/functions_func_m.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_n.html b/docs/cpp_graph/functions_func_n.html index dab9587cff..5c6c90815d 100644 --- a/docs/cpp_graph/functions_func_n.html +++ b/docs/cpp_graph/functions_func_n.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_o.html b/docs/cpp_graph/functions_func_o.html index 988be508a0..1f4a857408 100644 --- a/docs/cpp_graph/functions_func_o.html +++ b/docs/cpp_graph/functions_func_o.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_p.html b/docs/cpp_graph/functions_func_p.html index f8ce9aa696..51e69ccfcb 100644 --- a/docs/cpp_graph/functions_func_p.html +++ b/docs/cpp_graph/functions_func_p.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_r.html b/docs/cpp_graph/functions_func_r.html index 2bf14cb724..ef5f904ebf 100644 --- a/docs/cpp_graph/functions_func_r.html +++ b/docs/cpp_graph/functions_func_r.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_s.html b/docs/cpp_graph/functions_func_s.html index 8caf02afb7..768329f2f9 100644 --- a/docs/cpp_graph/functions_func_s.html +++ b/docs/cpp_graph/functions_func_s.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_t.html b/docs/cpp_graph/functions_func_t.html index 7f0a0306d5..67af0263f8 100644 --- a/docs/cpp_graph/functions_func_t.html +++ b/docs/cpp_graph/functions_func_t.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_u.html b/docs/cpp_graph/functions_func_u.html index e26d67415d..9be68cdbf6 100644 --- a/docs/cpp_graph/functions_func_u.html +++ b/docs/cpp_graph/functions_func_u.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_v.html b/docs/cpp_graph/functions_func_v.html index fc267a00ee..1988bf258d 100644 --- a/docs/cpp_graph/functions_func_v.html +++ b/docs/cpp_graph/functions_func_v.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_func_~.html b/docs/cpp_graph/functions_func_~.html index 674e7cf843..9a06167aa3 100644 --- a/docs/cpp_graph/functions_func_~.html +++ b/docs/cpp_graph/functions_func_~.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_g.html b/docs/cpp_graph/functions_g.html index b62f4e141a..e8b8bc0d64 100644 --- a/docs/cpp_graph/functions_g.html +++ b/docs/cpp_graph/functions_g.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_h.html b/docs/cpp_graph/functions_h.html index 8ad772939b..9972d304fd 100644 --- a/docs/cpp_graph/functions_h.html +++ b/docs/cpp_graph/functions_h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_i.html b/docs/cpp_graph/functions_i.html index 2c24c9d63d..e1d9362b38 100644 --- a/docs/cpp_graph/functions_i.html +++ b/docs/cpp_graph/functions_i.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_k.html b/docs/cpp_graph/functions_k.html index 82acfe8b44..fb03961d1b 100644 --- a/docs/cpp_graph/functions_k.html +++ b/docs/cpp_graph/functions_k.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_l.html b/docs/cpp_graph/functions_l.html index b2a0597120..9c4af95a93 100644 --- a/docs/cpp_graph/functions_l.html +++ b/docs/cpp_graph/functions_l.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_m.html b/docs/cpp_graph/functions_m.html index 6f2245dc66..e677fa3d0a 100644 --- a/docs/cpp_graph/functions_m.html +++ b/docs/cpp_graph/functions_m.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_n.html b/docs/cpp_graph/functions_n.html index 5e0ee76d89..13537a7a73 100644 --- a/docs/cpp_graph/functions_n.html +++ b/docs/cpp_graph/functions_n.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_o.html b/docs/cpp_graph/functions_o.html index 81827c4c40..1a9ba00eef 100644 --- a/docs/cpp_graph/functions_o.html +++ b/docs/cpp_graph/functions_o.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_p.html b/docs/cpp_graph/functions_p.html index ec0d3161a9..cdb2318e81 100644 --- a/docs/cpp_graph/functions_p.html +++ b/docs/cpp_graph/functions_p.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_r.html b/docs/cpp_graph/functions_r.html index 00d49624a1..b0be230c1d 100644 --- a/docs/cpp_graph/functions_r.html +++ b/docs/cpp_graph/functions_r.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_rela.html b/docs/cpp_graph/functions_rela.html index bcdb9ecf81..83a6332be3 100644 --- a/docs/cpp_graph/functions_rela.html +++ b/docs/cpp_graph/functions_rela.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_s.html b/docs/cpp_graph/functions_s.html index e280cf959c..2de2fcb101 100644 --- a/docs/cpp_graph/functions_s.html +++ b/docs/cpp_graph/functions_s.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_t.html b/docs/cpp_graph/functions_t.html index 0fdc5e1ec3..1720f2163e 100644 --- a/docs/cpp_graph/functions_t.html +++ b/docs/cpp_graph/functions_t.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_type.html b/docs/cpp_graph/functions_type.html index 63b785022a..fa7f2f16f8 100644 --- a/docs/cpp_graph/functions_type.html +++ b/docs/cpp_graph/functions_type.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_u.html b/docs/cpp_graph/functions_u.html index d6e4d499cc..9aa6f48093 100644 --- a/docs/cpp_graph/functions_u.html +++ b/docs/cpp_graph/functions_u.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_v.html b/docs/cpp_graph/functions_v.html index 6fcd3fa6e6..2c221135e5 100644 --- a/docs/cpp_graph/functions_v.html +++ b/docs/cpp_graph/functions_v.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_vars.html b/docs/cpp_graph/functions_vars.html index fb6a530f21..2ef71d1fc9 100644 --- a/docs/cpp_graph/functions_vars.html +++ b/docs/cpp_graph/functions_vars.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_z.html b/docs/cpp_graph/functions_z.html index f61c70b62a..d5d179fdc3 100644 --- a/docs/cpp_graph/functions_z.html +++ b/docs/cpp_graph/functions_z.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/functions_~.html b/docs/cpp_graph/functions_~.html index 7210491937..14351b3769 100644 --- a/docs/cpp_graph/functions_~.html +++ b/docs/cpp_graph/functions_~.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/globals.html b/docs/cpp_graph/globals.html index 2edc2efbd7..88dbd024bd 100644 --- a/docs/cpp_graph/globals.html +++ b/docs/cpp_graph/globals.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/globals_defs.html b/docs/cpp_graph/globals_defs.html index 978be1188d..01a447ba39 100644 --- a/docs/cpp_graph/globals_defs.html +++ b/docs/cpp_graph/globals_defs.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/globals_func.html b/docs/cpp_graph/globals_func.html index 962a154a89..f8a71a15b4 100644 --- a/docs/cpp_graph/globals_func.html +++ b/docs/cpp_graph/globals_func.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/graph_8h.html b/docs/cpp_graph/graph_8h.html index 92759d13fb..8ac9ddc6da 100644 --- a/docs/cpp_graph/graph_8h.html +++ b/docs/cpp_graph/graph_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/graph_8h_source.html b/docs/cpp_graph/graph_8h_source.html index 18695c67e7..75ccb79680 100644 --- a/docs/cpp_graph/graph_8h_source.html +++ b/docs/cpp_graph/graph_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/graph_legend.html b/docs/cpp_graph/graph_legend.html index a4af509fe7..92c6d0b6ca 100644 --- a/docs/cpp_graph/graph_legend.html +++ b/docs/cpp_graph/graph_legend.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/graphs_8h.html b/docs/cpp_graph/graphs_8h.html index 4a432e5b8d..c87ab39eee 100644 --- a/docs/cpp_graph/graphs_8h.html +++ b/docs/cpp_graph/graphs_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/graphs_8h_source.html b/docs/cpp_graph/graphs_8h_source.html index c2bfac5922..5d9708e5ca 100644 --- a/docs/cpp_graph/graphs_8h_source.html +++ b/docs/cpp_graph/graphs_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/hamiltonian__path_8h.html b/docs/cpp_graph/hamiltonian__path_8h.html index 8d1c822170..6378b8ec3e 100644 --- a/docs/cpp_graph/hamiltonian__path_8h.html +++ b/docs/cpp_graph/hamiltonian__path_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/hamiltonian__path_8h_source.html b/docs/cpp_graph/hamiltonian__path_8h_source.html index 7d58c86ee2..4b5f577021 100644 --- a/docs/cpp_graph/hamiltonian__path_8h_source.html +++ b/docs/cpp_graph/hamiltonian__path_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/hierarchy.html b/docs/cpp_graph/hierarchy.html index 174d51753b..6ebbd3c33e 100644 --- a/docs/cpp_graph/hierarchy.html +++ b/docs/cpp_graph/hierarchy.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/index.html b/docs/cpp_graph/index.html index 55aee797a4..aefad32dff 100644 --- a/docs/cpp_graph/index.html +++ b/docs/cpp_graph/index.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/inherits.html b/docs/cpp_graph/inherits.html index 5e58a000cf..6e4ccb1291 100644 --- a/docs/cpp_graph/inherits.html +++ b/docs/cpp_graph/inherits.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/io_8h.html b/docs/cpp_graph/io_8h.html index 939c3f7404..d67c2260ed 100644 --- a/docs/cpp_graph/io_8h.html +++ b/docs/cpp_graph/io_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/io_8h_source.html b/docs/cpp_graph/io_8h_source.html index b0cc75b461..7d1b9d5f66 100644 --- a/docs/cpp_graph/io_8h_source.html +++ b/docs/cpp_graph/io_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/iterators_8h.html b/docs/cpp_graph/iterators_8h.html index 77c8b19827..81334e1bf5 100644 --- a/docs/cpp_graph/iterators_8h.html +++ b/docs/cpp_graph/iterators_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/iterators_8h_source.html b/docs/cpp_graph/iterators_8h_source.html index f2dca4f63d..e4af4e5855 100644 --- a/docs/cpp_graph/iterators_8h_source.html +++ b/docs/cpp_graph/iterators_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/linear__assignment_8h.html b/docs/cpp_graph/linear__assignment_8h.html index 56b92fd921..d2cd3841ec 100644 --- a/docs/cpp_graph/linear__assignment_8h.html +++ b/docs/cpp_graph/linear__assignment_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/linear__assignment_8h_source.html b/docs/cpp_graph/linear__assignment_8h_source.html index 6d84049da1..548ce27bfc 100644 --- a/docs/cpp_graph/linear__assignment_8h_source.html +++ b/docs/cpp_graph/linear__assignment_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/max__flow_8h.html b/docs/cpp_graph/max__flow_8h.html index 575d69e4d8..8e07dc4738 100644 --- a/docs/cpp_graph/max__flow_8h.html +++ b/docs/cpp_graph/max__flow_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/max__flow_8h_source.html b/docs/cpp_graph/max__flow_8h_source.html index 43758893c7..fd5cc06726 100644 --- a/docs/cpp_graph/max__flow_8h_source.html +++ b/docs/cpp_graph/max__flow_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/min__cost__flow_8h.html b/docs/cpp_graph/min__cost__flow_8h.html index 518a8cec42..8e1ad88a0b 100644 --- a/docs/cpp_graph/min__cost__flow_8h.html +++ b/docs/cpp_graph/min__cost__flow_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/min__cost__flow_8h_source.html b/docs/cpp_graph/min__cost__flow_8h_source.html index d89fa68577..2fc6df19f1 100644 --- a/docs/cpp_graph/min__cost__flow_8h_source.html +++ b/docs/cpp_graph/min__cost__flow_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/minimum__spanning__tree_8h.html b/docs/cpp_graph/minimum__spanning__tree_8h.html index 56519a1d6f..e02a15aafa 100644 --- a/docs/cpp_graph/minimum__spanning__tree_8h.html +++ b/docs/cpp_graph/minimum__spanning__tree_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/minimum__spanning__tree_8h_source.html b/docs/cpp_graph/minimum__spanning__tree_8h_source.html index 0c1cea6472..fb2711a722 100644 --- a/docs/cpp_graph/minimum__spanning__tree_8h_source.html +++ b/docs/cpp_graph/minimum__spanning__tree_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespaceinternal.html b/docs/cpp_graph/namespaceinternal.html index 958f03a110..658c807b08 100644 --- a/docs/cpp_graph/namespaceinternal.html +++ b/docs/cpp_graph/namespaceinternal.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespacemembers.html b/docs/cpp_graph/namespacemembers.html index 3c61303957..20a46a85f1 100644 --- a/docs/cpp_graph/namespacemembers.html +++ b/docs/cpp_graph/namespacemembers.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespacemembers_enum.html b/docs/cpp_graph/namespacemembers_enum.html index b573ea56f5..eb0579bc1c 100644 --- a/docs/cpp_graph/namespacemembers_enum.html +++ b/docs/cpp_graph/namespacemembers_enum.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespacemembers_eval.html b/docs/cpp_graph/namespacemembers_eval.html index 270278f45f..749aa01565 100644 --- a/docs/cpp_graph/namespacemembers_eval.html +++ b/docs/cpp_graph/namespacemembers_eval.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespacemembers_func.html b/docs/cpp_graph/namespacemembers_func.html index 0adbc56755..d6591bec0c 100644 --- a/docs/cpp_graph/namespacemembers_func.html +++ b/docs/cpp_graph/namespacemembers_func.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespacemembers_type.html b/docs/cpp_graph/namespacemembers_type.html index 3e9eec7679..b24732e05d 100644 --- a/docs/cpp_graph/namespacemembers_type.html +++ b/docs/cpp_graph/namespacemembers_type.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespaceoperations__research.html b/docs/cpp_graph/namespaceoperations__research.html index de3b2e4c21..a75b844d7b 100644 --- a/docs/cpp_graph/namespaceoperations__research.html +++ b/docs/cpp_graph/namespaceoperations__research.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespaceoperations__research_1_1or__internal.html b/docs/cpp_graph/namespaceoperations__research_1_1or__internal.html index 64596194af..ef4ce28a25 100644 --- a/docs/cpp_graph/namespaceoperations__research_1_1or__internal.html +++ b/docs/cpp_graph/namespaceoperations__research_1_1or__internal.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespaces.html b/docs/cpp_graph/namespaces.html index 7035f2f84d..6399331c58 100644 --- a/docs/cpp_graph/namespaces.html +++ b/docs/cpp_graph/namespaces.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/namespaceutil.html b/docs/cpp_graph/namespaceutil.html index 354a4fe374..4fff5b9034 100644 --- a/docs/cpp_graph/namespaceutil.html +++ b/docs/cpp_graph/namespaceutil.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/one__tree__lower__bound_8h.html b/docs/cpp_graph/one__tree__lower__bound_8h.html index 74836b5c57..e6d1a214df 100644 --- a/docs/cpp_graph/one__tree__lower__bound_8h.html +++ b/docs/cpp_graph/one__tree__lower__bound_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/one__tree__lower__bound_8h_source.html b/docs/cpp_graph/one__tree__lower__bound_8h_source.html index ae85cdd793..cd4762e9a2 100644 --- a/docs/cpp_graph/one__tree__lower__bound_8h_source.html +++ b/docs/cpp_graph/one__tree__lower__bound_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/shortestpaths_8h.html b/docs/cpp_graph/shortestpaths_8h.html index 1a2cb05bb2..22a7c74325 100644 --- a/docs/cpp_graph/shortestpaths_8h.html +++ b/docs/cpp_graph/shortestpaths_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/shortestpaths_8h_source.html b/docs/cpp_graph/shortestpaths_8h_source.html index d07814ef61..5638eee508 100644 --- a/docs/cpp_graph/shortestpaths_8h_source.html +++ b/docs/cpp_graph/shortestpaths_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/strongly__connected__components_8h.html b/docs/cpp_graph/strongly__connected__components_8h.html index 1b851fec4e..9b7e64d5c3 100644 --- a/docs/cpp_graph/strongly__connected__components_8h.html +++ b/docs/cpp_graph/strongly__connected__components_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/strongly__connected__components_8h_source.html b/docs/cpp_graph/strongly__connected__components_8h_source.html index 9e54580afe..089cef5889 100644 --- a/docs/cpp_graph/strongly__connected__components_8h_source.html +++ b/docs/cpp_graph/strongly__connected__components_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structSccCounterOutput-members.html b/docs/cpp_graph/structSccCounterOutput-members.html index b7e5f5ff69..ce97a8e290 100644 --- a/docs/cpp_graph/structSccCounterOutput-members.html +++ b/docs/cpp_graph/structSccCounterOutput-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structSccCounterOutput.html b/docs/cpp_graph/structSccCounterOutput.html index ad5e8298dd..a46fabf55d 100644 --- a/docs/cpp_graph/structSccCounterOutput.html +++ b/docs/cpp_graph/structSccCounterOutput.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper-members.html b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper-members.html index 8d13a0bbb6..585dfe7722 100644 --- a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper-members.html +++ b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper.html b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper.html index 2b443dc468..bac08a7fcf 100644 --- a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper.html +++ b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer-members.html b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer-members.html index dce9ec3819..bf9d981586 100644 --- a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer-members.html +++ b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer.html b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer.html index 85249c49dd..628b473268 100644 --- a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer.html +++ b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__if709ff45ae30ec82cc2c06c401b5d6cb4.html b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__if709ff45ae30ec82cc2c06c401b5d6cb4.html index 1c42bf7b44..30a273c111 100644 --- a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__if709ff45ae30ec82cc2c06c401b5d6cb4.html +++ b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__if709ff45ae30ec82cc2c06c401b5d6cb4.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__ifbee15d745f9d0df0e7a41bf877b57cbe.html b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__ifbee15d745f9d0df0e7a41bf877b57cbe.html index b7259dfcef..8236d74af9 100644 --- a/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__ifbee15d745f9d0df0e7a41bf877b57cbe.html +++ b/docs/cpp_graph/structinternal_1_1ConnectedComponentsTypeHelper_1_1SelectContainer_3_01U_00_01absl_1_1enable__ifbee15d745f9d0df0e7a41bf877b57cbe.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1Graphs-members.html b/docs/cpp_graph/structoperations__research_1_1Graphs-members.html index 11987b16e9..2b8b065e9e 100644 --- a/docs/cpp_graph/structoperations__research_1_1Graphs-members.html +++ b/docs/cpp_graph/structoperations__research_1_1Graphs-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1Graphs.html b/docs/cpp_graph/structoperations__research_1_1Graphs.html index eba990ecc9..ee1f3f0207 100644 --- a/docs/cpp_graph/structoperations__research_1_1Graphs.html +++ b/docs/cpp_graph/structoperations__research_1_1Graphs.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4-members.html b/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4-members.html index 677a863e01..2fc362144a 100644 --- a/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4-members.html +++ b/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4.html b/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4.html index 5375fe16bd..b77ca57f28 100644 --- a/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4.html +++ b/docs/cpp_graph/structoperations__research_1_1Graphs_3_01operations__research_1_1StarGraph_01_4.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters-members.html b/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters-members.html index c97bfa964d..eec3805571 100644 --- a/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters-members.html +++ b/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters.html b/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters.html index f11650baba..e72f2720f0 100644 --- a/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters.html +++ b/docs/cpp_graph/structoperations__research_1_1TravelingSalesmanLowerBoundParameters.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1graph__traits-members.html b/docs/cpp_graph/structoperations__research_1_1graph__traits-members.html index d2a4af5a9e..71ed8e2cd7 100644 --- a/docs/cpp_graph/structoperations__research_1_1graph__traits-members.html +++ b/docs/cpp_graph/structoperations__research_1_1graph__traits-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1graph__traits.html b/docs/cpp_graph/structoperations__research_1_1graph__traits.html index da21173877..8515ebe396 100644 --- a/docs/cpp_graph/structoperations__research_1_1graph__traits.html +++ b/docs/cpp_graph/structoperations__research_1_1graph__traits.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html index 50975c3d0d..63ff97d376 100644 --- a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html +++ b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html index df0ce519be..e35d1f151b 100644 --- a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html +++ b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardEbertGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html index 2644bce876..607d78a3f2 100644 --- a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html +++ b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html index 2addee5038..794291cb21 100644 --- a/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html +++ b/docs/cpp_graph/structoperations__research_1_1graph__traits_3_01ForwardStaticGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_01_4.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder-members.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder-members.html index 666eb33d61..623a864432 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder-members.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder.html index f0968719c2..c3e8380df8 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4-members.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4-members.html index 9f941132c2..22c5be4b3d 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4-members.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4.html index 07fb67e1a6..4e0d24f3a1 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayBuilder_3_01GraphType_00_01false_01_4.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser-members.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser-members.html index d837b03a79..2437af7ae0 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser-members.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser.html index 49798ce954..31055629be 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4-members.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4-members.html index ea0e5a8ac0..9597126100 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4-members.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4.html b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4.html index 8fee348141..6f94855f43 100644 --- a/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4.html +++ b/docs/cpp_graph/structoperations__research_1_1or__internal_1_1TailArrayReleaser_3_01GraphType_00_01false_01_4.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structutil_1_1MutableVectorIteration-members.html b/docs/cpp_graph/structutil_1_1MutableVectorIteration-members.html index 05ad970e19..5c564cfa27 100644 --- a/docs/cpp_graph/structutil_1_1MutableVectorIteration-members.html +++ b/docs/cpp_graph/structutil_1_1MutableVectorIteration-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structutil_1_1MutableVectorIteration.html b/docs/cpp_graph/structutil_1_1MutableVectorIteration.html index 10d2e378cc..1d9d5e515a 100644 --- a/docs/cpp_graph/structutil_1_1MutableVectorIteration.html +++ b/docs/cpp_graph/structutil_1_1MutableVectorIteration.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator-members.html b/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator-members.html index 1c693dd723..05cc1a331e 100644 --- a/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator-members.html +++ b/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator.html b/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator.html index 2ca50ea734..0d300fa262 100644 --- a/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator.html +++ b/docs/cpp_graph/structutil_1_1MutableVectorIteration_1_1Iterator.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/annotated.html b/docs/cpp_linear/annotated.html index f35235cf37..9783717c74 100644 --- a/docs/cpp_linear/annotated.html +++ b/docs/cpp_linear/annotated.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classes.html b/docs/cpp_linear/classes.html index df721d2df9..af22a5f459 100644 --- a/docs/cpp_linear/classes.html +++ b/docs/cpp_linear/classes.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1LinearExpr-members.html b/docs/cpp_linear/classoperations__research_1_1LinearExpr-members.html index 3e53088cad..32b50468e9 100644 --- a/docs/cpp_linear/classoperations__research_1_1LinearExpr-members.html +++ b/docs/cpp_linear/classoperations__research_1_1LinearExpr-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1LinearExpr.html b/docs/cpp_linear/classoperations__research_1_1LinearExpr.html index 012efeaab6..bde333aa32 100644 --- a/docs/cpp_linear/classoperations__research_1_1LinearExpr.html +++ b/docs/cpp_linear/classoperations__research_1_1LinearExpr.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1LinearRange-members.html b/docs/cpp_linear/classoperations__research_1_1LinearRange-members.html index 3962eacb67..4d695f8cd1 100644 --- a/docs/cpp_linear/classoperations__research_1_1LinearRange-members.html +++ b/docs/cpp_linear/classoperations__research_1_1LinearRange-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1LinearRange.html b/docs/cpp_linear/classoperations__research_1_1LinearRange.html index f313c6334f..d98ac868c7 100644 --- a/docs/cpp_linear/classoperations__research_1_1LinearRange.html +++ b/docs/cpp_linear/classoperations__research_1_1LinearRange.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPConstraint-members.html b/docs/cpp_linear/classoperations__research_1_1MPConstraint-members.html index 58817b06da..34a88cbc4d 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPConstraint-members.html +++ b/docs/cpp_linear/classoperations__research_1_1MPConstraint-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPConstraint.html b/docs/cpp_linear/classoperations__research_1_1MPConstraint.html index c549c0bde4..2053c889d4 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPConstraint.html +++ b/docs/cpp_linear/classoperations__research_1_1MPConstraint.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPObjective-members.html b/docs/cpp_linear/classoperations__research_1_1MPObjective-members.html index 64a69d8593..533ee2d3ee 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPObjective-members.html +++ b/docs/cpp_linear/classoperations__research_1_1MPObjective-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPObjective.html b/docs/cpp_linear/classoperations__research_1_1MPObjective.html index f0a1d293d4..86b9dda53c 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPObjective.html +++ b/docs/cpp_linear/classoperations__research_1_1MPObjective.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPSolver-members.html b/docs/cpp_linear/classoperations__research_1_1MPSolver-members.html index f5d335b757..79a97aa380 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPSolver-members.html +++ b/docs/cpp_linear/classoperations__research_1_1MPSolver-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPSolver.html b/docs/cpp_linear/classoperations__research_1_1MPSolver.html index 6dd86c0167..a521d7085d 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPSolver.html +++ b/docs/cpp_linear/classoperations__research_1_1MPSolver.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPSolverInterface-members.html b/docs/cpp_linear/classoperations__research_1_1MPSolverInterface-members.html index 579ee7544b..7edd68fc17 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPSolverInterface-members.html +++ b/docs/cpp_linear/classoperations__research_1_1MPSolverInterface-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPSolverInterface.html b/docs/cpp_linear/classoperations__research_1_1MPSolverInterface.html index f0a26c23a2..957d6db487 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPSolverInterface.html +++ b/docs/cpp_linear/classoperations__research_1_1MPSolverInterface.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPSolverParameters-members.html b/docs/cpp_linear/classoperations__research_1_1MPSolverParameters-members.html index cfb2ff5f3e..e5fb5135ca 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPSolverParameters-members.html +++ b/docs/cpp_linear/classoperations__research_1_1MPSolverParameters-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPSolverParameters.html b/docs/cpp_linear/classoperations__research_1_1MPSolverParameters.html index db0c049565..96e9bd9265 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPSolverParameters.html +++ b/docs/cpp_linear/classoperations__research_1_1MPSolverParameters.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPVariable-members.html b/docs/cpp_linear/classoperations__research_1_1MPVariable-members.html index a715622464..f92e91085d 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPVariable-members.html +++ b/docs/cpp_linear/classoperations__research_1_1MPVariable-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/classoperations__research_1_1MPVariable.html b/docs/cpp_linear/classoperations__research_1_1MPVariable.html index 70b1fb6a49..d9359071b5 100644 --- a/docs/cpp_linear/classoperations__research_1_1MPVariable.html +++ b/docs/cpp_linear/classoperations__research_1_1MPVariable.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/dir_4d3a5a688e4550f3d7725aaa5ab9c27b.html b/docs/cpp_linear/dir_4d3a5a688e4550f3d7725aaa5ab9c27b.html index 0c95ad6f6c..09755650bd 100644 --- a/docs/cpp_linear/dir_4d3a5a688e4550f3d7725aaa5ab9c27b.html +++ b/docs/cpp_linear/dir_4d3a5a688e4550f3d7725aaa5ab9c27b.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/dir_a7cc1eeded8f693d0da6c729bc88c45a.html b/docs/cpp_linear/dir_a7cc1eeded8f693d0da6c729bc88c45a.html index 15e7f2f77b..8822655b1a 100644 --- a/docs/cpp_linear/dir_a7cc1eeded8f693d0da6c729bc88c45a.html +++ b/docs/cpp_linear/dir_a7cc1eeded8f693d0da6c729bc88c45a.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/files.html b/docs/cpp_linear/files.html index b5a271bc23..818f7c4cd5 100644 --- a/docs/cpp_linear/files.html +++ b/docs/cpp_linear/files.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions.html b/docs/cpp_linear/functions.html index 231bf28a1d..24f831e590 100644 --- a/docs/cpp_linear/functions.html +++ b/docs/cpp_linear/functions.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_b.html b/docs/cpp_linear/functions_b.html index 1535240464..3d3accb1c6 100644 --- a/docs/cpp_linear/functions_b.html +++ b/docs/cpp_linear/functions_b.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_c.html b/docs/cpp_linear/functions_c.html index 216c77ef82..6accf28c95 100644 --- a/docs/cpp_linear/functions_c.html +++ b/docs/cpp_linear/functions_c.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_d.html b/docs/cpp_linear/functions_d.html index 301f12dbbc..f08d6e59d2 100644 --- a/docs/cpp_linear/functions_d.html +++ b/docs/cpp_linear/functions_d.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_e.html b/docs/cpp_linear/functions_e.html index 8d6b3fbcc5..bc9fc63727 100644 --- a/docs/cpp_linear/functions_e.html +++ b/docs/cpp_linear/functions_e.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_enum.html b/docs/cpp_linear/functions_enum.html index 8a9938b04d..21b88cf15c 100644 --- a/docs/cpp_linear/functions_enum.html +++ b/docs/cpp_linear/functions_enum.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_eval.html b/docs/cpp_linear/functions_eval.html index 5568b6825e..a6ad9d6e40 100644 --- a/docs/cpp_linear/functions_eval.html +++ b/docs/cpp_linear/functions_eval.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_f.html b/docs/cpp_linear/functions_f.html index d2160a0d2b..acf87806c2 100644 --- a/docs/cpp_linear/functions_f.html +++ b/docs/cpp_linear/functions_f.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func.html b/docs/cpp_linear/functions_func.html index 2dc53dd598..53d3287e4e 100644 --- a/docs/cpp_linear/functions_func.html +++ b/docs/cpp_linear/functions_func.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_b.html b/docs/cpp_linear/functions_func_b.html index b124b02c51..721d104144 100644 --- a/docs/cpp_linear/functions_func_b.html +++ b/docs/cpp_linear/functions_func_b.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_c.html b/docs/cpp_linear/functions_func_c.html index 9e9a5bf046..9417ceb144 100644 --- a/docs/cpp_linear/functions_func_c.html +++ b/docs/cpp_linear/functions_func_c.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_d.html b/docs/cpp_linear/functions_func_d.html index 0cd11f36fb..104f75317b 100644 --- a/docs/cpp_linear/functions_func_d.html +++ b/docs/cpp_linear/functions_func_d.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_e.html b/docs/cpp_linear/functions_func_e.html index d3bc87a2b7..e4e7e96564 100644 --- a/docs/cpp_linear/functions_func_e.html +++ b/docs/cpp_linear/functions_func_e.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_f.html b/docs/cpp_linear/functions_func_f.html index c7b88b4394..5ca6f329e7 100644 --- a/docs/cpp_linear/functions_func_f.html +++ b/docs/cpp_linear/functions_func_f.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_g.html b/docs/cpp_linear/functions_func_g.html index cae4a833f8..649c4978d6 100644 --- a/docs/cpp_linear/functions_func_g.html +++ b/docs/cpp_linear/functions_func_g.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_i.html b/docs/cpp_linear/functions_func_i.html index 967a420327..4f39565104 100644 --- a/docs/cpp_linear/functions_func_i.html +++ b/docs/cpp_linear/functions_func_i.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_l.html b/docs/cpp_linear/functions_func_l.html index 9fa2baf932..8334b21d61 100644 --- a/docs/cpp_linear/functions_func_l.html +++ b/docs/cpp_linear/functions_func_l.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_m.html b/docs/cpp_linear/functions_func_m.html index 9f469d3735..a8c323f76d 100644 --- a/docs/cpp_linear/functions_func_m.html +++ b/docs/cpp_linear/functions_func_m.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_n.html b/docs/cpp_linear/functions_func_n.html index 75c558ebd6..2d69d87942 100644 --- a/docs/cpp_linear/functions_func_n.html +++ b/docs/cpp_linear/functions_func_n.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_o.html b/docs/cpp_linear/functions_func_o.html index 4b444609be..6128352b02 100644 --- a/docs/cpp_linear/functions_func_o.html +++ b/docs/cpp_linear/functions_func_o.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_p.html b/docs/cpp_linear/functions_func_p.html index 8fc1b5fa77..b66c0e9565 100644 --- a/docs/cpp_linear/functions_func_p.html +++ b/docs/cpp_linear/functions_func_p.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_q.html b/docs/cpp_linear/functions_func_q.html index d8deeb3f0c..d5ec14a15e 100644 --- a/docs/cpp_linear/functions_func_q.html +++ b/docs/cpp_linear/functions_func_q.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_r.html b/docs/cpp_linear/functions_func_r.html index 4bc0b35c1e..d1ebd4b032 100644 --- a/docs/cpp_linear/functions_func_r.html +++ b/docs/cpp_linear/functions_func_r.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_s.html b/docs/cpp_linear/functions_func_s.html index aa160f92c8..d66669ba5d 100644 --- a/docs/cpp_linear/functions_func_s.html +++ b/docs/cpp_linear/functions_func_s.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_t.html b/docs/cpp_linear/functions_func_t.html index 971a5ba17f..772e2256a2 100644 --- a/docs/cpp_linear/functions_func_t.html +++ b/docs/cpp_linear/functions_func_t.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_u.html b/docs/cpp_linear/functions_func_u.html index e7720f7b6e..6e88c47dfc 100644 --- a/docs/cpp_linear/functions_func_u.html +++ b/docs/cpp_linear/functions_func_u.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_v.html b/docs/cpp_linear/functions_func_v.html index 5b62b618e6..8014fa0899 100644 --- a/docs/cpp_linear/functions_func_v.html +++ b/docs/cpp_linear/functions_func_v.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_w.html b/docs/cpp_linear/functions_func_w.html index 9736dac9a0..d233ef8f71 100644 --- a/docs/cpp_linear/functions_func_w.html +++ b/docs/cpp_linear/functions_func_w.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_func_~.html b/docs/cpp_linear/functions_func_~.html index 17cb75ef1f..b8974d4109 100644 --- a/docs/cpp_linear/functions_func_~.html +++ b/docs/cpp_linear/functions_func_~.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_g.html b/docs/cpp_linear/functions_g.html index 2bab815f87..a4c8ba027e 100644 --- a/docs/cpp_linear/functions_g.html +++ b/docs/cpp_linear/functions_g.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_i.html b/docs/cpp_linear/functions_i.html index a16df2499e..d76a30e74c 100644 --- a/docs/cpp_linear/functions_i.html +++ b/docs/cpp_linear/functions_i.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_k.html b/docs/cpp_linear/functions_k.html index 086af11bab..6e932c177c 100644 --- a/docs/cpp_linear/functions_k.html +++ b/docs/cpp_linear/functions_k.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_l.html b/docs/cpp_linear/functions_l.html index 677ba0782c..cd56870343 100644 --- a/docs/cpp_linear/functions_l.html +++ b/docs/cpp_linear/functions_l.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_m.html b/docs/cpp_linear/functions_m.html index cefc393119..d29c516f8e 100644 --- a/docs/cpp_linear/functions_m.html +++ b/docs/cpp_linear/functions_m.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_n.html b/docs/cpp_linear/functions_n.html index c7155e47ea..843eba83f2 100644 --- a/docs/cpp_linear/functions_n.html +++ b/docs/cpp_linear/functions_n.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_o.html b/docs/cpp_linear/functions_o.html index 5a345ec044..7d31cb4684 100644 --- a/docs/cpp_linear/functions_o.html +++ b/docs/cpp_linear/functions_o.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_p.html b/docs/cpp_linear/functions_p.html index b0c08be6a9..d7d1706a3b 100644 --- a/docs/cpp_linear/functions_p.html +++ b/docs/cpp_linear/functions_p.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_q.html b/docs/cpp_linear/functions_q.html index 72466f5619..0aa5bd23db 100644 --- a/docs/cpp_linear/functions_q.html +++ b/docs/cpp_linear/functions_q.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_r.html b/docs/cpp_linear/functions_r.html index 597934c20d..46197ba0de 100644 --- a/docs/cpp_linear/functions_r.html +++ b/docs/cpp_linear/functions_r.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_rela.html b/docs/cpp_linear/functions_rela.html index 785284abb5..3ed9bfb8b9 100644 --- a/docs/cpp_linear/functions_rela.html +++ b/docs/cpp_linear/functions_rela.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_s.html b/docs/cpp_linear/functions_s.html index ef3cf95e7d..4c365ba333 100644 --- a/docs/cpp_linear/functions_s.html +++ b/docs/cpp_linear/functions_s.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_t.html b/docs/cpp_linear/functions_t.html index b0186f6b89..bb335a52f8 100644 --- a/docs/cpp_linear/functions_t.html +++ b/docs/cpp_linear/functions_t.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_u.html b/docs/cpp_linear/functions_u.html index 60f70ea67b..602b8ffcc2 100644 --- a/docs/cpp_linear/functions_u.html +++ b/docs/cpp_linear/functions_u.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_v.html b/docs/cpp_linear/functions_v.html index 87efb5ae62..e17358f261 100644 --- a/docs/cpp_linear/functions_v.html +++ b/docs/cpp_linear/functions_v.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_vars.html b/docs/cpp_linear/functions_vars.html index 8e6cab10ae..92e7507cb0 100644 --- a/docs/cpp_linear/functions_vars.html +++ b/docs/cpp_linear/functions_vars.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_w.html b/docs/cpp_linear/functions_w.html index 0c2ab1014a..fa89e0a56d 100644 --- a/docs/cpp_linear/functions_w.html +++ b/docs/cpp_linear/functions_w.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_x.html b/docs/cpp_linear/functions_x.html index 317b693a35..68bb4bb4c3 100644 --- a/docs/cpp_linear/functions_x.html +++ b/docs/cpp_linear/functions_x.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/functions_~.html b/docs/cpp_linear/functions_~.html index 1625b427f8..edb4f900e5 100644 --- a/docs/cpp_linear/functions_~.html +++ b/docs/cpp_linear/functions_~.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/graph_legend.html b/docs/cpp_linear/graph_legend.html index 6bccb53e23..f1ec7611e1 100644 --- a/docs/cpp_linear/graph_legend.html +++ b/docs/cpp_linear/graph_legend.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/index.html b/docs/cpp_linear/index.html index 9004cf06c6..41eafa2314 100644 --- a/docs/cpp_linear/index.html +++ b/docs/cpp_linear/index.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/linear__expr_8h.html b/docs/cpp_linear/linear__expr_8h.html index caae5e2f57..d9eb05358d 100644 --- a/docs/cpp_linear/linear__expr_8h.html +++ b/docs/cpp_linear/linear__expr_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/linear__expr_8h_source.html b/docs/cpp_linear/linear__expr_8h_source.html index 6ff2e76341..78975726d4 100644 --- a/docs/cpp_linear/linear__expr_8h_source.html +++ b/docs/cpp_linear/linear__expr_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/linear__solver_8h.html b/docs/cpp_linear/linear__solver_8h.html index 43894d2ad2..7e9d8b5e70 100644 --- a/docs/cpp_linear/linear__solver_8h.html +++ b/docs/cpp_linear/linear__solver_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/linear__solver_8h_source.html b/docs/cpp_linear/linear__solver_8h_source.html index d5c12717b3..15a57747e2 100644 --- a/docs/cpp_linear/linear__solver_8h_source.html +++ b/docs/cpp_linear/linear__solver_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/model__exporter_8h.html b/docs/cpp_linear/model__exporter_8h.html index aaf3423c3a..f4b2037431 100644 --- a/docs/cpp_linear/model__exporter_8h.html +++ b/docs/cpp_linear/model__exporter_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/model__exporter_8h_source.html b/docs/cpp_linear/model__exporter_8h_source.html index a0a94b608b..d0572b8ed5 100644 --- a/docs/cpp_linear/model__exporter_8h_source.html +++ b/docs/cpp_linear/model__exporter_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/model__exporter__swig__helper_8h.html b/docs/cpp_linear/model__exporter__swig__helper_8h.html index 4c186950a3..cd745bf549 100644 --- a/docs/cpp_linear/model__exporter__swig__helper_8h.html +++ b/docs/cpp_linear/model__exporter__swig__helper_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/model__exporter__swig__helper_8h_source.html b/docs/cpp_linear/model__exporter__swig__helper_8h_source.html index f5dddf4a25..5de5ba8a2b 100644 --- a/docs/cpp_linear/model__exporter__swig__helper_8h_source.html +++ b/docs/cpp_linear/model__exporter__swig__helper_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/model__validator_8h.html b/docs/cpp_linear/model__validator_8h.html index f85a3e5686..de59b8213d 100644 --- a/docs/cpp_linear/model__validator_8h.html +++ b/docs/cpp_linear/model__validator_8h.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/model__validator_8h_source.html b/docs/cpp_linear/model__validator_8h_source.html index 1df7f071ce..955320f3ce 100644 --- a/docs/cpp_linear/model__validator_8h_source.html +++ b/docs/cpp_linear/model__validator_8h_source.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/namespacemembers.html b/docs/cpp_linear/namespacemembers.html index a002d08cc7..75ba55d286 100644 --- a/docs/cpp_linear/namespacemembers.html +++ b/docs/cpp_linear/namespacemembers.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/namespacemembers_func.html b/docs/cpp_linear/namespacemembers_func.html index 223223e678..c0a029bd27 100644 --- a/docs/cpp_linear/namespacemembers_func.html +++ b/docs/cpp_linear/namespacemembers_func.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/namespacemembers_vars.html b/docs/cpp_linear/namespacemembers_vars.html index 300dfbd8a3..c1a9193aa6 100644 --- a/docs/cpp_linear/namespacemembers_vars.html +++ b/docs/cpp_linear/namespacemembers_vars.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/namespaceoperations__research.html b/docs/cpp_linear/namespaceoperations__research.html index 472ec680d9..c8bf061905 100644 --- a/docs/cpp_linear/namespaceoperations__research.html +++ b/docs/cpp_linear/namespaceoperations__research.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/namespaces.html b/docs/cpp_linear/namespaces.html index 472433802f..8494aa1e8e 100644 --- a/docs/cpp_linear/namespaces.html +++ b/docs/cpp_linear/namespaces.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions-members.html b/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions-members.html index 2ccae8b244..233dc27aad 100644 --- a/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions-members.html +++ b/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions.html b/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions.html index 0002843eee..f2ff1db2e0 100644 --- a/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions.html +++ b/docs/cpp_linear/structoperations__research_1_1MPModelExportOptions.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/annotated.html b/docs/cpp_routing/annotated.html index 7966a66f21..e58579119d 100644 --- a/docs/cpp_routing/annotated.html +++ b/docs/cpp_routing/annotated.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classes.html b/docs/cpp_routing/classes.html index 86f2200382..a26dc6d9f8 100644 --- a/docs/cpp_routing/classes.html +++ b/docs/cpp_routing/classes.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ArgumentHolder-members.html b/docs/cpp_routing/classoperations__research_1_1ArgumentHolder-members.html index 6689f3b1d8..9de5dae5b3 100644 --- a/docs/cpp_routing/classoperations__research_1_1ArgumentHolder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ArgumentHolder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ArgumentHolder.html b/docs/cpp_routing/classoperations__research_1_1ArgumentHolder.html index 237365bee1..f6fc3fd75f 100644 --- a/docs/cpp_routing/classoperations__research_1_1ArgumentHolder.html +++ b/docs/cpp_routing/classoperations__research_1_1ArgumentHolder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -143,7 +114,7 @@ Public Member Functions

Detailed Description

Argument Holder: useful when visiting a model.

-

Definition at line 2067 of file constraint_solveri.h.

+

Definition at line 2050 of file constraint_solveri.h.

Member Function Documentation

◆ FindIntegerArgumentOrDie()

diff --git a/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset-members.html b/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset-members.html index 8a64f5cf0f..50e466a4d4 100644 --- a/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset.html b/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset.html index 0918632bf8..64be4f6943 100644 --- a/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset.html +++ b/docs/cpp_routing/classoperations__research_1_1ArrayWithOffset.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -128,7 +99,7 @@ Public Member Functions class operations_research::ArrayWithOffset< T > -

Definition at line 2186 of file constraint_solveri.h.

+

Definition at line 2169 of file constraint_solveri.h.

Constructor & Destructor Documentation

◆ ArrayWithOffset()

@@ -164,7 +135,7 @@ class operations_research::ArrayWithOffset< T >
-

Definition at line 2188 of file constraint_solveri.h.

+

Definition at line 2171 of file constraint_solveri.h.

@@ -191,7 +162,7 @@ class operations_research::ArrayWithOffset< T >
-

Definition at line 2195 of file constraint_solveri.h.

+

Definition at line 2178 of file constraint_solveri.h.

@@ -221,7 +192,7 @@ class operations_research::ArrayWithOffset< T >

Reimplemented from BaseObject.

-

Definition at line 2209 of file constraint_solveri.h.

+

Definition at line 2192 of file constraint_solveri.h.

@@ -249,7 +220,7 @@ class operations_research::ArrayWithOffset< T >
-

Definition at line 2197 of file constraint_solveri.h.

+

Definition at line 2180 of file constraint_solveri.h.

@@ -287,7 +258,7 @@ class operations_research::ArrayWithOffset< T >
-

Definition at line 2203 of file constraint_solveri.h.

+

Definition at line 2186 of file constraint_solveri.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1Assignment-members.html b/docs/cpp_routing/classoperations__research_1_1Assignment-members.html index e8a9e80882..0a3b63981b 100644 --- a/docs/cpp_routing/classoperations__research_1_1Assignment-members.html +++ b/docs/cpp_routing/classoperations__research_1_1Assignment-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1Assignment.html b/docs/cpp_routing/classoperations__research_1_1Assignment.html index bcb0a443ed..24cff74f1c 100644 --- a/docs/cpp_routing/classoperations__research_1_1Assignment.html +++ b/docs/cpp_routing/classoperations__research_1_1Assignment.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -391,7 +362,7 @@ Public Member Functions

Detailed Description

An Assignment is a variable -> domains mapping, used to report solutions to the user.

-

Definition at line 4940 of file constraint_solver.h.

+

Definition at line 4929 of file constraint_solver.h.

Member Typedef Documentation

◆ IntContainer

@@ -405,7 +376,7 @@ Public Member Functions
-

Definition at line 4942 of file constraint_solver.h.

+

Definition at line 4931 of file constraint_solver.h.

@@ -421,7 +392,7 @@ Public Member Functions
-

Definition at line 4944 of file constraint_solver.h.

+

Definition at line 4933 of file constraint_solver.h.

@@ -437,7 +408,7 @@ Public Member Functions
-

Definition at line 4946 of file constraint_solver.h.

+

Definition at line 4935 of file constraint_solver.h.

@@ -811,7 +782,7 @@ Public Member Functions
-

Definition at line 5075 of file constraint_solver.h.

+

Definition at line 5064 of file constraint_solver.h.

@@ -920,7 +891,7 @@ Public Member Functions
-

Definition at line 4981 of file constraint_solver.h.

+

Definition at line 4970 of file constraint_solver.h.

@@ -1193,7 +1164,7 @@ Public Member Functions
-

Definition at line 4953 of file constraint_solver.h.

+

Definition at line 4942 of file constraint_solver.h.

@@ -1304,7 +1275,7 @@ Public Member Functions

This method pushes the demon onto the propagation queue.

It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

-

Definition at line 3135 of file constraint_solver.h.

+

Definition at line 3124 of file constraint_solver.h.

@@ -1332,7 +1303,7 @@ Public Member Functions
-

Definition at line 3136 of file constraint_solver.h.

+

Definition at line 3125 of file constraint_solver.h.

@@ -1466,7 +1437,7 @@ Public Member Functions

This method freezes the propagation queue.

It is useful when you need to apply multiple modifications at once.

-

Definition at line 3126 of file constraint_solver.h.

+

Definition at line 3115 of file constraint_solver.h.

@@ -1520,7 +1491,7 @@ Public Member Functions
-

Definition at line 4983 of file constraint_solver.h.

+

Definition at line 4972 of file constraint_solver.h.

@@ -1547,7 +1518,7 @@ Public Member Functions
-

Definition at line 5093 of file constraint_solver.h.

+

Definition at line 5082 of file constraint_solver.h.

@@ -1574,7 +1545,7 @@ Public Member Functions
-

Definition at line 5091 of file constraint_solver.h.

+

Definition at line 5080 of file constraint_solver.h.

@@ -1695,7 +1666,7 @@ Public Member Functions
-

Definition at line 5096 of file constraint_solver.h.

+

Definition at line 5085 of file constraint_solver.h.

@@ -1722,7 +1693,7 @@ Public Member Functions
-

Definition at line 5092 of file constraint_solver.h.

+

Definition at line 5081 of file constraint_solver.h.

@@ -1749,7 +1720,7 @@ Public Member Functions
-

Definition at line 5102 of file constraint_solver.h.

+

Definition at line 5091 of file constraint_solver.h.

@@ -1803,7 +1774,7 @@ Public Member Functions
-

Definition at line 4961 of file constraint_solver.h.

+

Definition at line 4950 of file constraint_solver.h.

@@ -1830,7 +1801,7 @@ Public Member Functions
-

Definition at line 4960 of file constraint_solver.h.

+

Definition at line 4949 of file constraint_solver.h.

@@ -1857,7 +1828,7 @@ Public Member Functions
-

Definition at line 4962 of file constraint_solver.h.

+

Definition at line 4951 of file constraint_solver.h.

@@ -1970,7 +1941,7 @@ Public Member Functions
-

Definition at line 5111 of file constraint_solver.h.

+

Definition at line 5100 of file constraint_solver.h.

@@ -1998,7 +1969,7 @@ Public Member Functions
-

Definition at line 5105 of file constraint_solver.h.

+

Definition at line 5094 of file constraint_solver.h.

@@ -2081,7 +2052,7 @@ Public Member Functions

This method clears the failure callback.

-

Definition at line 3149 of file constraint_solver.h.

+

Definition at line 3138 of file constraint_solver.h.

@@ -2181,7 +2152,7 @@ Public Member Functions
-

Definition at line 5099 of file constraint_solver.h.

+

Definition at line 5088 of file constraint_solver.h.

@@ -2209,7 +2180,7 @@ Public Member Functions
-

Definition at line 3143 of file constraint_solver.h.

+

Definition at line 3132 of file constraint_solver.h.

@@ -2265,7 +2236,7 @@ Public Member Functions

Shortcut for variable cleaner.

-

Definition at line 3152 of file constraint_solver.h.

+

Definition at line 3141 of file constraint_solver.h.

@@ -3088,7 +3059,7 @@ Public Member Functions
-

Definition at line 4957 of file constraint_solver.h.

+

Definition at line 4946 of file constraint_solver.h.

@@ -3115,7 +3086,7 @@ Public Member Functions
-

Definition at line 3122 of file constraint_solver.h.

+

Definition at line 3111 of file constraint_solver.h.

@@ -3216,7 +3187,7 @@ Public Member Functions

This method unfreezes the propagation queue.

All modifications that happened when the queue was frozen will be processed.

-

Definition at line 3130 of file constraint_solver.h.

+

Definition at line 3119 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1AssignmentContainer-members.html b/docs/cpp_routing/classoperations__research_1_1AssignmentContainer-members.html index 66e959864d..e799586776 100644 --- a/docs/cpp_routing/classoperations__research_1_1AssignmentContainer-members.html +++ b/docs/cpp_routing/classoperations__research_1_1AssignmentContainer-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1AssignmentContainer.html b/docs/cpp_routing/classoperations__research_1_1AssignmentContainer.html index a1d25bc67b..3effefbffb 100644 --- a/docs/cpp_routing/classoperations__research_1_1AssignmentContainer.html +++ b/docs/cpp_routing/classoperations__research_1_1AssignmentContainer.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -152,7 +123,7 @@ Public Member Functions class operations_research::AssignmentContainer< V, E > -

Definition at line 4761 of file constraint_solver.h.

+

Definition at line 4750 of file constraint_solver.h.

Constructor & Destructor Documentation

◆ AssignmentContainer()

@@ -177,7 +148,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4763 of file constraint_solver.h.

+

Definition at line 4752 of file constraint_solver.h.

@@ -206,7 +177,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4764 of file constraint_solver.h.

+

Definition at line 4753 of file constraint_solver.h.

@@ -246,7 +217,7 @@ class operations_research::AssignmentContainer< V, E >

Advanced usage: Adds element at a given position; position has to have been allocated with AssignmentContainer::Resize() beforehand.

-

Definition at line 4781 of file constraint_solver.h.

+

Definition at line 4770 of file constraint_solver.h.

@@ -273,7 +244,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4872 of file constraint_solver.h.

+

Definition at line 4861 of file constraint_solver.h.

@@ -301,7 +272,7 @@ class operations_research::AssignmentContainer< V, E >

2x speedup on OR-tools.

-

Definition at line 4785 of file constraint_solver.h.

+

Definition at line 4774 of file constraint_solver.h.

@@ -329,7 +300,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4826 of file constraint_solver.h.

+

Definition at line 4815 of file constraint_solver.h.

@@ -359,7 +330,7 @@ class operations_research::AssignmentContainer< V, E >

Copies all the elements of 'container' to this container, clearing its previous content.

-

Definition at line 4819 of file constraint_solver.h.

+

Definition at line 4808 of file constraint_solver.h.

@@ -389,7 +360,7 @@ class operations_research::AssignmentContainer< V, E >

Copies the elements of 'container' which are already in the calling container.

-

Definition at line 4797 of file constraint_solver.h.

+

Definition at line 4786 of file constraint_solver.h.

@@ -417,7 +388,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4843 of file constraint_solver.h.

+

Definition at line 4832 of file constraint_solver.h.

@@ -445,7 +416,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4858 of file constraint_solver.h.

+

Definition at line 4847 of file constraint_solver.h.

@@ -473,7 +444,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4849 of file constraint_solver.h.

+

Definition at line 4838 of file constraint_solver.h.

@@ -500,7 +471,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4856 of file constraint_solver.h.

+

Definition at line 4845 of file constraint_solver.h.

@@ -527,7 +498,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4794 of file constraint_solver.h.

+

Definition at line 4783 of file constraint_solver.h.

@@ -557,7 +528,7 @@ class operations_research::AssignmentContainer< V, E >

Adds element without checking its presence in the container.

-

Definition at line 4774 of file constraint_solver.h.

+

Definition at line 4763 of file constraint_solver.h.

@@ -585,7 +556,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4830 of file constraint_solver.h.

+

Definition at line 4819 of file constraint_solver.h.

@@ -613,7 +584,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4857 of file constraint_solver.h.

+

Definition at line 4846 of file constraint_solver.h.

@@ -641,7 +612,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4836 of file constraint_solver.h.

+

Definition at line 4825 of file constraint_solver.h.

@@ -669,7 +640,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4901 of file constraint_solver.h.

+

Definition at line 4890 of file constraint_solver.h.

@@ -703,7 +674,7 @@ class operations_research::AssignmentContainer< V, E >

The == should be order-independent

Do not use the hash_map::== operator! It compares both content and how the map is hashed (e.g., number of buckets). This is not what we want.

-

Definition at line 4882 of file constraint_solver.h.

+

Definition at line 4871 of file constraint_solver.h.

@@ -733,7 +704,7 @@ class operations_research::AssignmentContainer< V, E >

Advanced usage: Resizes the container, potentially adding elements with null variables.

-

Definition at line 4793 of file constraint_solver.h.

+

Definition at line 4782 of file constraint_solver.h.

@@ -760,7 +731,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4865 of file constraint_solver.h.

+

Definition at line 4854 of file constraint_solver.h.

@@ -787,7 +758,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4859 of file constraint_solver.h.

+

Definition at line 4848 of file constraint_solver.h.

@@ -814,7 +785,7 @@ class operations_research::AssignmentContainer< V, E >
-

Definition at line 4860 of file constraint_solver.h.

+

Definition at line 4849 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1AssignmentElement-members.html b/docs/cpp_routing/classoperations__research_1_1AssignmentElement-members.html index 197556296b..c8e86df2a3 100644 --- a/docs/cpp_routing/classoperations__research_1_1AssignmentElement-members.html +++ b/docs/cpp_routing/classoperations__research_1_1AssignmentElement-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1AssignmentElement.html b/docs/cpp_routing/classoperations__research_1_1AssignmentElement.html index 917ef53975..e2278b2656 100644 --- a/docs/cpp_routing/classoperations__research_1_1AssignmentElement.html +++ b/docs/cpp_routing/classoperations__research_1_1AssignmentElement.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -116,7 +87,7 @@ Public Member Functions

Detailed Description

-

Definition at line 4541 of file constraint_solver.h.

+

Definition at line 4530 of file constraint_solver.h.

Constructor & Destructor Documentation

◆ AssignmentElement()

@@ -141,7 +112,7 @@ Public Member Functions
-

Definition at line 4543 of file constraint_solver.h.

+

Definition at line 4532 of file constraint_solver.h.

@@ -169,7 +140,7 @@ Public Member Functions
-

Definition at line 4545 of file constraint_solver.h.

+

Definition at line 4534 of file constraint_solver.h.

@@ -196,7 +167,7 @@ Public Member Functions
-

Definition at line 4547 of file constraint_solver.h.

+

Definition at line 4536 of file constraint_solver.h.

@@ -223,7 +194,7 @@ Public Member Functions
-

Definition at line 4546 of file constraint_solver.h.

+

Definition at line 4535 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1BaseIntExpr-members.html b/docs/cpp_routing/classoperations__research_1_1BaseIntExpr-members.html index 2066169b09..e1e358fd24 100644 --- a/docs/cpp_routing/classoperations__research_1_1BaseIntExpr-members.html +++ b/docs/cpp_routing/classoperations__research_1_1BaseIntExpr-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1BaseIntExpr.html b/docs/cpp_routing/classoperations__research_1_1BaseIntExpr.html index 31da7c0e4c..300a89eebb 100644 --- a/docs/cpp_routing/classoperations__research_1_1BaseIntExpr.html +++ b/docs/cpp_routing/classoperations__research_1_1BaseIntExpr.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -357,7 +328,7 @@ Public Member Functions

Reimplemented in BooleanVar.

-

Definition at line 3805 of file constraint_solver.h.

+

Definition at line 3794 of file constraint_solver.h.

@@ -413,7 +384,7 @@ Public Member Functions

Reimplemented in Pack, Assignment, SequenceVar, Constraint, and BooleanVar.

-

Definition at line 3115 of file constraint_solver.h.

+

Definition at line 3104 of file constraint_solver.h.

@@ -470,7 +441,7 @@ Public Member Functions

This method pushes the demon onto the propagation queue.

It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

-

Definition at line 3135 of file constraint_solver.h.

+

Definition at line 3124 of file constraint_solver.h.

@@ -498,7 +469,7 @@ Public Member Functions
-

Definition at line 3136 of file constraint_solver.h.

+

Definition at line 3125 of file constraint_solver.h.

@@ -554,7 +525,7 @@ Public Member Functions

This method freezes the propagation queue.

It is useful when you need to apply multiple modifications at once.

-

Definition at line 3126 of file constraint_solver.h.

+

Definition at line 3115 of file constraint_solver.h.

@@ -612,7 +583,7 @@ Public Member Functions

Reimplemented in IntVar.

-

Definition at line 3808 of file constraint_solver.h.

+

Definition at line 3797 of file constraint_solver.h.

@@ -733,7 +704,7 @@ Public Member Functions

By default calls Min() and Max(), but can be redefined when Min and Max code can be factorized.

-

Definition at line 3791 of file constraint_solver.h.

+

Definition at line 3780 of file constraint_solver.h.

@@ -762,7 +733,7 @@ Public Member Functions

This method clears the failure callback.

-

Definition at line 3149 of file constraint_solver.h.

+

Definition at line 3138 of file constraint_solver.h.

@@ -790,7 +761,7 @@ Public Member Functions
-

Definition at line 3143 of file constraint_solver.h.

+

Definition at line 3132 of file constraint_solver.h.

@@ -846,7 +817,7 @@ Public Member Functions

Shortcut for variable cleaner.

-

Definition at line 3152 of file constraint_solver.h.

+

Definition at line 3141 of file constraint_solver.h.

@@ -944,7 +915,7 @@ Public Member Functions

Reimplemented in BooleanVar.

-

Definition at line 3796 of file constraint_solver.h.

+

Definition at line 3785 of file constraint_solver.h.

@@ -974,7 +945,7 @@ Public Member Functions

This method sets the value of the expression.

-

Definition at line 3802 of file constraint_solver.h.

+

Definition at line 3791 of file constraint_solver.h.

@@ -1001,7 +972,7 @@ Public Member Functions
-

Definition at line 3122 of file constraint_solver.h.

+

Definition at line 3111 of file constraint_solver.h.

@@ -1031,7 +1002,7 @@ Public Member Functions

This method unfreezes the propagation queue.

All modifications that happened when the queue was frozen will be processed.

-

Definition at line 3130 of file constraint_solver.h.

+

Definition at line 3119 of file constraint_solver.h.

@@ -1149,7 +1120,7 @@ Public Member Functions

Attach a demon that will watch the min or the max of the expression.

-

Definition at line 3822 of file constraint_solver.h.

+

Definition at line 3811 of file constraint_solver.h.

@@ -1179,7 +1150,7 @@ Public Member Functions

Attach a demon that will watch the min or the max of the expression.

-

Definition at line 3828 of file constraint_solver.h.

+

Definition at line 3817 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1BaseLns-members.html b/docs/cpp_routing/classoperations__research_1_1BaseLns-members.html index a6435797d5..d055df52dd 100644 --- a/docs/cpp_routing/classoperations__research_1_1BaseLns-members.html +++ b/docs/cpp_routing/classoperations__research_1_1BaseLns-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1BaseLns.html b/docs/cpp_routing/classoperations__research_1_1BaseLns.html index d198c9f0aa..3d70702a60 100644 --- a/docs/cpp_routing/classoperations__research_1_1BaseLns.html +++ b/docs/cpp_routing/classoperations__research_1_1BaseLns.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -467,9 +438,9 @@ Protected Attributes
-

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

+

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

-

Definition at line 3099 of file constraint_solver.h.

+

Definition at line 3088 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1BaseObject-members.html b/docs/cpp_routing/classoperations__research_1_1BaseObject-members.html index 92e43feea4..4b5d54a805 100644 --- a/docs/cpp_routing/classoperations__research_1_1BaseObject-members.html +++ b/docs/cpp_routing/classoperations__research_1_1BaseObject-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1BaseObject.html b/docs/cpp_routing/classoperations__research_1_1BaseObject.html index b30d3f0fa1..a166a4199b 100644 --- a/docs/cpp_routing/classoperations__research_1_1BaseObject.html +++ b/docs/cpp_routing/classoperations__research_1_1BaseObject.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -164,7 +135,7 @@ Public Member Functions

A BaseObject is the root of all reversibly allocated objects.

A DebugString method and the associated << operator are implemented as a convenience.

-

Definition at line 3095 of file constraint_solver.h.

+

Definition at line 3084 of file constraint_solver.h.

Constructor & Destructor Documentation

◆ BaseObject()

@@ -189,7 +160,7 @@ Public Member Functions
-

Definition at line 3097 of file constraint_solver.h.

+

Definition at line 3086 of file constraint_solver.h.

@@ -216,7 +187,7 @@ Public Member Functions
-

Definition at line 3098 of file constraint_solver.h.

+

Definition at line 3087 of file constraint_solver.h.

@@ -244,9 +215,9 @@ Public Member Functions
-

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

+

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

-

Definition at line 3099 of file constraint_solver.h.

+

Definition at line 3088 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1BasePathFilter-members.html b/docs/cpp_routing/classoperations__research_1_1BasePathFilter-members.html index e251ff330e..4348f05943 100644 --- a/docs/cpp_routing/classoperations__research_1_1BasePathFilter-members.html +++ b/docs/cpp_routing/classoperations__research_1_1BasePathFilter-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -92,18 +63,14 @@ Accept(const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max) overrideBasePathFiltervirtual AddVars(const std::vector< IntVar * > &vars)IntVarLocalSearchFilter BaseObject()BaseObjectinline - BasePathFilter(const std::vector< IntVar * > &nexts, int next_domain_size, std::function< void(int64)> objective_callback)BasePathFilter - CanPropagateObjectiveValue() constIntVarLocalSearchFilterinlineprotected - DebugString() constBaseObjectinlinevirtual - FindIndex(IntVar *const var, int64 *index) constIntVarLocalSearchFilterinline - GetAcceptedObjectiveValue() constLocalSearchFilterinlinevirtual - GetNewSynchronizedUnperformedNodes() constBasePathFilterinlineprotected - GetNext(int64 node) constBasePathFilterinlineprotected - GetPath(int64 node) constBasePathFilterinlineprotected - GetSynchronizedObjectiveValue() constLocalSearchFilterinlinevirtual - injected_objective_value_IntVarLocalSearchFilterprotected - InjectObjectiveValue(int64 objective_value)IntVarLocalSearchFilterinlinevirtual - IntVarLocalSearchFilter(const std::vector< IntVar * > &vars, Solver::ObjectiveWatcher objective_callback)IntVarLocalSearchFilter + BasePathFilter(const std::vector< IntVar * > &nexts, int next_domain_size)BasePathFilter + DebugString() constBaseObjectinlinevirtual + FindIndex(IntVar *const var, int64 *index) constIntVarLocalSearchFilterinline + GetAcceptedObjectiveValue() constLocalSearchFilterinlinevirtual + GetNewSynchronizedUnperformedNodes() constBasePathFilterinlineprotected + GetNext(int64 node) constBasePathFilterinlineprotected + GetPath(int64 node) constBasePathFilterinlineprotected + GetSynchronizedObjectiveValue() constLocalSearchFilterinlinevirtual IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)IntVarLocalSearchFilterexplicit IsDisabled() constBasePathFilterinlineprotected IsIncremental() constLocalSearchFilterinlinevirtual @@ -111,17 +78,16 @@ kUnassignedBasePathFilterprotectedstatic NumPaths() constBasePathFilterinlineprotected OnSynchronize(const Assignment *delta) overrideBasePathFiltervirtual - PropagateObjectiveValue(int64 objective_value)IntVarLocalSearchFilterinlineprotected - Rank(int64 node) constBasePathFilterinlineprotected - Size() constIntVarLocalSearchFilterinline - Start(int i) constBasePathFilterinlineprotected - Synchronize(const Assignment *assignment, const Assignment *delta) overrideIntVarLocalSearchFiltervirtual - SynchronizeOnAssignment(const Assignment *assignment)IntVarLocalSearchFilterprotected - Value(int index) constIntVarLocalSearchFilterinline - Var(int index) constIntVarLocalSearchFilterinline - ~BaseObject()BaseObjectinlinevirtual - ~BasePathFilter() overrideBasePathFilterinline - ~IntVarLocalSearchFilter() overrideIntVarLocalSearchFilter + Rank(int64 node) constBasePathFilterinlineprotected + Size() constIntVarLocalSearchFilterinline + Start(int i) constBasePathFilterinlineprotected + Synchronize(const Assignment *assignment, const Assignment *delta) overrideIntVarLocalSearchFiltervirtual + SynchronizeOnAssignment(const Assignment *assignment)IntVarLocalSearchFilterprotected + Value(int index) constIntVarLocalSearchFilterinline + Var(int index) constIntVarLocalSearchFilterinline + ~BaseObject()BaseObjectinlinevirtual + ~BasePathFilter() overrideBasePathFilterinline + ~IntVarLocalSearchFilter() overrideIntVarLocalSearchFilter
diff --git a/docs/cpp_routing/classoperations__research_1_1BasePathFilter.html b/docs/cpp_routing/classoperations__research_1_1BasePathFilter.html index 69c0afe868..bf498b240d 100644 --- a/docs/cpp_routing/classoperations__research_1_1BasePathFilter.html +++ b/docs/cpp_routing/classoperations__research_1_1BasePathFilter.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -85,7 +56,6 @@
@@ -122,8 +92,8 @@ Collaboration diagram for BasePathFilter:
- - + + @@ -136,8 +106,6 @@ Public Member Functions - - @@ -178,15 +146,6 @@ Protected Member Functions - - - - -

Public Member Functions

 BasePathFilter (const std::vector< IntVar * > &nexts, int next_domain_size, std::function< void(int64)> objective_callback)
 
 BasePathFilter (const std::vector< IntVar * > &nexts, int next_domain_size)
 
 ~BasePathFilter () override
 
bool Accept (const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max) override
 
bool FindIndex (IntVar *const var, int64 *index) const
 
virtual void InjectObjectiveValue (int64 objective_value)
 
void AddVars (const std::vector< IntVar * > &vars)
 Add variables to "track" to the filter. More...
 
 
void SynchronizeOnAssignment (const Assignment *assignment)
 
bool CanPropagateObjectiveValue () const
 
void PropagateObjectiveValue (int64 objective_value)
 
- - -

-Protected Attributes

int64 injected_objective_value_
 
@@ -198,8 +157,8 @@ Static Protected Attributes

Definition at line 3188 of file routing.h.

Constructor & Destructor Documentation

- -

◆ BasePathFilter()

+ +

◆ BasePathFilter()

@@ -214,13 +173,7 @@ Static Protected Attributes
- - - - - - - + @@ -255,7 +208,7 @@ Static Protected Attributes

Static Protected Attributes

int next_domain_size,
std::function< void(int64)> objective_callback next_domain_size 
-

Definition at line 3192 of file routing.h.

+

Definition at line 3191 of file routing.h.

@@ -339,33 +292,6 @@ Static Protected Attributes

Add variables to "track" to the filter.

-
-
- -

◆ CanPropagateObjectiveValue()

- -
-
- - - - - -
- - - - - - - -
bool CanPropagateObjectiveValue () const
-
-inlineprotectedinherited
-
- -

Definition at line 1591 of file constraint_solveri.h.

-
@@ -391,9 +317,9 @@ Static Protected Attributes
-

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

+

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

-

Definition at line 3099 of file constraint_solver.h.

+

Definition at line 3088 of file constraint_solver.h.

@@ -431,7 +357,7 @@ Static Protected Attributes
-

Definition at line 1564 of file constraint_solveri.h.

+

Definition at line 1562 of file constraint_solveri.h.

@@ -489,7 +415,7 @@ Static Protected Attributes
-

Definition at line 3210 of file routing.h.

+

Definition at line 3209 of file routing.h.

@@ -517,7 +443,7 @@ Static Protected Attributes
-

Definition at line 3200 of file routing.h.

+

Definition at line 3199 of file routing.h.

@@ -545,7 +471,7 @@ Static Protected Attributes
-

Definition at line 3207 of file routing.h.

+

Definition at line 3206 of file routing.h.

@@ -578,34 +504,6 @@ Static Protected Attributes

Definition at line 1514 of file constraint_solveri.h.

-
-
- -

◆ InjectObjectiveValue()

- -
-
- - - - - -
- - - - - - - - -
virtual void InjectObjectiveValue (int64 objective_value)
-
-inlinevirtualinherited
-
- -

Definition at line 1573 of file constraint_solveri.h.

-
@@ -631,7 +529,7 @@ Static Protected Attributes
-

Definition at line 3209 of file routing.h.

+

Definition at line 3208 of file routing.h.

@@ -688,7 +586,7 @@ Static Protected Attributes
-

Definition at line 1585 of file constraint_solveri.h.

+

Definition at line 1579 of file constraint_solveri.h.

@@ -715,7 +613,7 @@ Static Protected Attributes
-

Definition at line 3205 of file routing.h.

+

Definition at line 3204 of file routing.h.

@@ -745,34 +643,6 @@ Static Protected Attributes

Reimplemented from IntVarLocalSearchFilter.

-
-
- -

◆ PropagateObjectiveValue()

- -
-
- - - - - -
- - - - - - - - -
void PropagateObjectiveValue (int64 objective_value)
-
-inlineprotectedinherited
-
- -

Definition at line 1594 of file constraint_solveri.h.

-
@@ -799,7 +669,7 @@ Static Protected Attributes
-

Definition at line 3208 of file routing.h.

+

Definition at line 3207 of file routing.h.

@@ -826,7 +696,7 @@ Static Protected Attributes
-

Definition at line 1579 of file constraint_solveri.h.

+

Definition at line 1573 of file constraint_solveri.h.

@@ -854,7 +724,7 @@ Static Protected Attributes
-

Definition at line 3206 of file routing.h.

+

Definition at line 3205 of file routing.h.

@@ -949,7 +819,7 @@ Static Protected Attributes
-

Definition at line 1581 of file constraint_solveri.h.

+

Definition at line 1575 of file constraint_solveri.h.

@@ -977,35 +847,11 @@ Static Protected Attributes
-

Definition at line 1580 of file constraint_solveri.h.

+

Definition at line 1574 of file constraint_solveri.h.

Member Data Documentation

- -

◆ injected_objective_value_

- -
-
- - - - - -
- - - - -
int64 injected_objective_value_
-
-protectedinherited
-
- -

Definition at line 1599 of file constraint_solveri.h.

- -
-

◆ kUnassigned

@@ -1026,7 +872,7 @@ Static Protected Attributes
-

Definition at line 3198 of file routing.h.

+

Definition at line 3197 of file routing.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1BooleanVar-members.html b/docs/cpp_routing/classoperations__research_1_1BooleanVar-members.html index a6fbcf1e82..22e93e06a2 100644 --- a/docs/cpp_routing/classoperations__research_1_1BooleanVar-members.html +++ b/docs/cpp_routing/classoperations__research_1_1BooleanVar-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1BooleanVar.html b/docs/cpp_routing/classoperations__research_1_1BooleanVar.html index c5182a660c..4e876f0070 100644 --- a/docs/cpp_routing/classoperations__research_1_1BooleanVar.html +++ b/docs/cpp_routing/classoperations__research_1_1BooleanVar.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -290,7 +261,7 @@ Protected Attributes

Detailed Description

-

Definition at line 1701 of file constraint_solveri.h.

+

Definition at line 1684 of file constraint_solveri.h.

Constructor & Destructor Documentation

◆ BooleanVar()

@@ -326,7 +297,7 @@ Protected Attributes
-

Definition at line 1705 of file constraint_solveri.h.

+

Definition at line 1688 of file constraint_solveri.h.

@@ -353,7 +324,7 @@ Protected Attributes
-

Definition at line 1708 of file constraint_solveri.h.

+

Definition at line 1691 of file constraint_solveri.h.

@@ -415,7 +386,7 @@ Protected Attributes

Reimplemented from PropagationBaseObject.

-

Definition at line 1738 of file constraint_solveri.h.

+

Definition at line 1721 of file constraint_solveri.h.

@@ -446,7 +417,7 @@ Protected Attributes

Reimplemented from IntExpr.

-

Definition at line 1715 of file constraint_solveri.h.

+

Definition at line 1698 of file constraint_solveri.h.

@@ -560,7 +531,7 @@ Protected Attributes

This method pushes the demon onto the propagation queue.

It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

-

Definition at line 3135 of file constraint_solver.h.

+

Definition at line 3124 of file constraint_solver.h.

@@ -588,7 +559,7 @@ Protected Attributes
-

Definition at line 3136 of file constraint_solver.h.

+

Definition at line 3125 of file constraint_solver.h.

@@ -644,7 +615,7 @@ Protected Attributes

This method freezes the propagation queue.

It is useful when you need to apply multiple modifications at once.

-

Definition at line 3126 of file constraint_solver.h.

+

Definition at line 3115 of file constraint_solver.h.

@@ -700,7 +671,7 @@ Protected Attributes

Returns the index of the variable.

-

Definition at line 4034 of file constraint_solver.h.

+

Definition at line 4023 of file constraint_solver.h.

@@ -845,7 +816,7 @@ Protected Attributes

Reimplemented from IntExpr.

-

Definition at line 3946 of file constraint_solver.h.

+

Definition at line 3935 of file constraint_solver.h.

@@ -936,7 +907,7 @@ Protected Attributes

Implements IntExpr.

-

Definition at line 1712 of file constraint_solveri.h.

+

Definition at line 1695 of file constraint_solveri.h.

@@ -965,7 +936,7 @@ Protected Attributes

Implements IntExpr.

-

Definition at line 1710 of file constraint_solveri.h.

+

Definition at line 1693 of file constraint_solveri.h.

@@ -1086,7 +1057,7 @@ Protected Attributes

By default calls Min() and Max(), but can be redefined when Min and Max code can be factorized.

-

Definition at line 3791 of file constraint_solver.h.

+

Definition at line 3780 of file constraint_solver.h.

@@ -1113,7 +1084,7 @@ Protected Attributes
-

Definition at line 1740 of file constraint_solveri.h.

+

Definition at line 1723 of file constraint_solveri.h.

@@ -1241,7 +1212,7 @@ Protected Attributes

This method clears the failure callback.

-

Definition at line 3149 of file constraint_solver.h.

+

Definition at line 3138 of file constraint_solver.h.

@@ -1294,7 +1265,7 @@ Protected Attributes
-

Definition at line 3143 of file constraint_solver.h.

+

Definition at line 3132 of file constraint_solver.h.

@@ -1350,7 +1321,7 @@ Protected Attributes

Shortcut for variable cleaner.

-

Definition at line 3152 of file constraint_solver.h.

+

Definition at line 3141 of file constraint_solver.h.

@@ -1476,7 +1447,7 @@ Protected Attributes

This method sets the value of the expression.

-

Definition at line 3802 of file constraint_solver.h.

+

Definition at line 3791 of file constraint_solver.h.

@@ -1560,7 +1531,7 @@ Protected Attributes
-

Definition at line 3122 of file constraint_solver.h.

+

Definition at line 3111 of file constraint_solver.h.

@@ -1590,7 +1561,7 @@ Protected Attributes

This method unfreezes the propagation queue.

All modifications that happened when the queue was frozen will be processed.

-

Definition at line 3130 of file constraint_solver.h.

+

Definition at line 3119 of file constraint_solver.h.

@@ -1622,7 +1593,7 @@ Protected Attributes

Implements IntVar.

-

Definition at line 1716 of file constraint_solveri.h.

+

Definition at line 1699 of file constraint_solveri.h.

@@ -1653,7 +1624,7 @@ Protected Attributes

Implements IntExpr.

-

Definition at line 3947 of file constraint_solver.h.

+

Definition at line 3936 of file constraint_solver.h.

@@ -1682,7 +1653,7 @@ Protected Attributes

Reimplemented from IntVar.

-

Definition at line 1730 of file constraint_solveri.h.

+

Definition at line 1713 of file constraint_solveri.h.

@@ -1771,7 +1742,7 @@ Protected Attributes

This method attaches a closure that will be awakened when the variable is bound.

-

Definition at line 3971 of file constraint_solver.h.

+

Definition at line 3960 of file constraint_solver.h.

@@ -1801,7 +1772,7 @@ Protected Attributes

This method attaches an action that will be awakened when the variable is bound.

-

Definition at line 3978 of file constraint_solver.h.

+

Definition at line 3967 of file constraint_solver.h.

@@ -1833,7 +1804,7 @@ Protected Attributes

Implements IntVar.

-

Definition at line 1724 of file constraint_solveri.h.

+

Definition at line 1707 of file constraint_solveri.h.

@@ -1863,7 +1834,7 @@ Protected Attributes

This method attaches a closure that will watch any domain modification of the domain of the variable.

-

Definition at line 3988 of file constraint_solver.h.

+

Definition at line 3977 of file constraint_solver.h.

@@ -1893,7 +1864,7 @@ Protected Attributes

This method attaches an action that will watch any domain modification of the domain of the variable.

-

Definition at line 3994 of file constraint_solver.h.

+

Definition at line 3983 of file constraint_solver.h.

@@ -1925,7 +1896,7 @@ Protected Attributes

Implements IntExpr.

-

Definition at line 1723 of file constraint_solveri.h.

+

Definition at line 1706 of file constraint_solveri.h.

@@ -1955,7 +1926,7 @@ Protected Attributes

Attach a demon that will watch the min or the max of the expression.

-

Definition at line 3822 of file constraint_solver.h.

+

Definition at line 3811 of file constraint_solver.h.

@@ -1985,7 +1956,7 @@ Protected Attributes

Attach a demon that will watch the min or the max of the expression.

-

Definition at line 3828 of file constraint_solver.h.

+

Definition at line 3817 of file constraint_solver.h.

@@ -2010,7 +1981,7 @@ Protected Attributes
-

Definition at line 1744 of file constraint_solveri.h.

+

Definition at line 1727 of file constraint_solveri.h.

@@ -2034,7 +2005,7 @@ Protected Attributes
-

Definition at line 1745 of file constraint_solveri.h.

+

Definition at line 1728 of file constraint_solveri.h.

@@ -2058,7 +2029,7 @@ Protected Attributes
-

Definition at line 1703 of file constraint_solveri.h.

+

Definition at line 1686 of file constraint_solveri.h.

@@ -2082,7 +2053,7 @@ Protected Attributes
-

Definition at line 1743 of file constraint_solveri.h.

+

Definition at line 1726 of file constraint_solveri.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter-members.html b/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter-members.html index 4480733c60..3e2c919155 100644 --- a/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -92,28 +63,23 @@ Accept(const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max) overrideCPFeasibilityFiltervirtual AddVars(const std::vector< IntVar * > &vars)IntVarLocalSearchFilter BaseObject()BaseObjectinline - CanPropagateObjectiveValue() constIntVarLocalSearchFilterinlineprotected - CPFeasibilityFilter(const RoutingModel *routing_model)CPFeasibilityFilterexplicit - DebugString() const overrideCPFeasibilityFilterinlinevirtual - FindIndex(IntVar *const var, int64 *index) constIntVarLocalSearchFilterinline - GetAcceptedObjectiveValue() constLocalSearchFilterinlinevirtual - GetSynchronizedObjectiveValue() constLocalSearchFilterinlinevirtual - injected_objective_value_IntVarLocalSearchFilterprotected - InjectObjectiveValue(int64 objective_value)IntVarLocalSearchFilterinlinevirtual - IntVarLocalSearchFilter(const std::vector< IntVar * > &vars, Solver::ObjectiveWatcher objective_callback)IntVarLocalSearchFilter + CPFeasibilityFilter(const RoutingModel *routing_model)CPFeasibilityFilterexplicit + DebugString() const overrideCPFeasibilityFilterinlinevirtual + FindIndex(IntVar *const var, int64 *index) constIntVarLocalSearchFilterinline + GetAcceptedObjectiveValue() constLocalSearchFilterinlinevirtual + GetSynchronizedObjectiveValue() constLocalSearchFilterinlinevirtual IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)IntVarLocalSearchFilterexplicit IsIncremental() constLocalSearchFilterinlinevirtual IsVarSynced(int index) constIntVarLocalSearchFilterinline OnSynchronize(const Assignment *delta) overrideCPFeasibilityFiltervirtual - PropagateObjectiveValue(int64 objective_value)IntVarLocalSearchFilterinlineprotected - Size() constIntVarLocalSearchFilterinline - Synchronize(const Assignment *assignment, const Assignment *delta) overrideIntVarLocalSearchFiltervirtual - SynchronizeOnAssignment(const Assignment *assignment)IntVarLocalSearchFilterprotected - Value(int index) constIntVarLocalSearchFilterinline - Var(int index) constIntVarLocalSearchFilterinline - ~BaseObject()BaseObjectinlinevirtual - ~CPFeasibilityFilter() overrideCPFeasibilityFilterinline - ~IntVarLocalSearchFilter() overrideIntVarLocalSearchFilter + Size() constIntVarLocalSearchFilterinline + Synchronize(const Assignment *assignment, const Assignment *delta) overrideIntVarLocalSearchFiltervirtual + SynchronizeOnAssignment(const Assignment *assignment)IntVarLocalSearchFilterprotected + Value(int index) constIntVarLocalSearchFilterinline + Var(int index) constIntVarLocalSearchFilterinline + ~BaseObject()BaseObjectinlinevirtual + ~CPFeasibilityFilter() overrideCPFeasibilityFilterinline + ~IntVarLocalSearchFilter() overrideIntVarLocalSearchFilter
diff --git a/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter.html b/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter.html index 60619b70ac..fa9fd92f55 100644 --- a/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter.html +++ b/docs/cpp_routing/classoperations__research_1_1CPFeasibilityFilter.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -85,7 +56,6 @@
CPFeasibilityFilter
@@ -137,8 +107,6 @@ Public Member Functions   bool FindIndex (IntVar *const var, int64 *index) const   -virtual void InjectObjectiveValue (int64 objective_value) -  void AddVars (const std::vector< IntVar * > &vars)  Add variables to "track" to the filter. More...
  @@ -163,21 +131,12 @@ Public Member Functions Protected Member Functions void SynchronizeOnAssignment (const Assignment *assignment)   -bool CanPropagateObjectiveValue () const -  -void PropagateObjectiveValue (int64 objective_value) -  - - - -

-Protected Attributes

int64 injected_objective_value_
 

Detailed Description

This filter accepts deltas for which the assignment satisfies the constraints of the Solver.

This is verified by keeping an internal copy of the assignment with all Next vars and their updated values, and calling RestoreAssignment() on the assignment+delta. exception of Next Vars (woud fail on large instances). WARNING: In the case of mandatory nodes, when all vehicles are currently being used in the solution but uninserted nodes still remain, this filter will reject the solution, even if the node could be inserted on one of these routes, because all Next vars of vehicle starts are already instantiated.

-

Definition at line 3260 of file routing.h.

+

Definition at line 3259 of file routing.h.

Constructor & Destructor Documentation

◆ CPFeasibilityFilter()

@@ -228,7 +187,7 @@ Protected Attributes
-

Definition at line 3263 of file routing.h.

+

Definition at line 3262 of file routing.h.

@@ -312,33 +271,6 @@ Protected Attributes

Add variables to "track" to the filter.

-
-
- -

◆ CanPropagateObjectiveValue()

- -
-
- - - - - -
- - - - - - - -
bool CanPropagateObjectiveValue () const
-
-inlineprotectedinherited
-
- -

Definition at line 1591 of file constraint_solveri.h.

-
@@ -366,7 +298,7 @@ Protected Attributes

Reimplemented from BaseObject.

-

Definition at line 3264 of file routing.h.

+

Definition at line 3263 of file routing.h.

@@ -404,7 +336,7 @@ Protected Attributes
-

Definition at line 1564 of file constraint_solveri.h.

+

Definition at line 1562 of file constraint_solveri.h.

@@ -468,34 +400,6 @@ Protected Attributes

Definition at line 1514 of file constraint_solveri.h.

-
-
- -

◆ InjectObjectiveValue()

- -
-
- - - - - -
- - - - - - - - -
virtual void InjectObjectiveValue (int64 objective_value)
-
-inlinevirtualinherited
-
- -

Definition at line 1573 of file constraint_solveri.h.

-
@@ -551,7 +455,7 @@ Protected Attributes
-

Definition at line 1585 of file constraint_solveri.h.

+

Definition at line 1579 of file constraint_solveri.h.

@@ -581,34 +485,6 @@ Protected Attributes

Reimplemented from IntVarLocalSearchFilter.

-
-
- -

◆ PropagateObjectiveValue()

- -
-
- - - - - -
- - - - - - - - -
void PropagateObjectiveValue (int64 objective_value)
-
-inlineprotectedinherited
-
- -

Definition at line 1594 of file constraint_solveri.h.

-
@@ -634,7 +510,7 @@ Protected Attributes
-

Definition at line 1579 of file constraint_solveri.h.

+

Definition at line 1573 of file constraint_solveri.h.

@@ -729,7 +605,7 @@ Protected Attributes
-

Definition at line 1581 of file constraint_solveri.h.

+

Definition at line 1575 of file constraint_solveri.h.

@@ -757,32 +633,7 @@ Protected Attributes
-

Definition at line 1580 of file constraint_solveri.h.

- -
-
-

Member Data Documentation

- -

◆ injected_objective_value_

- -
-
- - - - - -
- - - - -
int64 injected_objective_value_
-
-protectedinherited
-
- -

Definition at line 1599 of file constraint_solveri.h.

+

Definition at line 1574 of file constraint_solveri.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod0-members.html b/docs/cpp_routing/classoperations__research_1_1CallMethod0-members.html index 9938b46d9c..19c2901836 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod0-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod0-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod0.html b/docs/cpp_routing/classoperations__research_1_1CallMethod0.html index fe18105f11..7be64fb652 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod0.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod0.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod1-members.html b/docs/cpp_routing/classoperations__research_1_1CallMethod1-members.html index 6182d130c1..16ee9fb84f 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod1-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod1-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod1.html b/docs/cpp_routing/classoperations__research_1_1CallMethod1.html index 14a5d57df1..db76971f59 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod1.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod1.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod2-members.html b/docs/cpp_routing/classoperations__research_1_1CallMethod2-members.html index da5a8bf5e9..0eaf01942c 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod2-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod2-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod2.html b/docs/cpp_routing/classoperations__research_1_1CallMethod2.html index d5b3fd12cd..b86d0a051a 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod2.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod2.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod3-members.html b/docs/cpp_routing/classoperations__research_1_1CallMethod3-members.html index 3df926c627..9f33042387 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod3-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod3-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CallMethod3.html b/docs/cpp_routing/classoperations__research_1_1CallMethod3.html index e5a2b8aa74..e54047c11a 100644 --- a/docs/cpp_routing/classoperations__research_1_1CallMethod3.html +++ b/docs/cpp_routing/classoperations__research_1_1CallMethod3.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CastConstraint-members.html b/docs/cpp_routing/classoperations__research_1_1CastConstraint-members.html index 03ef6ba3af..c72d7b65a6 100644 --- a/docs/cpp_routing/classoperations__research_1_1CastConstraint-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CastConstraint-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CastConstraint.html b/docs/cpp_routing/classoperations__research_1_1CastConstraint.html index b06c7ebdca..b07c15e3ec 100644 --- a/docs/cpp_routing/classoperations__research_1_1CastConstraint.html +++ b/docs/cpp_routing/classoperations__research_1_1CastConstraint.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -194,7 +165,7 @@ Protected Attributes

Cast constraints are special channeling constraints designed to keep a variable in sync with an expression.

They are created internally when Var() is called on a subclass of IntExpr.

-

Definition at line 3563 of file constraint_solver.h.

+

Definition at line 3552 of file constraint_solver.h.

Constructor & Destructor Documentation

◆ CastConstraint()

@@ -230,7 +201,7 @@ Protected Attributes
-

Definition at line 3565 of file constraint_solver.h.

+

Definition at line 3554 of file constraint_solver.h.

@@ -257,7 +228,7 @@ Protected Attributes
-

Definition at line 3569 of file constraint_solver.h.

+

Definition at line 3558 of file constraint_solver.h.

@@ -403,7 +374,7 @@ Protected Attributes

This method pushes the demon onto the propagation queue.

It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

-

Definition at line 3135 of file constraint_solver.h.

+

Definition at line 3124 of file constraint_solver.h.

@@ -431,7 +402,7 @@ Protected Attributes
-

Definition at line 3136 of file constraint_solver.h.

+

Definition at line 3125 of file constraint_solver.h.

@@ -487,7 +458,7 @@ Protected Attributes

This method freezes the propagation queue.

It is useful when you need to apply multiple modifications at once.

-

Definition at line 3126 of file constraint_solver.h.

+

Definition at line 3115 of file constraint_solver.h.

@@ -685,7 +656,7 @@ Protected Attributes

This method clears the failure callback.

-

Definition at line 3149 of file constraint_solver.h.

+

Definition at line 3138 of file constraint_solver.h.

@@ -713,7 +684,7 @@ Protected Attributes
-

Definition at line 3143 of file constraint_solver.h.

+

Definition at line 3132 of file constraint_solver.h.

@@ -769,7 +740,7 @@ Protected Attributes

Shortcut for variable cleaner.

-

Definition at line 3152 of file constraint_solver.h.

+

Definition at line 3141 of file constraint_solver.h.

@@ -796,7 +767,7 @@ Protected Attributes
-

Definition at line 3122 of file constraint_solver.h.

+

Definition at line 3111 of file constraint_solver.h.

@@ -823,7 +794,7 @@ Protected Attributes
-

Definition at line 3571 of file constraint_solver.h.

+

Definition at line 3560 of file constraint_solver.h.

@@ -853,7 +824,7 @@ Protected Attributes

This method unfreezes the propagation queue.

All modifications that happened when the queue was frozen will be processed.

-

Definition at line 3130 of file constraint_solver.h.

+

Definition at line 3119 of file constraint_solver.h.

@@ -906,7 +877,7 @@ Protected Attributes
-

Definition at line 3574 of file constraint_solver.h.

+

Definition at line 3563 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1ChangeValue-members.html b/docs/cpp_routing/classoperations__research_1_1ChangeValue-members.html index 8dd36d2b00..0a34d07a71 100644 --- a/docs/cpp_routing/classoperations__research_1_1ChangeValue-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ChangeValue-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ChangeValue.html b/docs/cpp_routing/classoperations__research_1_1ChangeValue.html index 27f5201182..34d9231cdf 100644 --- a/docs/cpp_routing/classoperations__research_1_1ChangeValue.html +++ b/docs/cpp_routing/classoperations__research_1_1ChangeValue.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -440,9 +411,9 @@ Protected Attributes
-

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

+

Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

-

Definition at line 3099 of file constraint_solver.h.

+

Definition at line 3088 of file constraint_solver.h.

diff --git a/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder-members.html index 84b86a4bbc..ae0e1170ba 100644 --- a/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder.html index 358371e235..6937383f90 100644 --- a/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1CheapestAdditionFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder-members.html index fc6fa43c11..8b6b6fb5a0 100644 --- a/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder.html index 93376de824..789dd8fab6 100644 --- a/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1CheapestInsertionFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder-members.html index dd3ec82e2e..1f587c3a3f 100644 --- a/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder.html index 37cbd0509f..d473570db9 100644 --- a/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1ChristofidesFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html index d82b8d5cad..bc1b56bcf1 100644 --- a/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html index 051404ec12..650283f4f5 100644 --- a/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1Constraint-members.html b/docs/cpp_routing/classoperations__research_1_1Constraint-members.html index 46de52ad44..01d9b29862 100644 --- a/docs/cpp_routing/classoperations__research_1_1Constraint-members.html +++ b/docs/cpp_routing/classoperations__research_1_1Constraint-members.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
diff --git a/docs/cpp_routing/classoperations__research_1_1Constraint.html b/docs/cpp_routing/classoperations__research_1_1Constraint.html index ba68e6d792..2583fee75c 100644 --- a/docs/cpp_routing/classoperations__research_1_1Constraint.html +++ b/docs/cpp_routing/classoperations__research_1_1Constraint.html @@ -12,47 +12,18 @@ -
-

Reference

-

C++

+

C++ Reference

-

Python

- -

DotNET

- -

Java Documentation

-
@@ -190,7 +161,7 @@ Public Member Functions
  • InitialPropagate() is called once just after Post and performs the initial propagation. The subsequent propagations will be performed by the demons Posted during the post() method.
  • -

    Definition at line 3527 of file constraint_solver.h.

    +

    Definition at line 3516 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ Constraint()

    @@ -216,7 +187,7 @@ Public Member Functions
    -

    Definition at line 3529 of file constraint_solver.h.

    +

    Definition at line 3518 of file constraint_solver.h.

    @@ -243,7 +214,7 @@ Public Member Functions
    -

    Definition at line 3530 of file constraint_solver.h.

    +

    Definition at line 3519 of file constraint_solver.h.

    @@ -389,7 +360,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -417,7 +388,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -473,7 +444,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -655,7 +626,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -683,7 +654,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -739,7 +710,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -766,7 +737,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -796,7 +767,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator-members.html b/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator-members.html index a181bcd4b7..0d412ab7bd 100644 --- a/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator.html b/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator.html index 46efc3f280..b8e14f15c8 100644 --- a/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator.html +++ b/docs/cpp_routing/classoperations__research_1_1CumulBoundsPropagator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1Decision-members.html b/docs/cpp_routing/classoperations__research_1_1Decision-members.html index e33b5bfd4f..f3e6d45319 100644 --- a/docs/cpp_routing/classoperations__research_1_1Decision-members.html +++ b/docs/cpp_routing/classoperations__research_1_1Decision-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1Decision.html b/docs/cpp_routing/classoperations__research_1_1Decision.html index 3d524686b3..93fdbc7258 100644 --- a/docs/cpp_routing/classoperations__research_1_1Decision.html +++ b/docs/cpp_routing/classoperations__research_1_1Decision.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -135,7 +106,7 @@ Public Member Functions

    A Decision represents a choice point in the search tree.

    The two main methods are Apply() to go left, or Refute() to go right.

    -

    Definition at line 3171 of file constraint_solver.h.

    +

    Definition at line 3160 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ Decision()

    @@ -160,7 +131,7 @@ Public Member Functions
    -

    Definition at line 3173 of file constraint_solver.h.

    +

    Definition at line 3162 of file constraint_solver.h.

    @@ -187,7 +158,7 @@ Public Member Functions
    -

    Definition at line 3174 of file constraint_solver.h.

    +

    Definition at line 3163 of file constraint_solver.h.

    @@ -273,7 +244,7 @@ Public Member Functions

    Reimplemented from BaseObject.

    -

    Definition at line 3182 of file constraint_solver.h.

    +

    Definition at line 3171 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1DecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1DecisionBuilder-members.html index 91b8248fb0..c9b245af85 100644 --- a/docs/cpp_routing/classoperations__research_1_1DecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1DecisionBuilder.html index f1e4f27ce6..307343060d 100644 --- a/docs/cpp_routing/classoperations__research_1_1DecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1DecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -146,7 +117,7 @@ Public Member Functions

    A DecisionBuilder is responsible for creating the search tree.

    The important method is Next(), which returns the next decision to execute.

    -

    Definition at line 3211 of file constraint_solver.h.

    +

    Definition at line 3200 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ DecisionBuilder()

    @@ -171,7 +142,7 @@ Public Member Functions
    -

    Definition at line 3213 of file constraint_solver.h.

    +

    Definition at line 3202 of file constraint_solver.h.

    @@ -198,7 +169,7 @@ Public Member Functions
    -

    Definition at line 3214 of file constraint_solver.h.

    +

    Definition at line 3203 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1DecisionVisitor-members.html b/docs/cpp_routing/classoperations__research_1_1DecisionVisitor-members.html index 2e0a076c27..06f8026840 100644 --- a/docs/cpp_routing/classoperations__research_1_1DecisionVisitor-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DecisionVisitor-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DecisionVisitor.html b/docs/cpp_routing/classoperations__research_1_1DecisionVisitor.html index 5e308a143d..f0317445c7 100644 --- a/docs/cpp_routing/classoperations__research_1_1DecisionVisitor.html +++ b/docs/cpp_routing/classoperations__research_1_1DecisionVisitor.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -141,7 +112,7 @@ Public Member Functions

    A DecisionVisitor is used to inspect a decision.

    It contains virtual methods for all type of 'declared' decisions.

    -

    Definition at line 3192 of file constraint_solver.h.

    +

    Definition at line 3181 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ DecisionVisitor()

    @@ -166,7 +137,7 @@ Public Member Functions
    -

    Definition at line 3194 of file constraint_solver.h.

    +

    Definition at line 3183 of file constraint_solver.h.

    @@ -193,7 +164,7 @@ Public Member Functions
    -

    Definition at line 3195 of file constraint_solver.h.

    +

    Definition at line 3184 of file constraint_solver.h.

    @@ -221,9 +192,9 @@ Public Member Functions
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0-members.html b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0-members.html index 318799b142..9d50c4ff95 100644 --- a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0.html b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0.html index 7046179eeb..e26a2d1e5e 100644 --- a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0.html +++ b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod0.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1-members.html b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1-members.html index 4f660b8d82..6ebbc23037 100644 --- a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1.html b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1.html index b6719bc8d4..ee7ac7afa7 100644 --- a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1.html +++ b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod1.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2-members.html b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2-members.html index c76bc2fd40..b6d5bb67b5 100644 --- a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2.html b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2.html index 0a810e0b3b..e2061eae88 100644 --- a/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2.html +++ b/docs/cpp_routing/classoperations__research_1_1DelayedCallMethod2.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1Demon-members.html b/docs/cpp_routing/classoperations__research_1_1Demon-members.html index 9d6437b1f3..19871c307b 100644 --- a/docs/cpp_routing/classoperations__research_1_1Demon-members.html +++ b/docs/cpp_routing/classoperations__research_1_1Demon-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1Demon.html b/docs/cpp_routing/classoperations__research_1_1Demon.html index 80930054ca..53533a69b8 100644 --- a/docs/cpp_routing/classoperations__research_1_1Demon.html +++ b/docs/cpp_routing/classoperations__research_1_1Demon.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -155,7 +126,7 @@ Friends
  • priority() returns its priority. Standard priorities are slow, normal or fast. "immediate" is reserved for variables and is treated separately.
  • -

    Definition at line 3244 of file constraint_solver.h.

    +

    Definition at line 3233 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ Demon()

    @@ -183,7 +154,7 @@ Friends

    This indicates the priority of a demon.

    Immediate demons are treated separately and corresponds to variables.

    -

    Definition at line 3248 of file constraint_solver.h.

    +

    Definition at line 3237 of file constraint_solver.h.

    @@ -210,7 +181,7 @@ Friends
    -

    Definition at line 3249 of file constraint_solver.h.

    +

    Definition at line 3238 of file constraint_solver.h.

    @@ -365,7 +336,7 @@ Friends
    -

    Definition at line 3269 of file constraint_solver.h.

    +

    Definition at line 3258 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore-members.html b/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore-members.html index c5fe27fd29..c229f9bff6 100644 --- a/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore.html b/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore.html index ea223051c6..573f95e972 100644 --- a/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore.html +++ b/docs/cpp_routing/classoperations__research_1_1DimensionCumulOptimizerCore.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint-members.html b/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint-members.html index 9e4084d8c1..c3cc6fb61a 100644 --- a/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint.html b/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint.html index 18063b9db0..2df1f6ca44 100644 --- a/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint.html +++ b/docs/cpp_routing/classoperations__research_1_1DisjunctiveConstraint.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -203,7 +174,7 @@ Protected Attributes

    Detailed Description

    -

    Definition at line 5241 of file constraint_solver.h.

    +

    Definition at line 5230 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ DisjunctiveConstraint()

    @@ -431,7 +402,7 @@ Protected Attributes

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -459,7 +430,7 @@ Protected Attributes
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -515,7 +486,7 @@ Protected Attributes

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -765,7 +736,7 @@ Protected Attributes

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -793,7 +764,7 @@ Protected Attributes
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -849,7 +820,7 @@ Protected Attributes

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -897,7 +868,7 @@ Protected Attributes
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -985,7 +956,7 @@ Protected Attributes
    -

    Definition at line 5257 of file constraint_solver.h.

    +

    Definition at line 5246 of file constraint_solver.h.

    @@ -1015,7 +986,7 @@ Protected Attributes

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    @@ -1068,7 +1039,7 @@ Protected Attributes
    -

    Definition at line 5270 of file constraint_solver.h.

    +

    Definition at line 5259 of file constraint_solver.h.

    @@ -1092,7 +1063,7 @@ Protected Attributes
    -

    Definition at line 5271 of file constraint_solver.h.

    +

    Definition at line 5260 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator-members.html b/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator-members.html index 3cde3de40c..3c62796e13 100644 --- a/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator.html b/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator.html index 5a9ac56bb5..a1201ac43c 100644 --- a/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator.html +++ b/docs/cpp_routing/classoperations__research_1_1DisjunctivePropagator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html index 4c7988b712..4efac8a9eb 100644 --- a/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html index a01cc3d1ab..0320942f9d 100644 --- a/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip-members.html b/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip-members.html index 03cab755dc..ad657f0784 100644 --- a/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip.html b/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip.html index bf412bff92..228fcd91b5 100644 --- a/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip.html +++ b/docs/cpp_routing/classoperations__research_1_1ExchangeSubtrip.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy-members.html b/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy-members.html index 014c30d671..c62b54f37b 100644 --- a/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy-members.html +++ b/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy.html b/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy.html index 587200204d..ca4d0ccea2 100644 --- a/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy.html +++ b/docs/cpp_routing/classoperations__research_1_1FirstSolutionStrategy.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html index 4a2c533298..04d0fab877 100644 --- a/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html index 022259f4e4..2cf7fa0ddf 100644 --- a/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer-members.html b/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer-members.html index 54eb4b57c9..392f5f45f7 100644 --- a/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer-members.html +++ b/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer.html b/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer.html index dc2c4bca7e..5e61f0e6cc 100644 --- a/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer.html +++ b/docs/cpp_routing/classoperations__research_1_1GlobalDimensionCumulOptimizer.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint-members.html b/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint-members.html index db321aafe7..049040317f 100644 --- a/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint-members.html +++ b/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint.html b/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint.html index 29a3ec314f..ec9c7e8a9f 100644 --- a/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint.html +++ b/docs/cpp_routing/classoperations__research_1_1GlobalVehicleBreaksConstraint.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -353,7 +324,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -381,7 +352,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -437,7 +408,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -635,7 +606,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -663,7 +634,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -719,7 +690,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -746,7 +717,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -776,7 +747,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator-members.html b/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator-members.html index 8b3fb670e1..55b77c1a88 100644 --- a/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator.html b/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator.html index 7cf87925c6..c9bc756b9e 100644 --- a/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1IndexPairSwapActiveOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1InitAndGetValues-members.html b/docs/cpp_routing/classoperations__research_1_1InitAndGetValues-members.html index ab9d66085e..4a1d43dee1 100644 --- a/docs/cpp_routing/classoperations__research_1_1InitAndGetValues-members.html +++ b/docs/cpp_routing/classoperations__research_1_1InitAndGetValues-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1InitAndGetValues.html b/docs/cpp_routing/classoperations__research_1_1InitAndGetValues.html index 66b9a7b13e..baa38061dc 100644 --- a/docs/cpp_routing/classoperations__research_1_1InitAndGetValues.html +++ b/docs/cpp_routing/classoperations__research_1_1InitAndGetValues.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -115,7 +86,7 @@ Public Member Functions

    See the code snippet above IntVarIterator.

    It contains DEBUG_MODE-enabled code that DCHECKs that the same iterator instance isn't being iterated on in multiple places simultaneously.

    -

    Definition at line 3884 of file constraint_solver.h.

    +

    Definition at line 3873 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ InitAndGetValues()

    @@ -141,7 +112,7 @@ Public Member Functions
    -

    Definition at line 3886 of file constraint_solver.h.

    +

    Definition at line 3875 of file constraint_solver.h.

    @@ -169,7 +140,7 @@ Public Member Functions
    -

    Definition at line 3891 of file constraint_solver.h.

    +

    Definition at line 3880 of file constraint_solver.h.

    @@ -196,7 +167,7 @@ Public Member Functions
    -

    Definition at line 3898 of file constraint_solver.h.

    +

    Definition at line 3887 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntExpr-members.html b/docs/cpp_routing/classoperations__research_1_1IntExpr-members.html index 80379647cf..c9c5be236c 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntExpr-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntExpr-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntExpr.html b/docs/cpp_routing/classoperations__research_1_1IntExpr.html index d926c45e15..cbc142ab06 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntExpr.html +++ b/docs/cpp_routing/classoperations__research_1_1IntExpr.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -213,7 +184,7 @@ Public Member Functions
  • casting it into a variable (instance of IntVar)
  • -

    Definition at line 3779 of file constraint_solver.h.

    +

    Definition at line 3768 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ IntExpr()

    @@ -239,7 +210,7 @@ Public Member Functions
    -

    Definition at line 3781 of file constraint_solver.h.

    +

    Definition at line 3770 of file constraint_solver.h.

    @@ -266,7 +237,7 @@ Public Member Functions
    -

    Definition at line 3782 of file constraint_solver.h.

    +

    Definition at line 3771 of file constraint_solver.h.

    @@ -357,7 +328,7 @@ Public Member Functions

    Reimplemented in BooleanVar.

    -

    Definition at line 3805 of file constraint_solver.h.

    +

    Definition at line 3794 of file constraint_solver.h.

    @@ -388,7 +359,7 @@ Public Member Functions

    Reimplemented in Pack, Assignment, SequenceVar, Constraint, and BooleanVar.

    -

    Definition at line 3115 of file constraint_solver.h.

    +

    Definition at line 3104 of file constraint_solver.h.

    @@ -445,7 +416,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -473,7 +444,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -529,7 +500,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -587,7 +558,7 @@ Public Member Functions

    Reimplemented in IntVar.

    -

    Definition at line 3808 of file constraint_solver.h.

    +

    Definition at line 3797 of file constraint_solver.h.

    @@ -708,7 +679,7 @@ Public Member Functions

    By default calls Min() and Max(), but can be redefined when Min and Max code can be factorized.

    -

    Definition at line 3791 of file constraint_solver.h.

    +

    Definition at line 3780 of file constraint_solver.h.

    @@ -737,7 +708,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -765,7 +736,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -821,7 +792,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -919,7 +890,7 @@ Public Member Functions

    Reimplemented in BooleanVar.

    -

    Definition at line 3796 of file constraint_solver.h.

    +

    Definition at line 3785 of file constraint_solver.h.

    @@ -949,7 +920,7 @@ Public Member Functions

    This method sets the value of the expression.

    -

    Definition at line 3802 of file constraint_solver.h.

    +

    Definition at line 3791 of file constraint_solver.h.

    @@ -976,7 +947,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -1006,7 +977,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    @@ -1116,7 +1087,7 @@ Public Member Functions

    Attach a demon that will watch the min or the max of the expression.

    -

    Definition at line 3822 of file constraint_solver.h.

    +

    Definition at line 3811 of file constraint_solver.h.

    @@ -1146,7 +1117,7 @@ Public Member Functions

    Attach a demon that will watch the min or the max of the expression.

    -

    Definition at line 3828 of file constraint_solver.h.

    +

    Definition at line 3817 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVar-members.html b/docs/cpp_routing/classoperations__research_1_1IntVar-members.html index f8494eb5c5..638bfd6002 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVar-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVar-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVar.html b/docs/cpp_routing/classoperations__research_1_1IntVar.html index 74609f13bd..ac0f8dd9d8 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVar.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVar.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -275,7 +246,7 @@ Public Member Functions

    The class IntVar is a subset of IntExpr.

    In addition to the IntExpr protocol, it offers persistence, removing values from the domains, and a finer model for events.

    -

    Definition at line 3940 of file constraint_solver.h.

    +

    Definition at line 3929 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ IntVar() [1/2]

    @@ -354,7 +325,7 @@ Public Member Functions
    -

    Definition at line 3944 of file constraint_solver.h.

    +

    Definition at line 3933 of file constraint_solver.h.

    @@ -445,7 +416,7 @@ Public Member Functions

    Reimplemented in BooleanVar.

    -

    Definition at line 3805 of file constraint_solver.h.

    +

    Definition at line 3794 of file constraint_solver.h.

    @@ -506,7 +477,7 @@ Public Member Functions

    Reimplemented in Pack, Assignment, SequenceVar, Constraint, and BooleanVar.

    -

    Definition at line 3115 of file constraint_solver.h.

    +

    Definition at line 3104 of file constraint_solver.h.

    @@ -563,7 +534,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -591,7 +562,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -647,7 +618,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -703,7 +674,7 @@ Public Member Functions

    Returns the index of the variable.

    -

    Definition at line 4034 of file constraint_solver.h.

    +

    Definition at line 4023 of file constraint_solver.h.

    @@ -848,7 +819,7 @@ Public Member Functions

    Reimplemented from IntExpr.

    -

    Definition at line 3946 of file constraint_solver.h.

    +

    Definition at line 3935 of file constraint_solver.h.

    @@ -1085,7 +1056,7 @@ Public Member Functions

    By default calls Min() and Max(), but can be redefined when Min and Max code can be factorized.

    -

    Definition at line 3791 of file constraint_solver.h.

    +

    Definition at line 3780 of file constraint_solver.h.

    @@ -1213,7 +1184,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -1241,7 +1212,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -1297,7 +1268,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -1395,7 +1366,7 @@ Public Member Functions

    Reimplemented in BooleanVar.

    -

    Definition at line 3796 of file constraint_solver.h.

    +

    Definition at line 3785 of file constraint_solver.h.

    @@ -1425,7 +1396,7 @@ Public Member Functions

    This method sets the value of the expression.

    -

    Definition at line 3802 of file constraint_solver.h.

    +

    Definition at line 3791 of file constraint_solver.h.

    @@ -1509,7 +1480,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -1539,7 +1510,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    @@ -1600,7 +1571,7 @@ Public Member Functions

    Implements IntExpr.

    -

    Definition at line 3947 of file constraint_solver.h.

    +

    Definition at line 3936 of file constraint_solver.h.

    @@ -1716,7 +1687,7 @@ Public Member Functions

    This method attaches a closure that will be awakened when the variable is bound.

    -

    Definition at line 3971 of file constraint_solver.h.

    +

    Definition at line 3960 of file constraint_solver.h.

    @@ -1746,7 +1717,7 @@ Public Member Functions

    This method attaches an action that will be awakened when the variable is bound.

    -

    Definition at line 3978 of file constraint_solver.h.

    +

    Definition at line 3967 of file constraint_solver.h.

    @@ -1806,7 +1777,7 @@ Public Member Functions

    This method attaches a closure that will watch any domain modification of the domain of the variable.

    -

    Definition at line 3988 of file constraint_solver.h.

    +

    Definition at line 3977 of file constraint_solver.h.

    @@ -1836,7 +1807,7 @@ Public Member Functions

    This method attaches an action that will watch any domain modification of the domain of the variable.

    -

    Definition at line 3994 of file constraint_solver.h.

    +

    Definition at line 3983 of file constraint_solver.h.

    @@ -1896,7 +1867,7 @@ Public Member Functions

    Attach a demon that will watch the min or the max of the expression.

    -

    Definition at line 3822 of file constraint_solver.h.

    +

    Definition at line 3811 of file constraint_solver.h.

    @@ -1926,7 +1897,7 @@ Public Member Functions

    Attach a demon that will watch the min or the max of the expression.

    -

    Definition at line 3828 of file constraint_solver.h.

    +

    Definition at line 3817 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarElement-members.html b/docs/cpp_routing/classoperations__research_1_1IntVarElement-members.html index 2ec5ad6f9b..02475e5ada 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarElement-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarElement-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarElement.html b/docs/cpp_routing/classoperations__research_1_1IntVarElement.html index 213247ca52..27d9a10a3b 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarElement.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarElement.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -163,7 +134,7 @@ Public Member Functions

    Detailed Description

    -

    Definition at line 4553 of file constraint_solver.h.

    +

    Definition at line 4542 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ IntVarElement() [1/2]

    @@ -232,7 +203,7 @@ Public Member Functions
    -

    Definition at line 4545 of file constraint_solver.h.

    +

    Definition at line 4534 of file constraint_solver.h.

    @@ -259,7 +230,7 @@ Public Member Functions
    -

    Definition at line 4547 of file constraint_solver.h.

    +

    Definition at line 4536 of file constraint_solver.h.

    @@ -286,7 +257,7 @@ Public Member Functions
    -

    Definition at line 4582 of file constraint_solver.h.

    +

    Definition at line 4571 of file constraint_solver.h.

    @@ -348,7 +319,7 @@ Public Member Functions
    -

    Definition at line 4546 of file constraint_solver.h.

    +

    Definition at line 4535 of file constraint_solver.h.

    @@ -410,7 +381,7 @@ Public Member Functions
    -

    Definition at line 4575 of file constraint_solver.h.

    +

    Definition at line 4564 of file constraint_solver.h.

    @@ -437,7 +408,7 @@ Public Member Functions
    -

    Definition at line 4573 of file constraint_solver.h.

    +

    Definition at line 4562 of file constraint_solver.h.

    @@ -465,7 +436,7 @@ Public Member Functions
    -

    Definition at line 4594 of file constraint_solver.h.

    +

    Definition at line 4583 of file constraint_solver.h.

    @@ -528,7 +499,7 @@ Public Member Functions
    -

    Definition at line 4565 of file constraint_solver.h.

    +

    Definition at line 4554 of file constraint_solver.h.

    @@ -556,7 +527,7 @@ Public Member Functions
    -

    Definition at line 4576 of file constraint_solver.h.

    +

    Definition at line 4565 of file constraint_solver.h.

    @@ -584,7 +555,7 @@ Public Member Functions
    -

    Definition at line 4574 of file constraint_solver.h.

    +

    Definition at line 4563 of file constraint_solver.h.

    @@ -622,7 +593,7 @@ Public Member Functions
    -

    Definition at line 4583 of file constraint_solver.h.

    +

    Definition at line 4572 of file constraint_solver.h.

    @@ -650,7 +621,7 @@ Public Member Functions
    -

    Definition at line 4587 of file constraint_solver.h.

    +

    Definition at line 4576 of file constraint_solver.h.

    @@ -677,7 +648,7 @@ Public Member Functions
    -

    Definition at line 4561 of file constraint_solver.h.

    +

    Definition at line 4550 of file constraint_solver.h.

    @@ -704,7 +675,7 @@ Public Member Functions
    -

    Definition at line 4577 of file constraint_solver.h.

    +

    Definition at line 4566 of file constraint_solver.h.

    @@ -731,7 +702,7 @@ Public Member Functions
    -

    Definition at line 4560 of file constraint_solver.h.

    +

    Definition at line 4549 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder-members.html index 7973debef7..d694f8122e 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder.html index 0c5ea10a33..bdff3b3d1e 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarIterator-members.html b/docs/cpp_routing/classoperations__research_1_1IntVarIterator-members.html index 32491e3548..a5b3a4d848 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarIterator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarIterator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarIterator.html b/docs/cpp_routing/classoperations__research_1_1IntVarIterator.html index 51669a55b9..81138c2e68 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarIterator.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarIterator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -137,7 +108,7 @@ Public Member Functions

    The class Iterator has two direct subclasses.

    HoleIterators iterates over all holes, that is value removed between the current min and max of the variable since the last time the variable was processed in the queue. DomainIterators iterates over all elements of the variable domain. Both iterators are not robust to domain changes. Hole iterators can also report values outside the current min and max of the variable. HoleIterators should only be called from a demon attached to the variable that has created this iterator. IntVar* current_var; std::unique_ptr<IntVarIterator> it(current_var->MakeHoleIterator(false)); for (const int64 hole : InitAndGetValues(it)) { /// use the hole }

    -

    Definition at line 3857 of file constraint_solver.h.

    +

    Definition at line 3846 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ ~IntVarIterator()

    @@ -162,7 +133,7 @@ Public Member Functions
    -

    Definition at line 3859 of file constraint_solver.h.

    +

    Definition at line 3848 of file constraint_solver.h.

    @@ -194,7 +165,7 @@ Public Member Functions

    Reimplemented from BaseObject.

    -

    Definition at line 3874 of file constraint_solver.h.

    +

    Definition at line 3863 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter-members.html b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter-members.html index f3cec943fa..d3a24909c7 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -92,26 +63,21 @@ Accept(const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max)=0LocalSearchFilterpure virtual AddVars(const std::vector< IntVar * > &vars)IntVarLocalSearchFilter BaseObject()BaseObjectinline - CanPropagateObjectiveValue() constIntVarLocalSearchFilterinlineprotected - DebugString() constBaseObjectinlinevirtual - FindIndex(IntVar *const var, int64 *index) constIntVarLocalSearchFilterinline - GetAcceptedObjectiveValue() constLocalSearchFilterinlinevirtual - GetSynchronizedObjectiveValue() constLocalSearchFilterinlinevirtual - injected_objective_value_IntVarLocalSearchFilterprotected - InjectObjectiveValue(int64 objective_value)IntVarLocalSearchFilterinlinevirtual - IntVarLocalSearchFilter(const std::vector< IntVar * > &vars, Solver::ObjectiveWatcher objective_callback)IntVarLocalSearchFilter + DebugString() constBaseObjectinlinevirtual + FindIndex(IntVar *const var, int64 *index) constIntVarLocalSearchFilterinline + GetAcceptedObjectiveValue() constLocalSearchFilterinlinevirtual + GetSynchronizedObjectiveValue() constLocalSearchFilterinlinevirtual IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)IntVarLocalSearchFilterexplicit IsIncremental() constLocalSearchFilterinlinevirtual IsVarSynced(int index) constIntVarLocalSearchFilterinline OnSynchronize(const Assignment *delta)IntVarLocalSearchFilterinlineprotectedvirtual - PropagateObjectiveValue(int64 objective_value)IntVarLocalSearchFilterinlineprotected - Size() constIntVarLocalSearchFilterinline - Synchronize(const Assignment *assignment, const Assignment *delta) overrideIntVarLocalSearchFiltervirtual - SynchronizeOnAssignment(const Assignment *assignment)IntVarLocalSearchFilterprotected - Value(int index) constIntVarLocalSearchFilterinline - Var(int index) constIntVarLocalSearchFilterinline - ~BaseObject()BaseObjectinlinevirtual - ~IntVarLocalSearchFilter() overrideIntVarLocalSearchFilter + Size() constIntVarLocalSearchFilterinline + Synchronize(const Assignment *assignment, const Assignment *delta) overrideIntVarLocalSearchFiltervirtual + SynchronizeOnAssignment(const Assignment *assignment)IntVarLocalSearchFilterprotected + Value(int index) constIntVarLocalSearchFilterinline + Var(int index) constIntVarLocalSearchFilterinline + ~BaseObject()BaseObjectinlinevirtual + ~IntVarLocalSearchFilter() overrideIntVarLocalSearchFilter
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter.html b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter.html index c6b6c05cb6..462d35736a 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchFilter.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -85,7 +56,6 @@
    IntVarLocalSearchFilterabstract
    @@ -118,8 +88,6 @@ Collaboration diagram for IntVarLocalSearchFilter:
    - - @@ -129,8 +97,6 @@ Public Member Functions - - @@ -162,50 +128,13 @@ Protected Member Functions - - - - -

    Public Member Functions

     IntVarLocalSearchFilter (const std::vector< IntVar * > &vars, Solver::ObjectiveWatcher objective_callback)
     
     IntVarLocalSearchFilter (const std::vector< IntVar * > &vars)
     
     ~IntVarLocalSearchFilter () override
     
    bool FindIndex (IntVar *const var, int64 *index) const
     
    virtual void InjectObjectiveValue (int64 objective_value)
     
    void AddVars (const std::vector< IntVar * > &vars)
     Add variables to "track" to the filter. More...
     
     
    void SynchronizeOnAssignment (const Assignment *assignment)
     
    bool CanPropagateObjectiveValue () const
     
    void PropagateObjectiveValue (int64 objective_value)
     
    - - -

    -Protected Attributes

    int64 injected_objective_value_
     

    Detailed Description

    Definition at line 1553 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    - -

    ◆ IntVarLocalSearchFilter() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    IntVarLocalSearchFilter (const std::vector< IntVar * > & vars,
    Solver::ObjectiveWatcher objective_callback 
    )
    -
    - -
    -
    -

    ◆ IntVarLocalSearchFilter() [2/2]

    +

    ◆ IntVarLocalSearchFilter()

    @@ -327,33 +256,6 @@ Protected Attributes

    Add variables to "track" to the filter.

    -
    -
    - -

    ◆ CanPropagateObjectiveValue()

    - -
    -
    - - - - - -
    - - - - - - - -
    bool CanPropagateObjectiveValue () const
    -
    -inlineprotected
    -
    - -

    Definition at line 1591 of file constraint_solveri.h.

    -
    @@ -379,9 +281,9 @@ Protected Attributes
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    @@ -419,7 +321,7 @@ Protected Attributes
    -

    Definition at line 1564 of file constraint_solveri.h.

    +

    Definition at line 1562 of file constraint_solveri.h.

    @@ -483,34 +385,6 @@ Protected Attributes

    Definition at line 1514 of file constraint_solveri.h.

    -
    -
    - -

    ◆ InjectObjectiveValue()

    - -
    -
    - - - - - -
    - - - - - - - - -
    virtual void InjectObjectiveValue (int64 objective_value)
    -
    -inlinevirtual
    -
    - -

    Definition at line 1573 of file constraint_solveri.h.

    -
    @@ -566,7 +440,7 @@ Protected Attributes
    -

    Definition at line 1585 of file constraint_solveri.h.

    +

    Definition at line 1579 of file constraint_solveri.h.

    @@ -596,35 +470,7 @@ Protected Attributes

    Reimplemented in CPFeasibilityFilter, and BasePathFilter.

    -

    Definition at line 1588 of file constraint_solveri.h.

    - -
    -
    - -

    ◆ PropagateObjectiveValue()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void PropagateObjectiveValue (int64 objective_value)
    -
    -inlineprotected
    -
    - -

    Definition at line 1594 of file constraint_solveri.h.

    +

    Definition at line 1582 of file constraint_solveri.h.

    @@ -651,7 +497,7 @@ Protected Attributes
    -

    Definition at line 1579 of file constraint_solveri.h.

    +

    Definition at line 1573 of file constraint_solveri.h.

    @@ -746,7 +592,7 @@ Protected Attributes
    -

    Definition at line 1581 of file constraint_solveri.h.

    +

    Definition at line 1575 of file constraint_solveri.h.

    @@ -774,32 +620,7 @@ Protected Attributes
    -

    Definition at line 1580 of file constraint_solveri.h.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ injected_objective_value_

    - -
    -
    - - - - - -
    - - - - -
    int64 injected_objective_value_
    -
    -protected
    -
    - -

    Definition at line 1599 of file constraint_solveri.h.

    +

    Definition at line 1574 of file constraint_solveri.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler-members.html b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler-members.html index 3aae02c866..d7396cccb3 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler.html b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler.html index 9d0e5b8018..148dcd7263 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchHandler.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator-members.html b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator-members.html index afb0be4a09..3f7109e1c2 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator.html b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator.html index ef29222ff6..7d06ca5804 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1IntVarLocalSearchOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -489,9 +460,9 @@ Protected Attributes
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntervalVar-members.html b/docs/cpp_routing/classoperations__research_1_1IntervalVar-members.html index 9f9ec2acf6..b8749a5f73 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntervalVar-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntervalVar-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntervalVar.html b/docs/cpp_routing/classoperations__research_1_1IntervalVar.html index 4d0a2f7f8c..760e109930 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntervalVar.html +++ b/docs/cpp_routing/classoperations__research_1_1IntervalVar.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -303,7 +274,7 @@ Static Public Attributes

    The main characteristics of an IntervalVar are the start position, duration, and end date. All these characteristics can be queried and set, and demons can be posted on their modifications.

    An important aspect is optionality: an IntervalVar can be performed or not. If unperformed, then it simply does not exist, and its characteristics cannot be accessed any more. An interval var is automatically marked as unperformed when it is not consistent anymore (start greater than end, duration < 0...)

    -

    Definition at line 4296 of file constraint_solver.h.

    +

    Definition at line 4285 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ IntervalVar()

    @@ -339,7 +310,7 @@ Static Public Attributes
    -

    Definition at line 4302 of file constraint_solver.h.

    +

    Definition at line 4291 of file constraint_solver.h.

    @@ -366,7 +337,7 @@ Static Public Attributes
    -

    Definition at line 4306 of file constraint_solver.h.

    +

    Definition at line 4295 of file constraint_solver.h.

    @@ -451,7 +422,7 @@ Static Public Attributes
    -

    Definition at line 4394 of file constraint_solver.h.

    +

    Definition at line 4383 of file constraint_solver.h.

    @@ -482,7 +453,7 @@ Static Public Attributes

    Reimplemented in Pack, Assignment, SequenceVar, Constraint, and BooleanVar.

    -

    Definition at line 3115 of file constraint_solver.h.

    +

    Definition at line 3104 of file constraint_solver.h.

    @@ -693,7 +664,7 @@ Static Public Attributes

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -721,7 +692,7 @@ Static Public Attributes
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -777,7 +748,7 @@ Static Public Attributes

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -831,7 +802,7 @@ Static Public Attributes
    -

    Definition at line 4395 of file constraint_solver.h.

    +

    Definition at line 4384 of file constraint_solver.h.

    @@ -1114,7 +1085,7 @@ Static Public Attributes

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -1223,7 +1194,7 @@ Static Public Attributes
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -1279,7 +1250,7 @@ Static Public Attributes

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -1596,7 +1567,7 @@ Static Public Attributes
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -1706,7 +1677,7 @@ Static Public Attributes

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    @@ -1781,7 +1752,7 @@ Static Public Attributes

    Attaches a closure awakened when anything about this interval changes.

    -

    Definition at line 4413 of file constraint_solver.h.

    +

    Definition at line 4402 of file constraint_solver.h.

    @@ -1811,7 +1782,7 @@ Static Public Attributes

    Attaches an action awakened when anything about this interval changes.

    -

    Definition at line 4418 of file constraint_solver.h.

    +

    Definition at line 4407 of file constraint_solver.h.

    @@ -1865,7 +1836,7 @@ Static Public Attributes
    -

    Definition at line 4354 of file constraint_solver.h.

    +

    Definition at line 4343 of file constraint_solver.h.

    @@ -1893,7 +1864,7 @@ Static Public Attributes
    -

    Definition at line 4358 of file constraint_solver.h.

    +

    Definition at line 4347 of file constraint_solver.h.

    @@ -1947,7 +1918,7 @@ Static Public Attributes
    -

    Definition at line 4345 of file constraint_solver.h.

    +

    Definition at line 4334 of file constraint_solver.h.

    @@ -1975,7 +1946,7 @@ Static Public Attributes
    -

    Definition at line 4349 of file constraint_solver.h.

    +

    Definition at line 4338 of file constraint_solver.h.

    @@ -2029,7 +2000,7 @@ Static Public Attributes
    -

    Definition at line 4381 of file constraint_solver.h.

    +

    Definition at line 4370 of file constraint_solver.h.

    @@ -2057,7 +2028,7 @@ Static Public Attributes
    -

    Definition at line 4385 of file constraint_solver.h.

    +

    Definition at line 4374 of file constraint_solver.h.

    @@ -2111,7 +2082,7 @@ Static Public Attributes
    -

    Definition at line 4372 of file constraint_solver.h.

    +

    Definition at line 4361 of file constraint_solver.h.

    @@ -2139,7 +2110,7 @@ Static Public Attributes
    -

    Definition at line 4376 of file constraint_solver.h.

    +

    Definition at line 4365 of file constraint_solver.h.

    @@ -2193,7 +2164,7 @@ Static Public Attributes
    -

    Definition at line 4401 of file constraint_solver.h.

    +

    Definition at line 4390 of file constraint_solver.h.

    @@ -2221,7 +2192,7 @@ Static Public Attributes
    -

    Definition at line 4405 of file constraint_solver.h.

    +

    Definition at line 4394 of file constraint_solver.h.

    @@ -2275,7 +2246,7 @@ Static Public Attributes
    -

    Definition at line 4327 of file constraint_solver.h.

    +

    Definition at line 4316 of file constraint_solver.h.

    @@ -2303,7 +2274,7 @@ Static Public Attributes
    -

    Definition at line 4331 of file constraint_solver.h.

    +

    Definition at line 4320 of file constraint_solver.h.

    @@ -2357,7 +2328,7 @@ Static Public Attributes
    -

    Definition at line 4318 of file constraint_solver.h.

    +

    Definition at line 4307 of file constraint_solver.h.

    @@ -2385,7 +2356,7 @@ Static Public Attributes
    -

    Definition at line 4322 of file constraint_solver.h.

    +

    Definition at line 4311 of file constraint_solver.h.

    @@ -2412,7 +2383,7 @@ Static Public Attributes

    The largest acceptable value to be returned by EndMax()

    -

    Definition at line 4301 of file constraint_solver.h.

    +

    Definition at line 4290 of file constraint_solver.h.

    @@ -2438,7 +2409,7 @@ Static Public Attributes

    The smallest acceptable value to be returned by StartMin()

    -

    Definition at line 4299 of file constraint_solver.h.

    +

    Definition at line 4288 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1IntervalVarElement-members.html b/docs/cpp_routing/classoperations__research_1_1IntervalVarElement-members.html index cc91475154..000a952ca7 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntervalVarElement-members.html +++ b/docs/cpp_routing/classoperations__research_1_1IntervalVarElement-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1IntervalVarElement.html b/docs/cpp_routing/classoperations__research_1_1IntervalVarElement.html index cd2784aea9..e62177c5ca 100644 --- a/docs/cpp_routing/classoperations__research_1_1IntervalVarElement.html +++ b/docs/cpp_routing/classoperations__research_1_1IntervalVarElement.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -205,7 +176,7 @@ Public Member Functions

    Detailed Description

    -

    Definition at line 4604 of file constraint_solver.h.

    +

    Definition at line 4593 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ IntervalVarElement() [1/2]

    @@ -274,7 +245,7 @@ Public Member Functions
    -

    Definition at line 4545 of file constraint_solver.h.

    +

    Definition at line 4534 of file constraint_solver.h.

    @@ -301,7 +272,7 @@ Public Member Functions
    -

    Definition at line 4547 of file constraint_solver.h.

    +

    Definition at line 4536 of file constraint_solver.h.

    @@ -328,7 +299,7 @@ Public Member Functions
    -

    Definition at line 4682 of file constraint_solver.h.

    +

    Definition at line 4671 of file constraint_solver.h.

    @@ -390,7 +361,7 @@ Public Member Functions
    -

    Definition at line 4546 of file constraint_solver.h.

    +

    Definition at line 4535 of file constraint_solver.h.

    @@ -434,7 +405,7 @@ Public Member Functions
    -

    Definition at line 4625 of file constraint_solver.h.

    +

    Definition at line 4614 of file constraint_solver.h.

    @@ -461,7 +432,7 @@ Public Member Functions
    -

    Definition at line 4624 of file constraint_solver.h.

    +

    Definition at line 4613 of file constraint_solver.h.

    @@ -488,7 +459,7 @@ Public Member Functions
    -

    Definition at line 4626 of file constraint_solver.h.

    +

    Definition at line 4615 of file constraint_solver.h.

    @@ -515,7 +486,7 @@ Public Member Functions
    -

    Definition at line 4631 of file constraint_solver.h.

    +

    Definition at line 4620 of file constraint_solver.h.

    @@ -542,7 +513,7 @@ Public Member Functions
    -

    Definition at line 4630 of file constraint_solver.h.

    +

    Definition at line 4619 of file constraint_solver.h.

    @@ -569,7 +540,7 @@ Public Member Functions
    -

    Definition at line 4632 of file constraint_solver.h.

    +

    Definition at line 4621 of file constraint_solver.h.

    @@ -615,7 +586,7 @@ Public Member Functions
    -

    Definition at line 4688 of file constraint_solver.h.

    +

    Definition at line 4677 of file constraint_solver.h.

    @@ -660,7 +631,7 @@ Public Member Functions
    -

    Definition at line 4637 of file constraint_solver.h.

    +

    Definition at line 4626 of file constraint_solver.h.

    @@ -687,7 +658,7 @@ Public Member Functions
    -

    Definition at line 4636 of file constraint_solver.h.

    +

    Definition at line 4625 of file constraint_solver.h.

    @@ -714,7 +685,7 @@ Public Member Functions
    -

    Definition at line 4638 of file constraint_solver.h.

    +

    Definition at line 4627 of file constraint_solver.h.

    @@ -777,7 +748,7 @@ Public Member Functions
    -

    Definition at line 4653 of file constraint_solver.h.

    +

    Definition at line 4642 of file constraint_solver.h.

    @@ -805,7 +776,7 @@ Public Member Functions
    -

    Definition at line 4652 of file constraint_solver.h.

    +

    Definition at line 4641 of file constraint_solver.h.

    @@ -843,7 +814,7 @@ Public Member Functions
    -

    Definition at line 4654 of file constraint_solver.h.

    +

    Definition at line 4643 of file constraint_solver.h.

    @@ -871,7 +842,7 @@ Public Member Functions
    -

    Definition at line 4658 of file constraint_solver.h.

    +

    Definition at line 4647 of file constraint_solver.h.

    @@ -899,7 +870,7 @@ Public Member Functions
    -

    Definition at line 4663 of file constraint_solver.h.

    +

    Definition at line 4652 of file constraint_solver.h.

    @@ -927,7 +898,7 @@ Public Member Functions
    -

    Definition at line 4662 of file constraint_solver.h.

    +

    Definition at line 4651 of file constraint_solver.h.

    @@ -965,7 +936,7 @@ Public Member Functions
    -

    Definition at line 4664 of file constraint_solver.h.

    +

    Definition at line 4653 of file constraint_solver.h.

    @@ -993,7 +964,7 @@ Public Member Functions
    -

    Definition at line 4668 of file constraint_solver.h.

    +

    Definition at line 4657 of file constraint_solver.h.

    @@ -1021,7 +992,7 @@ Public Member Functions
    -

    Definition at line 4673 of file constraint_solver.h.

    +

    Definition at line 4662 of file constraint_solver.h.

    @@ -1049,7 +1020,7 @@ Public Member Functions
    -

    Definition at line 4672 of file constraint_solver.h.

    +

    Definition at line 4661 of file constraint_solver.h.

    @@ -1087,7 +1058,7 @@ Public Member Functions
    -

    Definition at line 4674 of file constraint_solver.h.

    +

    Definition at line 4663 of file constraint_solver.h.

    @@ -1115,7 +1086,7 @@ Public Member Functions
    -

    Definition at line 4678 of file constraint_solver.h.

    +

    Definition at line 4667 of file constraint_solver.h.

    @@ -1143,7 +1114,7 @@ Public Member Functions
    -

    Definition at line 4643 of file constraint_solver.h.

    +

    Definition at line 4632 of file constraint_solver.h.

    @@ -1171,7 +1142,7 @@ Public Member Functions
    -

    Definition at line 4642 of file constraint_solver.h.

    +

    Definition at line 4631 of file constraint_solver.h.

    @@ -1209,7 +1180,7 @@ Public Member Functions
    -

    Definition at line 4644 of file constraint_solver.h.

    +

    Definition at line 4633 of file constraint_solver.h.

    @@ -1237,7 +1208,7 @@ Public Member Functions
    -

    Definition at line 4648 of file constraint_solver.h.

    +

    Definition at line 4637 of file constraint_solver.h.

    @@ -1264,7 +1235,7 @@ Public Member Functions
    -

    Definition at line 4619 of file constraint_solver.h.

    +

    Definition at line 4608 of file constraint_solver.h.

    @@ -1291,7 +1262,7 @@ Public Member Functions
    -

    Definition at line 4618 of file constraint_solver.h.

    +

    Definition at line 4607 of file constraint_solver.h.

    @@ -1318,7 +1289,7 @@ Public Member Functions
    -

    Definition at line 4620 of file constraint_solver.h.

    +

    Definition at line 4609 of file constraint_solver.h.

    @@ -1362,7 +1333,7 @@ Public Member Functions
    -

    Definition at line 4611 of file constraint_solver.h.

    +

    Definition at line 4600 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator-members.html b/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator-members.html index dc08426afd..02d62639f5 100644 --- a/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator.html b/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator.html index 5912a5fad8..804d009f32 100644 --- a/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1LightPairRelocateOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html index 3b16b59de8..c860dc3d4a 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder.html index fda173c997..2109304b64 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalCheapestInsertionFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer-members.html b/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer-members.html index d4170a83ae..987cf275d3 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer.html b/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer.html index a72cf85cdb..cbf15c79f9 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalDimensionCumulOptimizer.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter-members.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter-members.html index b8cf0a75cc..9ef98a65ee 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter.html index fcf7c7f728..0cc37aa315 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilter.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -217,9 +188,9 @@ Public Member Functions
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager-members.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager-members.html index c3c4e48279..379ed25426 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager.html index 3f7db3081b..645cba8980 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchFilterManager.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic-members.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic-members.html index 22238ddaef..01b0558999 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic.html index 02c27f86b5..c95094b3e6 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchMetaheuristic.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor-members.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor-members.html index 296c4ea6f2..92287d24fd 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor.html index e6302518a7..68cbe7bc65 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchMonitor.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -223,7 +194,7 @@ Static Public Attributes

    Detailed Description

    -

    Definition at line 1674 of file constraint_solveri.h.

    +

    Definition at line 1657 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ LocalSearchMonitor()

    @@ -774,7 +745,7 @@ Static Public Attributes

    Reimplemented from BaseObject.

    -

    Definition at line 1679 of file constraint_solveri.h.

    +

    Definition at line 1662 of file constraint_solveri.h.

    @@ -1167,7 +1138,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3649 of file constraint_solver.h.

    +

    Definition at line 3638 of file constraint_solver.h.

    @@ -1284,7 +1255,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3658 of file constraint_solver.h.

    +

    Definition at line 3647 of file constraint_solver.h.

    @@ -1368,7 +1339,7 @@ Static Public Attributes
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -1393,7 +1364,7 @@ Static Public Attributes
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator-members.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator-members.html index 86dd0f77de..de50c7ffa7 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator.html b/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator.html index 40f203f239..7339cf0ca2 100644 --- a/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1LocalSearchOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -241,9 +212,9 @@ Public Member Functions
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator-members.html b/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator-members.html index ea3f109847..52d0a96ec7 100644 --- a/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator.html b/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator.html index 206d7e072e..68945e7c1d 100644 --- a/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1MakePairActiveOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator-members.html b/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator-members.html index 375cb423e5..8bc01e0cf5 100644 --- a/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator.html b/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator.html index 385a080c1b..1205b49720 100644 --- a/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1MakePairInactiveOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator-members.html b/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator-members.html index 80a2c036af..5c167289c5 100644 --- a/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator.html b/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator.html index 0f025bff20..3226b8046e 100644 --- a/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1MakeRelocateNeighborsOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ModelCache-members.html b/docs/cpp_routing/classoperations__research_1_1ModelCache-members.html index b12c86edb3..e58bae3f31 100644 --- a/docs/cpp_routing/classoperations__research_1_1ModelCache-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ModelCache-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ModelCache.html b/docs/cpp_routing/classoperations__research_1_1ModelCache.html index a330d799d6..4e84aa920a 100644 --- a/docs/cpp_routing/classoperations__research_1_1ModelCache.html +++ b/docs/cpp_routing/classoperations__research_1_1ModelCache.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -276,7 +247,7 @@ Public Member Functions

    Implements a complete cache for model elements: expressions and constraints.

    Caching is based on the signatures of the elements, as well as their types. This class is used internally to avoid creating duplicate objects.

    -

    Definition at line 1830 of file constraint_solveri.h.

    +

    Definition at line 1813 of file constraint_solveri.h.

    Member Enumeration Documentation

    ◆ ExprConstantExpressionType

    @@ -303,7 +274,7 @@ Public Member Functions EXPR_CONSTANT_EXPRESSION_MAX  -

    Definition at line 1887 of file constraint_solveri.h.

    +

    Definition at line 1870 of file constraint_solveri.h.

    @@ -323,7 +294,7 @@ Public Member Functions EXPR_EXPR_CONSTANT_EXPRESSION_MAX  -

    Definition at line 1882 of file constraint_solveri.h.

    +

    Definition at line 1865 of file constraint_solveri.h.

    @@ -348,7 +319,7 @@ Public Member Functions EXPR_EXPR_CONSTRAINT_MAX  -

    Definition at line 1851 of file constraint_solveri.h.

    +

    Definition at line 1834 of file constraint_solveri.h.

    @@ -370,7 +341,7 @@ Public Member Functions EXPR_EXPRESSION_MAX  -

    Definition at line 1861 of file constraint_solveri.h.

    +

    Definition at line 1844 of file constraint_solveri.h.

    @@ -399,7 +370,7 @@ Public Member Functions EXPR_EXPR_EXPRESSION_MAX  -

    Definition at line 1868 of file constraint_solveri.h.

    +

    Definition at line 1851 of file constraint_solveri.h.

    @@ -419,7 +390,7 @@ Public Member Functions VAR_ARRAY_CONSTANT_ARRAY_EXPRESSION_MAX  -

    Definition at line 1910 of file constraint_solveri.h.

    +

    Definition at line 1893 of file constraint_solveri.h.

    @@ -439,7 +410,7 @@ Public Member Functions VAR_ARRAY_CONSTANT_EXPRESSION_MAX  -

    Definition at line 1922 of file constraint_solveri.h.

    +

    Definition at line 1905 of file constraint_solveri.h.

    @@ -461,7 +432,7 @@ Public Member Functions VAR_ARRAY_EXPRESSION_MAX  -

    Definition at line 1915 of file constraint_solveri.h.

    +

    Definition at line 1898 of file constraint_solveri.h.

    @@ -481,7 +452,7 @@ Public Member Functions VAR_CONSTANT_ARRAY_EXPRESSION_MAX  -

    Definition at line 1905 of file constraint_solveri.h.

    +

    Definition at line 1888 of file constraint_solveri.h.

    @@ -501,7 +472,7 @@ Public Member Functions VAR_CONSTANT_CONSTANT_CONSTRAINT_MAX  -

    Definition at line 1846 of file constraint_solveri.h.

    +

    Definition at line 1829 of file constraint_solveri.h.

    @@ -521,7 +492,7 @@ Public Member Functions VAR_CONSTANT_CONSTANT_EXPRESSION_MAX  -

    Definition at line 1900 of file constraint_solveri.h.

    +

    Definition at line 1883 of file constraint_solveri.h.

    @@ -544,7 +515,7 @@ Public Member Functions VAR_CONSTANT_CONSTRAINT_MAX  -

    Definition at line 1838 of file constraint_solveri.h.

    +

    Definition at line 1821 of file constraint_solveri.h.

    @@ -565,7 +536,7 @@ Public Member Functions VOID_CONSTRAINT_MAX  -

    Definition at line 1832 of file constraint_solveri.h.

    +

    Definition at line 1815 of file constraint_solveri.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1ModelParser-members.html b/docs/cpp_routing/classoperations__research_1_1ModelParser-members.html index 6e7b7f6801..dfb81922a7 100644 --- a/docs/cpp_routing/classoperations__research_1_1ModelParser-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ModelParser-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ModelParser.html b/docs/cpp_routing/classoperations__research_1_1ModelParser.html index 7c419ea528..bf114064cf 100644 --- a/docs/cpp_routing/classoperations__research_1_1ModelParser.html +++ b/docs/cpp_routing/classoperations__research_1_1ModelParser.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -529,7 +500,7 @@ Protected Member Functions

    Detailed Description

    Model Parser.

    -

    Definition at line 2125 of file constraint_solveri.h.

    +

    Definition at line 2108 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ ModelParser()

    @@ -729,9 +700,9 @@ Protected Member Functions
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    @@ -1647,7 +1618,7 @@ Protected Member Functions

    Constraint and Expression types.

    -

    Definition at line 3280 of file constraint_solver.h.

    +

    Definition at line 3269 of file constraint_solver.h.

    @@ -1671,7 +1642,7 @@ Protected Member Functions
    -

    Definition at line 3281 of file constraint_solver.h.

    +

    Definition at line 3270 of file constraint_solver.h.

    @@ -1697,7 +1668,7 @@ Protected Member Functions

    argument names:

    -

    Definition at line 3378 of file constraint_solver.h.

    +

    Definition at line 3367 of file constraint_solver.h.

    @@ -1721,7 +1692,7 @@ Protected Member Functions
    -

    Definition at line 3282 of file constraint_solver.h.

    +

    Definition at line 3271 of file constraint_solver.h.

    @@ -1745,7 +1716,7 @@ Protected Member Functions
    -

    Definition at line 3283 of file constraint_solver.h.

    +

    Definition at line 3272 of file constraint_solver.h.

    @@ -1769,7 +1740,7 @@ Protected Member Functions
    -

    Definition at line 3379 of file constraint_solver.h.

    +

    Definition at line 3368 of file constraint_solver.h.

    @@ -1793,7 +1764,7 @@ Protected Member Functions
    -

    Definition at line 3284 of file constraint_solver.h.

    +

    Definition at line 3273 of file constraint_solver.h.

    @@ -1817,7 +1788,7 @@ Protected Member Functions
    -

    Definition at line 3286 of file constraint_solver.h.

    +

    Definition at line 3275 of file constraint_solver.h.

    @@ -1841,7 +1812,7 @@ Protected Member Functions
    -

    Definition at line 3380 of file constraint_solver.h.

    +

    Definition at line 3369 of file constraint_solver.h.

    @@ -1865,7 +1836,7 @@ Protected Member Functions
    -

    Definition at line 3381 of file constraint_solver.h.

    +

    Definition at line 3370 of file constraint_solver.h.

    @@ -1889,7 +1860,7 @@ Protected Member Functions
    -

    Definition at line 3382 of file constraint_solver.h.

    +

    Definition at line 3371 of file constraint_solver.h.

    @@ -1913,7 +1884,7 @@ Protected Member Functions
    -

    Definition at line 3288 of file constraint_solver.h.

    +

    Definition at line 3277 of file constraint_solver.h.

    @@ -1937,7 +1908,7 @@ Protected Member Functions
    -

    Definition at line 3383 of file constraint_solver.h.

    +

    Definition at line 3372 of file constraint_solver.h.

    @@ -1961,7 +1932,7 @@ Protected Member Functions
    -

    Definition at line 3287 of file constraint_solver.h.

    +

    Definition at line 3276 of file constraint_solver.h.

    @@ -1985,7 +1956,7 @@ Protected Member Functions
    -

    Definition at line 3289 of file constraint_solver.h.

    +

    Definition at line 3278 of file constraint_solver.h.

    @@ -2009,7 +1980,7 @@ Protected Member Functions
    -

    Definition at line 3384 of file constraint_solver.h.

    +

    Definition at line 3373 of file constraint_solver.h.

    @@ -2035,7 +2006,7 @@ Protected Member Functions

    Extension names:

    -

    Definition at line 3364 of file constraint_solver.h.

    +

    Definition at line 3353 of file constraint_solver.h.

    @@ -2059,7 +2030,7 @@ Protected Member Functions
    -

    Definition at line 3290 of file constraint_solver.h.

    +

    Definition at line 3279 of file constraint_solver.h.

    @@ -2083,7 +2054,7 @@ Protected Member Functions
    -

    Definition at line 3365 of file constraint_solver.h.

    +

    Definition at line 3354 of file constraint_solver.h.

    @@ -2107,7 +2078,7 @@ Protected Member Functions
    -

    Definition at line 3291 of file constraint_solver.h.

    +

    Definition at line 3280 of file constraint_solver.h.

    @@ -2131,7 +2102,7 @@ Protected Member Functions
    -

    Definition at line 3292 of file constraint_solver.h.

    +

    Definition at line 3281 of file constraint_solver.h.

    @@ -2155,7 +2126,7 @@ Protected Member Functions
    -

    Definition at line 3385 of file constraint_solver.h.

    +

    Definition at line 3374 of file constraint_solver.h.

    @@ -2179,7 +2150,7 @@ Protected Member Functions
    -

    Definition at line 3386 of file constraint_solver.h.

    +

    Definition at line 3375 of file constraint_solver.h.

    @@ -2203,7 +2174,7 @@ Protected Member Functions
    -

    Definition at line 3340 of file constraint_solver.h.

    +

    Definition at line 3329 of file constraint_solver.h.

    @@ -2227,7 +2198,7 @@ Protected Member Functions
    -

    Definition at line 3387 of file constraint_solver.h.

    +

    Definition at line 3376 of file constraint_solver.h.

    @@ -2251,7 +2222,7 @@ Protected Member Functions
    -

    Definition at line 3293 of file constraint_solver.h.

    +

    Definition at line 3282 of file constraint_solver.h.

    @@ -2275,7 +2246,7 @@ Protected Member Functions
    -

    Definition at line 3294 of file constraint_solver.h.

    +

    Definition at line 3283 of file constraint_solver.h.

    @@ -2299,7 +2270,7 @@ Protected Member Functions
    -

    Definition at line 3445 of file constraint_solver.h.

    +

    Definition at line 3434 of file constraint_solver.h.

    @@ -2323,7 +2294,7 @@ Protected Member Functions
    -

    Definition at line 3295 of file constraint_solver.h.

    +

    Definition at line 3284 of file constraint_solver.h.

    @@ -2347,7 +2318,7 @@ Protected Member Functions
    -

    Definition at line 3296 of file constraint_solver.h.

    +

    Definition at line 3285 of file constraint_solver.h.

    @@ -2371,7 +2342,7 @@ Protected Member Functions
    -

    Definition at line 3297 of file constraint_solver.h.

    +

    Definition at line 3286 of file constraint_solver.h.

    @@ -2395,7 +2366,7 @@ Protected Member Functions
    -

    Definition at line 3298 of file constraint_solver.h.

    +

    Definition at line 3287 of file constraint_solver.h.

    @@ -2419,7 +2390,7 @@ Protected Member Functions
    -

    Definition at line 3388 of file constraint_solver.h.

    +

    Definition at line 3377 of file constraint_solver.h.

    @@ -2443,7 +2414,7 @@ Protected Member Functions
    -

    Definition at line 3389 of file constraint_solver.h.

    +

    Definition at line 3378 of file constraint_solver.h.

    @@ -2467,7 +2438,7 @@ Protected Member Functions
    -

    Definition at line 3390 of file constraint_solver.h.

    +

    Definition at line 3379 of file constraint_solver.h.

    @@ -2491,7 +2462,7 @@ Protected Member Functions
    -

    Definition at line 3391 of file constraint_solver.h.

    +

    Definition at line 3380 of file constraint_solver.h.

    @@ -2515,7 +2486,7 @@ Protected Member Functions
    -

    Definition at line 3299 of file constraint_solver.h.

    +

    Definition at line 3288 of file constraint_solver.h.

    @@ -2539,7 +2510,7 @@ Protected Member Functions
    -

    Definition at line 3300 of file constraint_solver.h.

    +

    Definition at line 3289 of file constraint_solver.h.

    @@ -2563,7 +2534,7 @@ Protected Member Functions
    -

    Definition at line 3301 of file constraint_solver.h.

    +

    Definition at line 3290 of file constraint_solver.h.

    @@ -2587,7 +2558,7 @@ Protected Member Functions
    -

    Definition at line 3392 of file constraint_solver.h.

    +

    Definition at line 3381 of file constraint_solver.h.

    @@ -2611,7 +2582,7 @@ Protected Member Functions
    -

    Definition at line 3393 of file constraint_solver.h.

    +

    Definition at line 3382 of file constraint_solver.h.

    @@ -2635,7 +2606,7 @@ Protected Member Functions
    -

    Definition at line 3394 of file constraint_solver.h.

    +

    Definition at line 3383 of file constraint_solver.h.

    @@ -2659,7 +2630,7 @@ Protected Member Functions
    -

    Definition at line 3302 of file constraint_solver.h.

    +

    Definition at line 3291 of file constraint_solver.h.

    @@ -2683,7 +2654,7 @@ Protected Member Functions
    -

    Definition at line 3438 of file constraint_solver.h.

    +

    Definition at line 3427 of file constraint_solver.h.

    @@ -2707,7 +2678,7 @@ Protected Member Functions
    -

    Definition at line 3395 of file constraint_solver.h.

    +

    Definition at line 3384 of file constraint_solver.h.

    @@ -2731,7 +2702,7 @@ Protected Member Functions
    -

    Definition at line 3396 of file constraint_solver.h.

    +

    Definition at line 3385 of file constraint_solver.h.

    @@ -2755,7 +2726,7 @@ Protected Member Functions
    -

    Definition at line 3303 of file constraint_solver.h.

    +

    Definition at line 3292 of file constraint_solver.h.

    @@ -2779,7 +2750,7 @@ Protected Member Functions
    -

    Definition at line 3397 of file constraint_solver.h.

    +

    Definition at line 3386 of file constraint_solver.h.

    @@ -2803,7 +2774,7 @@ Protected Member Functions
    -

    Definition at line 3398 of file constraint_solver.h.

    +

    Definition at line 3387 of file constraint_solver.h.

    @@ -2827,7 +2798,7 @@ Protected Member Functions
    -

    Definition at line 3304 of file constraint_solver.h.

    +

    Definition at line 3293 of file constraint_solver.h.

    @@ -2851,7 +2822,7 @@ Protected Member Functions
    -

    Definition at line 3305 of file constraint_solver.h.

    +

    Definition at line 3294 of file constraint_solver.h.

    @@ -2875,7 +2846,7 @@ Protected Member Functions
    -

    Definition at line 3306 of file constraint_solver.h.

    +

    Definition at line 3295 of file constraint_solver.h.

    @@ -2899,7 +2870,7 @@ Protected Member Functions
    -

    Definition at line 3399 of file constraint_solver.h.

    +

    Definition at line 3388 of file constraint_solver.h.

    @@ -2923,7 +2894,7 @@ Protected Member Functions
    -

    Definition at line 3400 of file constraint_solver.h.

    +

    Definition at line 3389 of file constraint_solver.h.

    @@ -2947,7 +2918,7 @@ Protected Member Functions
    -

    Definition at line 3285 of file constraint_solver.h.

    +

    Definition at line 3274 of file constraint_solver.h.

    @@ -2971,7 +2942,7 @@ Protected Member Functions
    -

    Definition at line 3401 of file constraint_solver.h.

    +

    Definition at line 3390 of file constraint_solver.h.

    @@ -2995,7 +2966,7 @@ Protected Member Functions
    -

    Definition at line 3366 of file constraint_solver.h.

    +

    Definition at line 3355 of file constraint_solver.h.

    @@ -3019,7 +2990,7 @@ Protected Member Functions
    -

    Definition at line 3367 of file constraint_solver.h.

    +

    Definition at line 3356 of file constraint_solver.h.

    @@ -3043,7 +3014,7 @@ Protected Member Functions
    -

    Definition at line 3307 of file constraint_solver.h.

    +

    Definition at line 3296 of file constraint_solver.h.

    @@ -3067,7 +3038,7 @@ Protected Member Functions
    -

    Definition at line 3402 of file constraint_solver.h.

    +

    Definition at line 3391 of file constraint_solver.h.

    @@ -3091,7 +3062,7 @@ Protected Member Functions
    -

    Definition at line 3308 of file constraint_solver.h.

    +

    Definition at line 3297 of file constraint_solver.h.

    @@ -3115,7 +3086,7 @@ Protected Member Functions
    -

    Definition at line 3309 of file constraint_solver.h.

    +

    Definition at line 3298 of file constraint_solver.h.

    @@ -3139,7 +3110,7 @@ Protected Member Functions
    -

    Definition at line 3403 of file constraint_solver.h.

    +

    Definition at line 3392 of file constraint_solver.h.

    @@ -3163,7 +3134,7 @@ Protected Member Functions
    -

    Definition at line 3310 of file constraint_solver.h.

    +

    Definition at line 3299 of file constraint_solver.h.

    @@ -3187,7 +3158,7 @@ Protected Member Functions
    -

    Definition at line 3311 of file constraint_solver.h.

    +

    Definition at line 3300 of file constraint_solver.h.

    @@ -3211,7 +3182,7 @@ Protected Member Functions
    -

    Definition at line 3312 of file constraint_solver.h.

    +

    Definition at line 3301 of file constraint_solver.h.

    @@ -3235,7 +3206,7 @@ Protected Member Functions
    -

    Definition at line 3313 of file constraint_solver.h.

    +

    Definition at line 3302 of file constraint_solver.h.

    @@ -3259,7 +3230,7 @@ Protected Member Functions
    -

    Definition at line 3314 of file constraint_solver.h.

    +

    Definition at line 3303 of file constraint_solver.h.

    @@ -3283,7 +3254,7 @@ Protected Member Functions
    -

    Definition at line 3315 of file constraint_solver.h.

    +

    Definition at line 3304 of file constraint_solver.h.

    @@ -3307,7 +3278,7 @@ Protected Member Functions
    -

    Definition at line 3316 of file constraint_solver.h.

    +

    Definition at line 3305 of file constraint_solver.h.

    @@ -3331,7 +3302,7 @@ Protected Member Functions
    -

    Definition at line 3317 of file constraint_solver.h.

    +

    Definition at line 3306 of file constraint_solver.h.

    @@ -3355,7 +3326,7 @@ Protected Member Functions
    -

    Definition at line 3318 of file constraint_solver.h.

    +

    Definition at line 3307 of file constraint_solver.h.

    @@ -3379,7 +3350,7 @@ Protected Member Functions
    -

    Definition at line 3319 of file constraint_solver.h.

    +

    Definition at line 3308 of file constraint_solver.h.

    @@ -3403,7 +3374,7 @@ Protected Member Functions
    -

    Definition at line 3320 of file constraint_solver.h.

    +

    Definition at line 3309 of file constraint_solver.h.

    @@ -3427,7 +3398,7 @@ Protected Member Functions
    -

    Definition at line 3404 of file constraint_solver.h.

    +

    Definition at line 3393 of file constraint_solver.h.

    @@ -3451,7 +3422,7 @@ Protected Member Functions
    -

    Definition at line 3405 of file constraint_solver.h.

    +

    Definition at line 3394 of file constraint_solver.h.

    @@ -3475,7 +3446,7 @@ Protected Member Functions
    -

    Definition at line 3406 of file constraint_solver.h.

    +

    Definition at line 3395 of file constraint_solver.h.

    @@ -3499,7 +3470,7 @@ Protected Member Functions
    -

    Definition at line 3321 of file constraint_solver.h.

    +

    Definition at line 3310 of file constraint_solver.h.

    @@ -3523,7 +3494,7 @@ Protected Member Functions
    -

    Definition at line 3322 of file constraint_solver.h.

    +

    Definition at line 3311 of file constraint_solver.h.

    @@ -3547,7 +3518,7 @@ Protected Member Functions
    -

    Definition at line 3323 of file constraint_solver.h.

    +

    Definition at line 3312 of file constraint_solver.h.

    @@ -3571,7 +3542,7 @@ Protected Member Functions
    -

    Definition at line 3324 of file constraint_solver.h.

    +

    Definition at line 3313 of file constraint_solver.h.

    @@ -3595,7 +3566,7 @@ Protected Member Functions
    -

    Definition at line 3325 of file constraint_solver.h.

    +

    Definition at line 3314 of file constraint_solver.h.

    @@ -3619,7 +3590,7 @@ Protected Member Functions
    -

    Definition at line 3326 of file constraint_solver.h.

    +

    Definition at line 3315 of file constraint_solver.h.

    @@ -3643,7 +3614,7 @@ Protected Member Functions
    -

    Definition at line 3407 of file constraint_solver.h.

    +

    Definition at line 3396 of file constraint_solver.h.

    @@ -3667,7 +3638,7 @@ Protected Member Functions
    -

    Definition at line 3327 of file constraint_solver.h.

    +

    Definition at line 3316 of file constraint_solver.h.

    @@ -3691,7 +3662,7 @@ Protected Member Functions
    -

    Definition at line 3408 of file constraint_solver.h.

    +

    Definition at line 3397 of file constraint_solver.h.

    @@ -3715,7 +3686,7 @@ Protected Member Functions
    -

    Definition at line 3328 of file constraint_solver.h.

    +

    Definition at line 3317 of file constraint_solver.h.

    @@ -3739,7 +3710,7 @@ Protected Member Functions
    -

    Definition at line 3329 of file constraint_solver.h.

    +

    Definition at line 3318 of file constraint_solver.h.

    @@ -3763,7 +3734,7 @@ Protected Member Functions
    -

    Definition at line 3409 of file constraint_solver.h.

    +

    Definition at line 3398 of file constraint_solver.h.

    @@ -3787,7 +3758,7 @@ Protected Member Functions
    -

    Definition at line 3330 of file constraint_solver.h.

    +

    Definition at line 3319 of file constraint_solver.h.

    @@ -3813,7 +3784,7 @@ Protected Member Functions

    Operations.

    -

    Definition at line 3441 of file constraint_solver.h.

    +

    Definition at line 3430 of file constraint_solver.h.

    @@ -3837,7 +3808,7 @@ Protected Member Functions
    -

    Definition at line 3331 of file constraint_solver.h.

    +

    Definition at line 3320 of file constraint_solver.h.

    @@ -3861,7 +3832,7 @@ Protected Member Functions
    -

    Definition at line 3410 of file constraint_solver.h.

    +

    Definition at line 3399 of file constraint_solver.h.

    @@ -3885,7 +3856,7 @@ Protected Member Functions
    -

    Definition at line 3411 of file constraint_solver.h.

    +

    Definition at line 3400 of file constraint_solver.h.

    @@ -3909,7 +3880,7 @@ Protected Member Functions
    -

    Definition at line 3332 of file constraint_solver.h.

    +

    Definition at line 3321 of file constraint_solver.h.

    @@ -3933,7 +3904,7 @@ Protected Member Functions
    -

    Definition at line 3333 of file constraint_solver.h.

    +

    Definition at line 3322 of file constraint_solver.h.

    @@ -3957,7 +3928,7 @@ Protected Member Functions
    -

    Definition at line 3334 of file constraint_solver.h.

    +

    Definition at line 3323 of file constraint_solver.h.

    @@ -3981,7 +3952,7 @@ Protected Member Functions
    -

    Definition at line 3335 of file constraint_solver.h.

    +

    Definition at line 3324 of file constraint_solver.h.

    @@ -4005,7 +3976,7 @@ Protected Member Functions
    -

    Definition at line 3336 of file constraint_solver.h.

    +

    Definition at line 3325 of file constraint_solver.h.

    @@ -4029,7 +4000,7 @@ Protected Member Functions
    -

    Definition at line 3368 of file constraint_solver.h.

    +

    Definition at line 3357 of file constraint_solver.h.

    @@ -4053,7 +4024,7 @@ Protected Member Functions
    -

    Definition at line 3337 of file constraint_solver.h.

    +

    Definition at line 3326 of file constraint_solver.h.

    @@ -4077,7 +4048,7 @@ Protected Member Functions
    -

    Definition at line 3412 of file constraint_solver.h.

    +

    Definition at line 3401 of file constraint_solver.h.

    @@ -4101,7 +4072,7 @@ Protected Member Functions
    -

    Definition at line 3338 of file constraint_solver.h.

    +

    Definition at line 3327 of file constraint_solver.h.

    @@ -4125,7 +4096,7 @@ Protected Member Functions
    -

    Definition at line 3413 of file constraint_solver.h.

    +

    Definition at line 3402 of file constraint_solver.h.

    @@ -4149,7 +4120,7 @@ Protected Member Functions
    -

    Definition at line 3339 of file constraint_solver.h.

    +

    Definition at line 3328 of file constraint_solver.h.

    @@ -4173,7 +4144,7 @@ Protected Member Functions
    -

    Definition at line 3341 of file constraint_solver.h.

    +

    Definition at line 3330 of file constraint_solver.h.

    @@ -4197,7 +4168,7 @@ Protected Member Functions
    -

    Definition at line 3414 of file constraint_solver.h.

    +

    Definition at line 3403 of file constraint_solver.h.

    @@ -4221,7 +4192,7 @@ Protected Member Functions
    -

    Definition at line 3415 of file constraint_solver.h.

    +

    Definition at line 3404 of file constraint_solver.h.

    @@ -4245,7 +4216,7 @@ Protected Member Functions
    -

    Definition at line 3342 of file constraint_solver.h.

    +

    Definition at line 3331 of file constraint_solver.h.

    @@ -4269,7 +4240,7 @@ Protected Member Functions
    -

    Definition at line 3343 of file constraint_solver.h.

    +

    Definition at line 3332 of file constraint_solver.h.

    @@ -4293,7 +4264,7 @@ Protected Member Functions
    -

    Definition at line 3446 of file constraint_solver.h.

    +

    Definition at line 3435 of file constraint_solver.h.

    @@ -4317,7 +4288,7 @@ Protected Member Functions
    -

    Definition at line 3416 of file constraint_solver.h.

    +

    Definition at line 3405 of file constraint_solver.h.

    @@ -4341,7 +4312,7 @@ Protected Member Functions
    -

    Definition at line 3417 of file constraint_solver.h.

    +

    Definition at line 3406 of file constraint_solver.h.

    @@ -4365,7 +4336,7 @@ Protected Member Functions
    -

    Definition at line 3442 of file constraint_solver.h.

    +

    Definition at line 3431 of file constraint_solver.h.

    @@ -4389,7 +4360,7 @@ Protected Member Functions
    -

    Definition at line 3443 of file constraint_solver.h.

    +

    Definition at line 3432 of file constraint_solver.h.

    @@ -4413,7 +4384,7 @@ Protected Member Functions
    -

    Definition at line 3418 of file constraint_solver.h.

    +

    Definition at line 3407 of file constraint_solver.h.

    @@ -4437,7 +4408,7 @@ Protected Member Functions
    -

    Definition at line 3344 of file constraint_solver.h.

    +

    Definition at line 3333 of file constraint_solver.h.

    @@ -4461,7 +4432,7 @@ Protected Member Functions
    -

    Definition at line 3345 of file constraint_solver.h.

    +

    Definition at line 3334 of file constraint_solver.h.

    @@ -4485,7 +4456,7 @@ Protected Member Functions
    -

    Definition at line 3346 of file constraint_solver.h.

    +

    Definition at line 3335 of file constraint_solver.h.

    @@ -4509,7 +4480,7 @@ Protected Member Functions
    -

    Definition at line 3347 of file constraint_solver.h.

    +

    Definition at line 3336 of file constraint_solver.h.

    @@ -4533,7 +4504,7 @@ Protected Member Functions
    -

    Definition at line 3369 of file constraint_solver.h.

    +

    Definition at line 3358 of file constraint_solver.h.

    @@ -4557,7 +4528,7 @@ Protected Member Functions
    -

    Definition at line 3348 of file constraint_solver.h.

    +

    Definition at line 3337 of file constraint_solver.h.

    @@ -4581,7 +4552,7 @@ Protected Member Functions
    -

    Definition at line 3419 of file constraint_solver.h.

    +

    Definition at line 3408 of file constraint_solver.h.

    @@ -4605,7 +4576,7 @@ Protected Member Functions
    -

    Definition at line 3420 of file constraint_solver.h.

    +

    Definition at line 3409 of file constraint_solver.h.

    @@ -4629,7 +4600,7 @@ Protected Member Functions
    -

    Definition at line 3349 of file constraint_solver.h.

    +

    Definition at line 3338 of file constraint_solver.h.

    @@ -4653,7 +4624,7 @@ Protected Member Functions
    -

    Definition at line 3421 of file constraint_solver.h.

    +

    Definition at line 3410 of file constraint_solver.h.

    @@ -4677,7 +4648,7 @@ Protected Member Functions
    -

    Definition at line 3422 of file constraint_solver.h.

    +

    Definition at line 3411 of file constraint_solver.h.

    @@ -4701,7 +4672,7 @@ Protected Member Functions
    -

    Definition at line 3423 of file constraint_solver.h.

    +

    Definition at line 3412 of file constraint_solver.h.

    @@ -4725,7 +4696,7 @@ Protected Member Functions
    -

    Definition at line 3424 of file constraint_solver.h.

    +

    Definition at line 3413 of file constraint_solver.h.

    @@ -4749,7 +4720,7 @@ Protected Member Functions
    -

    Definition at line 3425 of file constraint_solver.h.

    +

    Definition at line 3414 of file constraint_solver.h.

    @@ -4773,7 +4744,7 @@ Protected Member Functions
    -

    Definition at line 3350 of file constraint_solver.h.

    +

    Definition at line 3339 of file constraint_solver.h.

    @@ -4797,7 +4768,7 @@ Protected Member Functions
    -

    Definition at line 3351 of file constraint_solver.h.

    +

    Definition at line 3340 of file constraint_solver.h.

    @@ -4821,7 +4792,7 @@ Protected Member Functions
    -

    Definition at line 3352 of file constraint_solver.h.

    +

    Definition at line 3341 of file constraint_solver.h.

    @@ -4845,7 +4816,7 @@ Protected Member Functions
    -

    Definition at line 3426 of file constraint_solver.h.

    +

    Definition at line 3415 of file constraint_solver.h.

    @@ -4869,7 +4840,7 @@ Protected Member Functions
    -

    Definition at line 3427 of file constraint_solver.h.

    +

    Definition at line 3416 of file constraint_solver.h.

    @@ -4893,7 +4864,7 @@ Protected Member Functions
    -

    Definition at line 3428 of file constraint_solver.h.

    +

    Definition at line 3417 of file constraint_solver.h.

    @@ -4917,7 +4888,7 @@ Protected Member Functions
    -

    Definition at line 3448 of file constraint_solver.h.

    +

    Definition at line 3437 of file constraint_solver.h.

    @@ -4941,7 +4912,7 @@ Protected Member Functions
    -

    Definition at line 3447 of file constraint_solver.h.

    +

    Definition at line 3436 of file constraint_solver.h.

    @@ -4965,7 +4936,7 @@ Protected Member Functions
    -

    Definition at line 3429 of file constraint_solver.h.

    +

    Definition at line 3418 of file constraint_solver.h.

    @@ -4989,7 +4960,7 @@ Protected Member Functions
    -

    Definition at line 3353 of file constraint_solver.h.

    +

    Definition at line 3342 of file constraint_solver.h.

    @@ -5013,7 +4984,7 @@ Protected Member Functions
    -

    Definition at line 3354 of file constraint_solver.h.

    +

    Definition at line 3343 of file constraint_solver.h.

    @@ -5037,7 +5008,7 @@ Protected Member Functions
    -

    Definition at line 3355 of file constraint_solver.h.

    +

    Definition at line 3344 of file constraint_solver.h.

    @@ -5061,7 +5032,7 @@ Protected Member Functions
    -

    Definition at line 3356 of file constraint_solver.h.

    +

    Definition at line 3345 of file constraint_solver.h.

    @@ -5085,7 +5056,7 @@ Protected Member Functions
    -

    Definition at line 3444 of file constraint_solver.h.

    +

    Definition at line 3433 of file constraint_solver.h.

    @@ -5109,7 +5080,7 @@ Protected Member Functions
    -

    Definition at line 3430 of file constraint_solver.h.

    +

    Definition at line 3419 of file constraint_solver.h.

    @@ -5133,7 +5104,7 @@ Protected Member Functions
    -

    Definition at line 3431 of file constraint_solver.h.

    +

    Definition at line 3420 of file constraint_solver.h.

    @@ -5157,7 +5128,7 @@ Protected Member Functions
    -

    Definition at line 3357 of file constraint_solver.h.

    +

    Definition at line 3346 of file constraint_solver.h.

    @@ -5181,7 +5152,7 @@ Protected Member Functions
    -

    Definition at line 3449 of file constraint_solver.h.

    +

    Definition at line 3438 of file constraint_solver.h.

    @@ -5205,7 +5176,7 @@ Protected Member Functions
    -

    Definition at line 3358 of file constraint_solver.h.

    +

    Definition at line 3347 of file constraint_solver.h.

    @@ -5229,7 +5200,7 @@ Protected Member Functions
    -

    Definition at line 3432 of file constraint_solver.h.

    +

    Definition at line 3421 of file constraint_solver.h.

    @@ -5253,7 +5224,7 @@ Protected Member Functions
    -

    Definition at line 3359 of file constraint_solver.h.

    +

    Definition at line 3348 of file constraint_solver.h.

    @@ -5277,7 +5248,7 @@ Protected Member Functions
    -

    Definition at line 3433 of file constraint_solver.h.

    +

    Definition at line 3422 of file constraint_solver.h.

    @@ -5301,7 +5272,7 @@ Protected Member Functions
    -

    Definition at line 3370 of file constraint_solver.h.

    +

    Definition at line 3359 of file constraint_solver.h.

    @@ -5325,7 +5296,7 @@ Protected Member Functions
    -

    Definition at line 3372 of file constraint_solver.h.

    +

    Definition at line 3361 of file constraint_solver.h.

    @@ -5349,7 +5320,7 @@ Protected Member Functions
    -

    Definition at line 3434 of file constraint_solver.h.

    +

    Definition at line 3423 of file constraint_solver.h.

    @@ -5373,7 +5344,7 @@ Protected Member Functions
    -

    Definition at line 3435 of file constraint_solver.h.

    +

    Definition at line 3424 of file constraint_solver.h.

    @@ -5397,7 +5368,7 @@ Protected Member Functions
    -

    Definition at line 3360 of file constraint_solver.h.

    +

    Definition at line 3349 of file constraint_solver.h.

    @@ -5421,7 +5392,7 @@ Protected Member Functions
    -

    Definition at line 3436 of file constraint_solver.h.

    +

    Definition at line 3425 of file constraint_solver.h.

    @@ -5445,7 +5416,7 @@ Protected Member Functions
    -

    Definition at line 3373 of file constraint_solver.h.

    +

    Definition at line 3362 of file constraint_solver.h.

    @@ -5469,7 +5440,7 @@ Protected Member Functions
    -

    Definition at line 3374 of file constraint_solver.h.

    +

    Definition at line 3363 of file constraint_solver.h.

    @@ -5493,7 +5464,7 @@ Protected Member Functions
    -

    Definition at line 3437 of file constraint_solver.h.

    +

    Definition at line 3426 of file constraint_solver.h.

    @@ -5517,7 +5488,7 @@ Protected Member Functions
    -

    Definition at line 3361 of file constraint_solver.h.

    +

    Definition at line 3350 of file constraint_solver.h.

    @@ -5541,7 +5512,7 @@ Protected Member Functions
    -

    Definition at line 3375 of file constraint_solver.h.

    +

    Definition at line 3364 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1ModelVisitor-members.html b/docs/cpp_routing/classoperations__research_1_1ModelVisitor-members.html index acb88edafb..7ee837170a 100644 --- a/docs/cpp_routing/classoperations__research_1_1ModelVisitor-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ModelVisitor-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ModelVisitor.html b/docs/cpp_routing/classoperations__research_1_1ModelVisitor.html index 853406098f..88a00d7d22 100644 --- a/docs/cpp_routing/classoperations__research_1_1ModelVisitor.html +++ b/docs/cpp_routing/classoperations__research_1_1ModelVisitor.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -516,7 +487,7 @@ Static Public Attributes

    Detailed Description

    Model visitor.

    -

    Definition at line 3277 of file constraint_solver.h.

    +

    Definition at line 3266 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ ~ModelVisitor()

    @@ -700,9 +671,9 @@ Static Public Attributes
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    @@ -1519,7 +1490,7 @@ Static Public Attributes

    Constraint and Expression types.

    -

    Definition at line 3280 of file constraint_solver.h.

    +

    Definition at line 3269 of file constraint_solver.h.

    @@ -1543,7 +1514,7 @@ Static Public Attributes
    -

    Definition at line 3281 of file constraint_solver.h.

    +

    Definition at line 3270 of file constraint_solver.h.

    @@ -1569,7 +1540,7 @@ Static Public Attributes

    argument names:

    -

    Definition at line 3378 of file constraint_solver.h.

    +

    Definition at line 3367 of file constraint_solver.h.

    @@ -1593,7 +1564,7 @@ Static Public Attributes
    -

    Definition at line 3282 of file constraint_solver.h.

    +

    Definition at line 3271 of file constraint_solver.h.

    @@ -1617,7 +1588,7 @@ Static Public Attributes
    -

    Definition at line 3283 of file constraint_solver.h.

    +

    Definition at line 3272 of file constraint_solver.h.

    @@ -1641,7 +1612,7 @@ Static Public Attributes
    -

    Definition at line 3379 of file constraint_solver.h.

    +

    Definition at line 3368 of file constraint_solver.h.

    @@ -1665,7 +1636,7 @@ Static Public Attributes
    -

    Definition at line 3284 of file constraint_solver.h.

    +

    Definition at line 3273 of file constraint_solver.h.

    @@ -1689,7 +1660,7 @@ Static Public Attributes
    -

    Definition at line 3286 of file constraint_solver.h.

    +

    Definition at line 3275 of file constraint_solver.h.

    @@ -1713,7 +1684,7 @@ Static Public Attributes
    -

    Definition at line 3380 of file constraint_solver.h.

    +

    Definition at line 3369 of file constraint_solver.h.

    @@ -1737,7 +1708,7 @@ Static Public Attributes
    -

    Definition at line 3381 of file constraint_solver.h.

    +

    Definition at line 3370 of file constraint_solver.h.

    @@ -1761,7 +1732,7 @@ Static Public Attributes
    -

    Definition at line 3382 of file constraint_solver.h.

    +

    Definition at line 3371 of file constraint_solver.h.

    @@ -1785,7 +1756,7 @@ Static Public Attributes
    -

    Definition at line 3288 of file constraint_solver.h.

    +

    Definition at line 3277 of file constraint_solver.h.

    @@ -1809,7 +1780,7 @@ Static Public Attributes
    -

    Definition at line 3383 of file constraint_solver.h.

    +

    Definition at line 3372 of file constraint_solver.h.

    @@ -1833,7 +1804,7 @@ Static Public Attributes
    -

    Definition at line 3287 of file constraint_solver.h.

    +

    Definition at line 3276 of file constraint_solver.h.

    @@ -1857,7 +1828,7 @@ Static Public Attributes
    -

    Definition at line 3289 of file constraint_solver.h.

    +

    Definition at line 3278 of file constraint_solver.h.

    @@ -1881,7 +1852,7 @@ Static Public Attributes
    -

    Definition at line 3384 of file constraint_solver.h.

    +

    Definition at line 3373 of file constraint_solver.h.

    @@ -1907,7 +1878,7 @@ Static Public Attributes

    Extension names:

    -

    Definition at line 3364 of file constraint_solver.h.

    +

    Definition at line 3353 of file constraint_solver.h.

    @@ -1931,7 +1902,7 @@ Static Public Attributes
    -

    Definition at line 3290 of file constraint_solver.h.

    +

    Definition at line 3279 of file constraint_solver.h.

    @@ -1955,7 +1926,7 @@ Static Public Attributes
    -

    Definition at line 3365 of file constraint_solver.h.

    +

    Definition at line 3354 of file constraint_solver.h.

    @@ -1979,7 +1950,7 @@ Static Public Attributes
    -

    Definition at line 3291 of file constraint_solver.h.

    +

    Definition at line 3280 of file constraint_solver.h.

    @@ -2003,7 +1974,7 @@ Static Public Attributes
    -

    Definition at line 3292 of file constraint_solver.h.

    +

    Definition at line 3281 of file constraint_solver.h.

    @@ -2027,7 +1998,7 @@ Static Public Attributes
    -

    Definition at line 3385 of file constraint_solver.h.

    +

    Definition at line 3374 of file constraint_solver.h.

    @@ -2051,7 +2022,7 @@ Static Public Attributes
    -

    Definition at line 3386 of file constraint_solver.h.

    +

    Definition at line 3375 of file constraint_solver.h.

    @@ -2075,7 +2046,7 @@ Static Public Attributes
    -

    Definition at line 3340 of file constraint_solver.h.

    +

    Definition at line 3329 of file constraint_solver.h.

    @@ -2099,7 +2070,7 @@ Static Public Attributes
    -

    Definition at line 3387 of file constraint_solver.h.

    +

    Definition at line 3376 of file constraint_solver.h.

    @@ -2123,7 +2094,7 @@ Static Public Attributes
    -

    Definition at line 3293 of file constraint_solver.h.

    +

    Definition at line 3282 of file constraint_solver.h.

    @@ -2147,7 +2118,7 @@ Static Public Attributes
    -

    Definition at line 3294 of file constraint_solver.h.

    +

    Definition at line 3283 of file constraint_solver.h.

    @@ -2171,7 +2142,7 @@ Static Public Attributes
    -

    Definition at line 3445 of file constraint_solver.h.

    +

    Definition at line 3434 of file constraint_solver.h.

    @@ -2195,7 +2166,7 @@ Static Public Attributes
    -

    Definition at line 3295 of file constraint_solver.h.

    +

    Definition at line 3284 of file constraint_solver.h.

    @@ -2219,7 +2190,7 @@ Static Public Attributes
    -

    Definition at line 3296 of file constraint_solver.h.

    +

    Definition at line 3285 of file constraint_solver.h.

    @@ -2243,7 +2214,7 @@ Static Public Attributes
    -

    Definition at line 3297 of file constraint_solver.h.

    +

    Definition at line 3286 of file constraint_solver.h.

    @@ -2267,7 +2238,7 @@ Static Public Attributes
    -

    Definition at line 3298 of file constraint_solver.h.

    +

    Definition at line 3287 of file constraint_solver.h.

    @@ -2291,7 +2262,7 @@ Static Public Attributes
    -

    Definition at line 3388 of file constraint_solver.h.

    +

    Definition at line 3377 of file constraint_solver.h.

    @@ -2315,7 +2286,7 @@ Static Public Attributes
    -

    Definition at line 3389 of file constraint_solver.h.

    +

    Definition at line 3378 of file constraint_solver.h.

    @@ -2339,7 +2310,7 @@ Static Public Attributes
    -

    Definition at line 3390 of file constraint_solver.h.

    +

    Definition at line 3379 of file constraint_solver.h.

    @@ -2363,7 +2334,7 @@ Static Public Attributes
    -

    Definition at line 3391 of file constraint_solver.h.

    +

    Definition at line 3380 of file constraint_solver.h.

    @@ -2387,7 +2358,7 @@ Static Public Attributes
    -

    Definition at line 3299 of file constraint_solver.h.

    +

    Definition at line 3288 of file constraint_solver.h.

    @@ -2411,7 +2382,7 @@ Static Public Attributes
    -

    Definition at line 3300 of file constraint_solver.h.

    +

    Definition at line 3289 of file constraint_solver.h.

    @@ -2435,7 +2406,7 @@ Static Public Attributes
    -

    Definition at line 3301 of file constraint_solver.h.

    +

    Definition at line 3290 of file constraint_solver.h.

    @@ -2459,7 +2430,7 @@ Static Public Attributes
    -

    Definition at line 3392 of file constraint_solver.h.

    +

    Definition at line 3381 of file constraint_solver.h.

    @@ -2483,7 +2454,7 @@ Static Public Attributes
    -

    Definition at line 3393 of file constraint_solver.h.

    +

    Definition at line 3382 of file constraint_solver.h.

    @@ -2507,7 +2478,7 @@ Static Public Attributes
    -

    Definition at line 3394 of file constraint_solver.h.

    +

    Definition at line 3383 of file constraint_solver.h.

    @@ -2531,7 +2502,7 @@ Static Public Attributes
    -

    Definition at line 3302 of file constraint_solver.h.

    +

    Definition at line 3291 of file constraint_solver.h.

    @@ -2555,7 +2526,7 @@ Static Public Attributes
    -

    Definition at line 3438 of file constraint_solver.h.

    +

    Definition at line 3427 of file constraint_solver.h.

    @@ -2579,7 +2550,7 @@ Static Public Attributes
    -

    Definition at line 3395 of file constraint_solver.h.

    +

    Definition at line 3384 of file constraint_solver.h.

    @@ -2603,7 +2574,7 @@ Static Public Attributes
    -

    Definition at line 3396 of file constraint_solver.h.

    +

    Definition at line 3385 of file constraint_solver.h.

    @@ -2627,7 +2598,7 @@ Static Public Attributes
    -

    Definition at line 3303 of file constraint_solver.h.

    +

    Definition at line 3292 of file constraint_solver.h.

    @@ -2651,7 +2622,7 @@ Static Public Attributes
    -

    Definition at line 3397 of file constraint_solver.h.

    +

    Definition at line 3386 of file constraint_solver.h.

    @@ -2675,7 +2646,7 @@ Static Public Attributes
    -

    Definition at line 3398 of file constraint_solver.h.

    +

    Definition at line 3387 of file constraint_solver.h.

    @@ -2699,7 +2670,7 @@ Static Public Attributes
    -

    Definition at line 3304 of file constraint_solver.h.

    +

    Definition at line 3293 of file constraint_solver.h.

    @@ -2723,7 +2694,7 @@ Static Public Attributes
    -

    Definition at line 3305 of file constraint_solver.h.

    +

    Definition at line 3294 of file constraint_solver.h.

    @@ -2747,7 +2718,7 @@ Static Public Attributes
    -

    Definition at line 3306 of file constraint_solver.h.

    +

    Definition at line 3295 of file constraint_solver.h.

    @@ -2771,7 +2742,7 @@ Static Public Attributes
    -

    Definition at line 3399 of file constraint_solver.h.

    +

    Definition at line 3388 of file constraint_solver.h.

    @@ -2795,7 +2766,7 @@ Static Public Attributes
    -

    Definition at line 3400 of file constraint_solver.h.

    +

    Definition at line 3389 of file constraint_solver.h.

    @@ -2819,7 +2790,7 @@ Static Public Attributes
    -

    Definition at line 3285 of file constraint_solver.h.

    +

    Definition at line 3274 of file constraint_solver.h.

    @@ -2843,7 +2814,7 @@ Static Public Attributes
    -

    Definition at line 3401 of file constraint_solver.h.

    +

    Definition at line 3390 of file constraint_solver.h.

    @@ -2867,7 +2838,7 @@ Static Public Attributes
    -

    Definition at line 3366 of file constraint_solver.h.

    +

    Definition at line 3355 of file constraint_solver.h.

    @@ -2891,7 +2862,7 @@ Static Public Attributes
    -

    Definition at line 3367 of file constraint_solver.h.

    +

    Definition at line 3356 of file constraint_solver.h.

    @@ -2915,7 +2886,7 @@ Static Public Attributes
    -

    Definition at line 3307 of file constraint_solver.h.

    +

    Definition at line 3296 of file constraint_solver.h.

    @@ -2939,7 +2910,7 @@ Static Public Attributes
    -

    Definition at line 3402 of file constraint_solver.h.

    +

    Definition at line 3391 of file constraint_solver.h.

    @@ -2963,7 +2934,7 @@ Static Public Attributes
    -

    Definition at line 3308 of file constraint_solver.h.

    +

    Definition at line 3297 of file constraint_solver.h.

    @@ -2987,7 +2958,7 @@ Static Public Attributes
    -

    Definition at line 3309 of file constraint_solver.h.

    +

    Definition at line 3298 of file constraint_solver.h.

    @@ -3011,7 +2982,7 @@ Static Public Attributes
    -

    Definition at line 3403 of file constraint_solver.h.

    +

    Definition at line 3392 of file constraint_solver.h.

    @@ -3035,7 +3006,7 @@ Static Public Attributes
    -

    Definition at line 3310 of file constraint_solver.h.

    +

    Definition at line 3299 of file constraint_solver.h.

    @@ -3059,7 +3030,7 @@ Static Public Attributes
    -

    Definition at line 3311 of file constraint_solver.h.

    +

    Definition at line 3300 of file constraint_solver.h.

    @@ -3083,7 +3054,7 @@ Static Public Attributes
    -

    Definition at line 3312 of file constraint_solver.h.

    +

    Definition at line 3301 of file constraint_solver.h.

    @@ -3107,7 +3078,7 @@ Static Public Attributes
    -

    Definition at line 3313 of file constraint_solver.h.

    +

    Definition at line 3302 of file constraint_solver.h.

    @@ -3131,7 +3102,7 @@ Static Public Attributes
    -

    Definition at line 3314 of file constraint_solver.h.

    +

    Definition at line 3303 of file constraint_solver.h.

    @@ -3155,7 +3126,7 @@ Static Public Attributes
    -

    Definition at line 3315 of file constraint_solver.h.

    +

    Definition at line 3304 of file constraint_solver.h.

    @@ -3179,7 +3150,7 @@ Static Public Attributes
    -

    Definition at line 3316 of file constraint_solver.h.

    +

    Definition at line 3305 of file constraint_solver.h.

    @@ -3203,7 +3174,7 @@ Static Public Attributes
    -

    Definition at line 3317 of file constraint_solver.h.

    +

    Definition at line 3306 of file constraint_solver.h.

    @@ -3227,7 +3198,7 @@ Static Public Attributes
    -

    Definition at line 3318 of file constraint_solver.h.

    +

    Definition at line 3307 of file constraint_solver.h.

    @@ -3251,7 +3222,7 @@ Static Public Attributes
    -

    Definition at line 3319 of file constraint_solver.h.

    +

    Definition at line 3308 of file constraint_solver.h.

    @@ -3275,7 +3246,7 @@ Static Public Attributes
    -

    Definition at line 3320 of file constraint_solver.h.

    +

    Definition at line 3309 of file constraint_solver.h.

    @@ -3299,7 +3270,7 @@ Static Public Attributes
    -

    Definition at line 3404 of file constraint_solver.h.

    +

    Definition at line 3393 of file constraint_solver.h.

    @@ -3323,7 +3294,7 @@ Static Public Attributes
    -

    Definition at line 3405 of file constraint_solver.h.

    +

    Definition at line 3394 of file constraint_solver.h.

    @@ -3347,7 +3318,7 @@ Static Public Attributes
    -

    Definition at line 3406 of file constraint_solver.h.

    +

    Definition at line 3395 of file constraint_solver.h.

    @@ -3371,7 +3342,7 @@ Static Public Attributes
    -

    Definition at line 3321 of file constraint_solver.h.

    +

    Definition at line 3310 of file constraint_solver.h.

    @@ -3395,7 +3366,7 @@ Static Public Attributes
    -

    Definition at line 3322 of file constraint_solver.h.

    +

    Definition at line 3311 of file constraint_solver.h.

    @@ -3419,7 +3390,7 @@ Static Public Attributes
    -

    Definition at line 3323 of file constraint_solver.h.

    +

    Definition at line 3312 of file constraint_solver.h.

    @@ -3443,7 +3414,7 @@ Static Public Attributes
    -

    Definition at line 3324 of file constraint_solver.h.

    +

    Definition at line 3313 of file constraint_solver.h.

    @@ -3467,7 +3438,7 @@ Static Public Attributes
    -

    Definition at line 3325 of file constraint_solver.h.

    +

    Definition at line 3314 of file constraint_solver.h.

    @@ -3491,7 +3462,7 @@ Static Public Attributes
    -

    Definition at line 3326 of file constraint_solver.h.

    +

    Definition at line 3315 of file constraint_solver.h.

    @@ -3515,7 +3486,7 @@ Static Public Attributes
    -

    Definition at line 3407 of file constraint_solver.h.

    +

    Definition at line 3396 of file constraint_solver.h.

    @@ -3539,7 +3510,7 @@ Static Public Attributes
    -

    Definition at line 3327 of file constraint_solver.h.

    +

    Definition at line 3316 of file constraint_solver.h.

    @@ -3563,7 +3534,7 @@ Static Public Attributes
    -

    Definition at line 3408 of file constraint_solver.h.

    +

    Definition at line 3397 of file constraint_solver.h.

    @@ -3587,7 +3558,7 @@ Static Public Attributes
    -

    Definition at line 3328 of file constraint_solver.h.

    +

    Definition at line 3317 of file constraint_solver.h.

    @@ -3611,7 +3582,7 @@ Static Public Attributes
    -

    Definition at line 3329 of file constraint_solver.h.

    +

    Definition at line 3318 of file constraint_solver.h.

    @@ -3635,7 +3606,7 @@ Static Public Attributes
    -

    Definition at line 3409 of file constraint_solver.h.

    +

    Definition at line 3398 of file constraint_solver.h.

    @@ -3659,7 +3630,7 @@ Static Public Attributes
    -

    Definition at line 3330 of file constraint_solver.h.

    +

    Definition at line 3319 of file constraint_solver.h.

    @@ -3685,7 +3656,7 @@ Static Public Attributes

    Operations.

    -

    Definition at line 3441 of file constraint_solver.h.

    +

    Definition at line 3430 of file constraint_solver.h.

    @@ -3709,7 +3680,7 @@ Static Public Attributes
    -

    Definition at line 3331 of file constraint_solver.h.

    +

    Definition at line 3320 of file constraint_solver.h.

    @@ -3733,7 +3704,7 @@ Static Public Attributes
    -

    Definition at line 3410 of file constraint_solver.h.

    +

    Definition at line 3399 of file constraint_solver.h.

    @@ -3757,7 +3728,7 @@ Static Public Attributes
    -

    Definition at line 3411 of file constraint_solver.h.

    +

    Definition at line 3400 of file constraint_solver.h.

    @@ -3781,7 +3752,7 @@ Static Public Attributes
    -

    Definition at line 3332 of file constraint_solver.h.

    +

    Definition at line 3321 of file constraint_solver.h.

    @@ -3805,7 +3776,7 @@ Static Public Attributes
    -

    Definition at line 3333 of file constraint_solver.h.

    +

    Definition at line 3322 of file constraint_solver.h.

    @@ -3829,7 +3800,7 @@ Static Public Attributes
    -

    Definition at line 3334 of file constraint_solver.h.

    +

    Definition at line 3323 of file constraint_solver.h.

    @@ -3853,7 +3824,7 @@ Static Public Attributes
    -

    Definition at line 3335 of file constraint_solver.h.

    +

    Definition at line 3324 of file constraint_solver.h.

    @@ -3877,7 +3848,7 @@ Static Public Attributes
    -

    Definition at line 3336 of file constraint_solver.h.

    +

    Definition at line 3325 of file constraint_solver.h.

    @@ -3901,7 +3872,7 @@ Static Public Attributes
    -

    Definition at line 3368 of file constraint_solver.h.

    +

    Definition at line 3357 of file constraint_solver.h.

    @@ -3925,7 +3896,7 @@ Static Public Attributes
    -

    Definition at line 3337 of file constraint_solver.h.

    +

    Definition at line 3326 of file constraint_solver.h.

    @@ -3949,7 +3920,7 @@ Static Public Attributes
    -

    Definition at line 3412 of file constraint_solver.h.

    +

    Definition at line 3401 of file constraint_solver.h.

    @@ -3973,7 +3944,7 @@ Static Public Attributes
    -

    Definition at line 3338 of file constraint_solver.h.

    +

    Definition at line 3327 of file constraint_solver.h.

    @@ -3997,7 +3968,7 @@ Static Public Attributes
    -

    Definition at line 3413 of file constraint_solver.h.

    +

    Definition at line 3402 of file constraint_solver.h.

    @@ -4021,7 +3992,7 @@ Static Public Attributes
    -

    Definition at line 3339 of file constraint_solver.h.

    +

    Definition at line 3328 of file constraint_solver.h.

    @@ -4045,7 +4016,7 @@ Static Public Attributes
    -

    Definition at line 3341 of file constraint_solver.h.

    +

    Definition at line 3330 of file constraint_solver.h.

    @@ -4069,7 +4040,7 @@ Static Public Attributes
    -

    Definition at line 3414 of file constraint_solver.h.

    +

    Definition at line 3403 of file constraint_solver.h.

    @@ -4093,7 +4064,7 @@ Static Public Attributes
    -

    Definition at line 3415 of file constraint_solver.h.

    +

    Definition at line 3404 of file constraint_solver.h.

    @@ -4117,7 +4088,7 @@ Static Public Attributes
    -

    Definition at line 3342 of file constraint_solver.h.

    +

    Definition at line 3331 of file constraint_solver.h.

    @@ -4141,7 +4112,7 @@ Static Public Attributes
    -

    Definition at line 3343 of file constraint_solver.h.

    +

    Definition at line 3332 of file constraint_solver.h.

    @@ -4165,7 +4136,7 @@ Static Public Attributes
    -

    Definition at line 3446 of file constraint_solver.h.

    +

    Definition at line 3435 of file constraint_solver.h.

    @@ -4189,7 +4160,7 @@ Static Public Attributes
    -

    Definition at line 3416 of file constraint_solver.h.

    +

    Definition at line 3405 of file constraint_solver.h.

    @@ -4213,7 +4184,7 @@ Static Public Attributes
    -

    Definition at line 3417 of file constraint_solver.h.

    +

    Definition at line 3406 of file constraint_solver.h.

    @@ -4237,7 +4208,7 @@ Static Public Attributes
    -

    Definition at line 3442 of file constraint_solver.h.

    +

    Definition at line 3431 of file constraint_solver.h.

    @@ -4261,7 +4232,7 @@ Static Public Attributes
    -

    Definition at line 3443 of file constraint_solver.h.

    +

    Definition at line 3432 of file constraint_solver.h.

    @@ -4285,7 +4256,7 @@ Static Public Attributes
    -

    Definition at line 3418 of file constraint_solver.h.

    +

    Definition at line 3407 of file constraint_solver.h.

    @@ -4309,7 +4280,7 @@ Static Public Attributes
    -

    Definition at line 3344 of file constraint_solver.h.

    +

    Definition at line 3333 of file constraint_solver.h.

    @@ -4333,7 +4304,7 @@ Static Public Attributes
    -

    Definition at line 3345 of file constraint_solver.h.

    +

    Definition at line 3334 of file constraint_solver.h.

    @@ -4357,7 +4328,7 @@ Static Public Attributes
    -

    Definition at line 3346 of file constraint_solver.h.

    +

    Definition at line 3335 of file constraint_solver.h.

    @@ -4381,7 +4352,7 @@ Static Public Attributes
    -

    Definition at line 3347 of file constraint_solver.h.

    +

    Definition at line 3336 of file constraint_solver.h.

    @@ -4405,7 +4376,7 @@ Static Public Attributes
    -

    Definition at line 3369 of file constraint_solver.h.

    +

    Definition at line 3358 of file constraint_solver.h.

    @@ -4429,7 +4400,7 @@ Static Public Attributes
    -

    Definition at line 3348 of file constraint_solver.h.

    +

    Definition at line 3337 of file constraint_solver.h.

    @@ -4453,7 +4424,7 @@ Static Public Attributes
    -

    Definition at line 3419 of file constraint_solver.h.

    +

    Definition at line 3408 of file constraint_solver.h.

    @@ -4477,7 +4448,7 @@ Static Public Attributes
    -

    Definition at line 3420 of file constraint_solver.h.

    +

    Definition at line 3409 of file constraint_solver.h.

    @@ -4501,7 +4472,7 @@ Static Public Attributes
    -

    Definition at line 3349 of file constraint_solver.h.

    +

    Definition at line 3338 of file constraint_solver.h.

    @@ -4525,7 +4496,7 @@ Static Public Attributes
    -

    Definition at line 3421 of file constraint_solver.h.

    +

    Definition at line 3410 of file constraint_solver.h.

    @@ -4549,7 +4520,7 @@ Static Public Attributes
    -

    Definition at line 3422 of file constraint_solver.h.

    +

    Definition at line 3411 of file constraint_solver.h.

    @@ -4573,7 +4544,7 @@ Static Public Attributes
    -

    Definition at line 3423 of file constraint_solver.h.

    +

    Definition at line 3412 of file constraint_solver.h.

    @@ -4597,7 +4568,7 @@ Static Public Attributes
    -

    Definition at line 3424 of file constraint_solver.h.

    +

    Definition at line 3413 of file constraint_solver.h.

    @@ -4621,7 +4592,7 @@ Static Public Attributes
    -

    Definition at line 3425 of file constraint_solver.h.

    +

    Definition at line 3414 of file constraint_solver.h.

    @@ -4645,7 +4616,7 @@ Static Public Attributes
    -

    Definition at line 3350 of file constraint_solver.h.

    +

    Definition at line 3339 of file constraint_solver.h.

    @@ -4669,7 +4640,7 @@ Static Public Attributes
    -

    Definition at line 3351 of file constraint_solver.h.

    +

    Definition at line 3340 of file constraint_solver.h.

    @@ -4693,7 +4664,7 @@ Static Public Attributes
    -

    Definition at line 3352 of file constraint_solver.h.

    +

    Definition at line 3341 of file constraint_solver.h.

    @@ -4717,7 +4688,7 @@ Static Public Attributes
    -

    Definition at line 3426 of file constraint_solver.h.

    +

    Definition at line 3415 of file constraint_solver.h.

    @@ -4741,7 +4712,7 @@ Static Public Attributes
    -

    Definition at line 3427 of file constraint_solver.h.

    +

    Definition at line 3416 of file constraint_solver.h.

    @@ -4765,7 +4736,7 @@ Static Public Attributes
    -

    Definition at line 3428 of file constraint_solver.h.

    +

    Definition at line 3417 of file constraint_solver.h.

    @@ -4789,7 +4760,7 @@ Static Public Attributes
    -

    Definition at line 3448 of file constraint_solver.h.

    +

    Definition at line 3437 of file constraint_solver.h.

    @@ -4813,7 +4784,7 @@ Static Public Attributes
    -

    Definition at line 3447 of file constraint_solver.h.

    +

    Definition at line 3436 of file constraint_solver.h.

    @@ -4837,7 +4808,7 @@ Static Public Attributes
    -

    Definition at line 3429 of file constraint_solver.h.

    +

    Definition at line 3418 of file constraint_solver.h.

    @@ -4861,7 +4832,7 @@ Static Public Attributes
    -

    Definition at line 3353 of file constraint_solver.h.

    +

    Definition at line 3342 of file constraint_solver.h.

    @@ -4885,7 +4856,7 @@ Static Public Attributes
    -

    Definition at line 3354 of file constraint_solver.h.

    +

    Definition at line 3343 of file constraint_solver.h.

    @@ -4909,7 +4880,7 @@ Static Public Attributes
    -

    Definition at line 3355 of file constraint_solver.h.

    +

    Definition at line 3344 of file constraint_solver.h.

    @@ -4933,7 +4904,7 @@ Static Public Attributes
    -

    Definition at line 3356 of file constraint_solver.h.

    +

    Definition at line 3345 of file constraint_solver.h.

    @@ -4957,7 +4928,7 @@ Static Public Attributes
    -

    Definition at line 3444 of file constraint_solver.h.

    +

    Definition at line 3433 of file constraint_solver.h.

    @@ -4981,7 +4952,7 @@ Static Public Attributes
    -

    Definition at line 3430 of file constraint_solver.h.

    +

    Definition at line 3419 of file constraint_solver.h.

    @@ -5005,7 +4976,7 @@ Static Public Attributes
    -

    Definition at line 3431 of file constraint_solver.h.

    +

    Definition at line 3420 of file constraint_solver.h.

    @@ -5029,7 +5000,7 @@ Static Public Attributes
    -

    Definition at line 3357 of file constraint_solver.h.

    +

    Definition at line 3346 of file constraint_solver.h.

    @@ -5053,7 +5024,7 @@ Static Public Attributes
    -

    Definition at line 3449 of file constraint_solver.h.

    +

    Definition at line 3438 of file constraint_solver.h.

    @@ -5077,7 +5048,7 @@ Static Public Attributes
    -

    Definition at line 3358 of file constraint_solver.h.

    +

    Definition at line 3347 of file constraint_solver.h.

    @@ -5101,7 +5072,7 @@ Static Public Attributes
    -

    Definition at line 3432 of file constraint_solver.h.

    +

    Definition at line 3421 of file constraint_solver.h.

    @@ -5125,7 +5096,7 @@ Static Public Attributes
    -

    Definition at line 3359 of file constraint_solver.h.

    +

    Definition at line 3348 of file constraint_solver.h.

    @@ -5149,7 +5120,7 @@ Static Public Attributes
    -

    Definition at line 3433 of file constraint_solver.h.

    +

    Definition at line 3422 of file constraint_solver.h.

    @@ -5173,7 +5144,7 @@ Static Public Attributes
    -

    Definition at line 3370 of file constraint_solver.h.

    +

    Definition at line 3359 of file constraint_solver.h.

    @@ -5197,7 +5168,7 @@ Static Public Attributes
    -

    Definition at line 3372 of file constraint_solver.h.

    +

    Definition at line 3361 of file constraint_solver.h.

    @@ -5221,7 +5192,7 @@ Static Public Attributes
    -

    Definition at line 3434 of file constraint_solver.h.

    +

    Definition at line 3423 of file constraint_solver.h.

    @@ -5245,7 +5216,7 @@ Static Public Attributes
    -

    Definition at line 3435 of file constraint_solver.h.

    +

    Definition at line 3424 of file constraint_solver.h.

    @@ -5269,7 +5240,7 @@ Static Public Attributes
    -

    Definition at line 3360 of file constraint_solver.h.

    +

    Definition at line 3349 of file constraint_solver.h.

    @@ -5293,7 +5264,7 @@ Static Public Attributes
    -

    Definition at line 3436 of file constraint_solver.h.

    +

    Definition at line 3425 of file constraint_solver.h.

    @@ -5317,7 +5288,7 @@ Static Public Attributes
    -

    Definition at line 3373 of file constraint_solver.h.

    +

    Definition at line 3362 of file constraint_solver.h.

    @@ -5341,7 +5312,7 @@ Static Public Attributes
    -

    Definition at line 3374 of file constraint_solver.h.

    +

    Definition at line 3363 of file constraint_solver.h.

    @@ -5365,7 +5336,7 @@ Static Public Attributes
    -

    Definition at line 3437 of file constraint_solver.h.

    +

    Definition at line 3426 of file constraint_solver.h.

    @@ -5389,7 +5360,7 @@ Static Public Attributes
    -

    Definition at line 3361 of file constraint_solver.h.

    +

    Definition at line 3350 of file constraint_solver.h.

    @@ -5413,7 +5384,7 @@ Static Public Attributes
    -

    Definition at line 3375 of file constraint_solver.h.

    +

    Definition at line 3364 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1NumericalRev-members.html b/docs/cpp_routing/classoperations__research_1_1NumericalRev-members.html index 9fe7c822d6..3e05a73850 100644 --- a/docs/cpp_routing/classoperations__research_1_1NumericalRev-members.html +++ b/docs/cpp_routing/classoperations__research_1_1NumericalRev-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1NumericalRev.html b/docs/cpp_routing/classoperations__research_1_1NumericalRev.html index 137cb4d384..c640c6ff3a 100644 --- a/docs/cpp_routing/classoperations__research_1_1NumericalRev.html +++ b/docs/cpp_routing/classoperations__research_1_1NumericalRev.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -134,7 +105,7 @@ class operations_research::NumericalRev< T >

    Subclass of Rev<T> which adds numerical operations.

    -

    Definition at line 3701 of file constraint_solver.h.

    +

    Definition at line 3690 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ NumericalRev()

    @@ -160,7 +131,7 @@ class operations_research::NumericalRev< T >
    -

    Definition at line 3703 of file constraint_solver.h.

    +

    Definition at line 3692 of file constraint_solver.h.

    @@ -199,7 +170,7 @@ class operations_research::NumericalRev< T >
    -

    Definition at line 3705 of file constraint_solver.h.

    +

    Definition at line 3694 of file constraint_solver.h.

    @@ -227,7 +198,7 @@ class operations_research::NumericalRev< T >
    -

    Definition at line 3711 of file constraint_solver.h.

    +

    Definition at line 3700 of file constraint_solver.h.

    @@ -255,7 +226,7 @@ class operations_research::NumericalRev< T >
    -

    Definition at line 3709 of file constraint_solver.h.

    +

    Definition at line 3698 of file constraint_solver.h.

    @@ -293,7 +264,7 @@ class operations_research::NumericalRev< T >
    -

    Definition at line 3684 of file constraint_solver.h.

    +

    Definition at line 3673 of file constraint_solver.h.

    @@ -320,7 +291,7 @@ class operations_research::NumericalRev< T >
    -

    Definition at line 3682 of file constraint_solver.h.

    +

    Definition at line 3671 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1NumericalRevArray-members.html b/docs/cpp_routing/classoperations__research_1_1NumericalRevArray-members.html index d4cee7df9d..0f0c58b953 100644 --- a/docs/cpp_routing/classoperations__research_1_1NumericalRevArray-members.html +++ b/docs/cpp_routing/classoperations__research_1_1NumericalRevArray-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1NumericalRevArray.html b/docs/cpp_routing/classoperations__research_1_1NumericalRevArray.html index 0442ba4c25..3deb06906e 100644 --- a/docs/cpp_routing/classoperations__research_1_1NumericalRevArray.html +++ b/docs/cpp_routing/classoperations__research_1_1NumericalRevArray.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -138,7 +109,7 @@ class operations_research::NumericalRevArray< T >

    Subclass of RevArray<T> which adds numerical operations.

    -

    Definition at line 3759 of file constraint_solver.h.

    +

    Definition at line 3748 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ NumericalRevArray()

    @@ -174,7 +145,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3761 of file constraint_solver.h.

    +

    Definition at line 3750 of file constraint_solver.h.

    @@ -219,7 +190,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3763 of file constraint_solver.h.

    +

    Definition at line 3752 of file constraint_solver.h.

    @@ -257,7 +228,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3769 of file constraint_solver.h.

    +

    Definition at line 3758 of file constraint_solver.h.

    @@ -295,7 +266,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3767 of file constraint_solver.h.

    +

    Definition at line 3756 of file constraint_solver.h.

    @@ -323,7 +294,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3737 of file constraint_solver.h.

    +

    Definition at line 3726 of file constraint_solver.h.

    @@ -367,7 +338,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3740 of file constraint_solver.h.

    +

    Definition at line 3729 of file constraint_solver.h.

    @@ -394,7 +365,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3732 of file constraint_solver.h.

    +

    Definition at line 3721 of file constraint_solver.h.

    @@ -422,7 +393,7 @@ class operations_research::NumericalRevArray< T >
    -

    Definition at line 3734 of file constraint_solver.h.

    +

    Definition at line 3723 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1OptimizeVar-members.html b/docs/cpp_routing/classoperations__research_1_1OptimizeVar-members.html index c96f2cbda9..90d95c0ba8 100644 --- a/docs/cpp_routing/classoperations__research_1_1OptimizeVar-members.html +++ b/docs/cpp_routing/classoperations__research_1_1OptimizeVar-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1OptimizeVar.html b/docs/cpp_routing/classoperations__research_1_1OptimizeVar.html index b94b4df1a5..d4c742af0d 100644 --- a/docs/cpp_routing/classoperations__research_1_1OptimizeVar.html +++ b/docs/cpp_routing/classoperations__research_1_1OptimizeVar.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -235,7 +206,7 @@ Protected Attributes

    This class encapsulates an objective.

    It requires the direction (minimize or maximize), the variable to optimize, and the improvement step.

    -

    Definition at line 4147 of file constraint_solver.h.

    +

    Definition at line 4136 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ OptimizeVar()

    @@ -688,7 +659,7 @@ Protected Attributes

    Returns the best value found during search.

    -

    Definition at line 4153 of file constraint_solver.h.

    +

    Definition at line 4142 of file constraint_solver.h.

    @@ -927,7 +898,7 @@ Protected Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3649 of file constraint_solver.h.

    +

    Definition at line 3638 of file constraint_solver.h.

    @@ -1069,7 +1040,7 @@ Protected Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3658 of file constraint_solver.h.

    +

    Definition at line 3647 of file constraint_solver.h.

    @@ -1153,7 +1124,7 @@ Protected Attributes
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -1182,7 +1153,7 @@ Protected Attributes

    Returns the variable that is optimized.

    -

    Definition at line 4156 of file constraint_solver.h.

    +

    Definition at line 4145 of file constraint_solver.h.

    @@ -1207,7 +1178,7 @@ Protected Attributes
    -

    Definition at line 4173 of file constraint_solver.h.

    +

    Definition at line 4162 of file constraint_solver.h.

    @@ -1231,7 +1202,7 @@ Protected Attributes
    -

    Definition at line 4175 of file constraint_solver.h.

    +

    Definition at line 4164 of file constraint_solver.h.

    @@ -1255,7 +1226,7 @@ Protected Attributes
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    @@ -1279,7 +1250,7 @@ Protected Attributes
    -

    Definition at line 4174 of file constraint_solver.h.

    +

    Definition at line 4163 of file constraint_solver.h.

    @@ -1303,7 +1274,7 @@ Protected Attributes
    -

    Definition at line 4172 of file constraint_solver.h.

    +

    Definition at line 4161 of file constraint_solver.h.

    @@ -1327,7 +1298,7 @@ Protected Attributes
    -

    Definition at line 4171 of file constraint_solver.h.

    +

    Definition at line 4160 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1Pack-members.html b/docs/cpp_routing/classoperations__research_1_1Pack-members.html index 24e8de843b..a85d64a642 100644 --- a/docs/cpp_routing/classoperations__research_1_1Pack-members.html +++ b/docs/cpp_routing/classoperations__research_1_1Pack-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1Pack.html b/docs/cpp_routing/classoperations__research_1_1Pack.html index 0a12b1473d..2fadf67051 100644 --- a/docs/cpp_routing/classoperations__research_1_1Pack.html +++ b/docs/cpp_routing/classoperations__research_1_1Pack.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -240,7 +211,7 @@ Public Member Functions

    Detailed Description

    -

    Definition at line 5136 of file constraint_solver.h.

    +

    Definition at line 5125 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ Pack()

    @@ -821,7 +792,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -849,7 +820,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -905,7 +876,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -1247,7 +1218,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -1275,7 +1246,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -1331,7 +1302,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -1422,7 +1393,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -1469,7 +1440,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator-members.html b/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator-members.html index fa0fa7c292..5f19cd84f0 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator.html b/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator.html index 6dc3140c4a..f082404cfd 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1PairExchangeOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator-members.html b/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator-members.html index 68ec337124..481f397d5f 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator.html b/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator.html index c58bcc723c..b78d56981c 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1PairExchangeRelocateOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator-members.html b/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator-members.html index d9f1dc2089..fc6e8985bf 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator.html b/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator.html index d892ed6592..2162ffb35b 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1PairNodeSwapActiveOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator-members.html b/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator-members.html index e72320bc28..77561d46b7 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator.html b/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator.html index 5a66f25af2..3e10b10720 100644 --- a/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1PairRelocateOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder-members.html index 3939e4c025..ce496dda9f 100644 --- a/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder.html index 61441b2490..eb2b0393e6 100644 --- a/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1ParallelSavingsFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PathOperator-members.html b/docs/cpp_routing/classoperations__research_1_1PathOperator-members.html index 334f5f4506..83f4e6c990 100644 --- a/docs/cpp_routing/classoperations__research_1_1PathOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PathOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PathOperator.html b/docs/cpp_routing/classoperations__research_1_1PathOperator.html index c7fdce625f..38b2e1be32 100644 --- a/docs/cpp_routing/classoperations__research_1_1PathOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1PathOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -585,9 +556,9 @@ Protected Attributes
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator-members.html b/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator-members.html index 889c43b663..f9690592ac 100644 --- a/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator.html b/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator.html index 3c3a7b1186..2877e0f873 100644 --- a/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1PathWithPreviousNodesOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject-members.html b/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject-members.html index 6e3be9d59e..c5e76ce984 100644 --- a/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject.html b/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject.html index 89828ac05d..7317331b99 100644 --- a/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject.html +++ b/docs/cpp_routing/classoperations__research_1_1PropagationBaseObject.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -175,7 +146,7 @@ Public Member Functions

    NOLINT.

    The PropagationBaseObject is a subclass of BaseObject that is also friend to the Solver class. It allows accessing methods useful when writing new constraints or new expressions.

    -

    Definition at line 3110 of file constraint_solver.h.

    +

    Definition at line 3099 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ PropagationBaseObject()

    @@ -201,7 +172,7 @@ Public Member Functions
    -

    Definition at line 3112 of file constraint_solver.h.

    +

    Definition at line 3101 of file constraint_solver.h.

    @@ -228,7 +199,7 @@ Public Member Functions
    -

    Definition at line 3113 of file constraint_solver.h.

    +

    Definition at line 3102 of file constraint_solver.h.

    @@ -289,7 +260,7 @@ Public Member Functions

    Reimplemented in Pack, Assignment, SequenceVar, Constraint, and BooleanVar.

    -

    Definition at line 3115 of file constraint_solver.h.

    +

    Definition at line 3104 of file constraint_solver.h.

    @@ -338,7 +309,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -366,7 +337,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -414,7 +385,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -489,7 +460,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -517,7 +488,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -565,7 +536,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -592,7 +563,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -622,7 +593,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1PropagationMonitor-members.html b/docs/cpp_routing/classoperations__research_1_1PropagationMonitor-members.html index 52425dfd45..1a69d2cfa9 100644 --- a/docs/cpp_routing/classoperations__research_1_1PropagationMonitor-members.html +++ b/docs/cpp_routing/classoperations__research_1_1PropagationMonitor-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1PropagationMonitor.html b/docs/cpp_routing/classoperations__research_1_1PropagationMonitor.html index c13c290040..fce56188f0 100644 --- a/docs/cpp_routing/classoperations__research_1_1PropagationMonitor.html +++ b/docs/cpp_routing/classoperations__research_1_1PropagationMonitor.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -281,7 +252,7 @@ Static Public Attributes

    Detailed Description

    -

    Definition at line 1610 of file constraint_solveri.h.

    +

    Definition at line 1593 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ PropagationMonitor()

    @@ -791,7 +762,7 @@ Static Public Attributes

    Reimplemented from BaseObject.

    -

    Definition at line 1614 of file constraint_solveri.h.

    +

    Definition at line 1597 of file constraint_solveri.h.

    @@ -1117,7 +1088,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3649 of file constraint_solver.h.

    +

    Definition at line 3638 of file constraint_solver.h.

    @@ -1259,7 +1230,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3658 of file constraint_solver.h.

    +

    Definition at line 3647 of file constraint_solver.h.

    @@ -2387,7 +2358,7 @@ Static Public Attributes
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -2438,7 +2409,7 @@ Static Public Attributes
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1RegularLimit-members.html b/docs/cpp_routing/classoperations__research_1_1RegularLimit-members.html index 6a28c4c385..2998031919 100644 --- a/docs/cpp_routing/classoperations__research_1_1RegularLimit-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RegularLimit-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RegularLimit.html b/docs/cpp_routing/classoperations__research_1_1RegularLimit.html index 849c1e94a6..626040b76c 100644 --- a/docs/cpp_routing/classoperations__research_1_1RegularLimit.html +++ b/docs/cpp_routing/classoperations__research_1_1RegularLimit.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -239,7 +210,7 @@ Static Public Attributes

    Detailed Description

    Usual limit based on wall_time, number of explored branches and number of failures in the search tree.

    -

    Definition at line 4224 of file constraint_solver.h.

    +

    Definition at line 4213 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ RegularLimit()

    @@ -348,7 +319,7 @@ Static Public Attributes
    -

    Definition at line 4250 of file constraint_solver.h.

    +

    Definition at line 4239 of file constraint_solver.h.

    @@ -716,7 +687,7 @@ Static Public Attributes
    -

    Definition at line 4243 of file constraint_solver.h.

    +

    Definition at line 4232 of file constraint_solver.h.

    @@ -806,7 +777,7 @@ Static Public Attributes

    Returns true if the limit has been crossed.

    -

    Definition at line 4188 of file constraint_solver.h.

    +

    Definition at line 4177 of file constraint_solver.h.

    @@ -860,7 +831,7 @@ Static Public Attributes
    -

    Definition at line 4237 of file constraint_solver.h.

    +

    Definition at line 4226 of file constraint_solver.h.

    @@ -1039,7 +1010,7 @@ Static Public Attributes
    -

    Definition at line 4244 of file constraint_solver.h.

    +

    Definition at line 4233 of file constraint_solver.h.

    @@ -1371,7 +1342,7 @@ Static Public Attributes
    -

    Definition at line 4245 of file constraint_solver.h.

    +

    Definition at line 4234 of file constraint_solver.h.

    @@ -1398,7 +1369,7 @@ Static Public Attributes
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -1465,7 +1436,7 @@ Static Public Attributes
    -

    Definition at line 4238 of file constraint_solver.h.

    +

    Definition at line 4227 of file constraint_solver.h.

    @@ -1490,7 +1461,7 @@ Static Public Attributes
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain-members.html b/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain-members.html index 33ab7cca85..00cc2cd893 100644 --- a/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain.html b/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain.html index 84270a59e9..ba4ec035f3 100644 --- a/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain.html +++ b/docs/cpp_routing/classoperations__research_1_1RelocateExpensiveChain.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip-members.html b/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip-members.html index 1904fce79a..d283736b81 100644 --- a/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip.html b/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip.html index 217c98a12b..53db2fb744 100644 --- a/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip.html +++ b/docs/cpp_routing/classoperations__research_1_1RelocateSubtrip.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1Rev-members.html b/docs/cpp_routing/classoperations__research_1_1Rev-members.html index c48663582d..a5684df319 100644 --- a/docs/cpp_routing/classoperations__research_1_1Rev-members.html +++ b/docs/cpp_routing/classoperations__research_1_1Rev-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1Rev.html b/docs/cpp_routing/classoperations__research_1_1Rev.html index aa1de0875c..1b74e04e20 100644 --- a/docs/cpp_routing/classoperations__research_1_1Rev.html +++ b/docs/cpp_routing/classoperations__research_1_1Rev.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -120,7 +91,7 @@ class operations_research::Rev< T >

    This class adds reversibility to a POD type.

    It contains the stamp optimization. i.e. the SaveValue call is done only once per node of the search tree. Please note that actual stamps always starts at 1, thus an initial value of 0 will always trigger the first SaveValue.

    -

    Definition at line 3678 of file constraint_solver.h.

    +

    Definition at line 3667 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ Rev()

    @@ -146,7 +117,7 @@ class operations_research::Rev< T >
    -

    Definition at line 3680 of file constraint_solver.h.

    +

    Definition at line 3669 of file constraint_solver.h.

    @@ -185,7 +156,7 @@ class operations_research::Rev< T >
    -

    Definition at line 3684 of file constraint_solver.h.

    +

    Definition at line 3673 of file constraint_solver.h.

    @@ -212,7 +183,7 @@ class operations_research::Rev< T >
    -

    Definition at line 3682 of file constraint_solver.h.

    +

    Definition at line 3671 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1RevArray-members.html b/docs/cpp_routing/classoperations__research_1_1RevArray-members.html index 5f64476b4c..28a9d70b38 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevArray-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevArray-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevArray.html b/docs/cpp_routing/classoperations__research_1_1RevArray.html index fe06a3cb6e..542661f3a7 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevArray.html +++ b/docs/cpp_routing/classoperations__research_1_1RevArray.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -126,7 +97,7 @@ class operations_research::RevArray< T >

    Reversible array of POD types.

    It contains the stamp optimization. I.e., the SaveValue call is done only once per node of the search tree. Please note that actual stamp always starts at 1, thus an initial value of 0 always triggers the first SaveValue.

    -

    Definition at line 3720 of file constraint_solver.h.

    +

    Definition at line 3709 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ RevArray()

    @@ -162,7 +133,7 @@ class operations_research::RevArray< T >
    -

    Definition at line 3722 of file constraint_solver.h.

    +

    Definition at line 3711 of file constraint_solver.h.

    @@ -189,7 +160,7 @@ class operations_research::RevArray< T >
    -

    Definition at line 3730 of file constraint_solver.h.

    +

    Definition at line 3719 of file constraint_solver.h.

    @@ -218,7 +189,7 @@ class operations_research::RevArray< T >
    -

    Definition at line 3737 of file constraint_solver.h.

    +

    Definition at line 3726 of file constraint_solver.h.

    @@ -262,7 +233,7 @@ class operations_research::RevArray< T >
    -

    Definition at line 3740 of file constraint_solver.h.

    +

    Definition at line 3729 of file constraint_solver.h.

    @@ -289,7 +260,7 @@ class operations_research::RevArray< T >
    -

    Definition at line 3732 of file constraint_solver.h.

    +

    Definition at line 3721 of file constraint_solver.h.

    @@ -317,7 +288,7 @@ class operations_research::RevArray< T >
    -

    Definition at line 3734 of file constraint_solver.h.

    +

    Definition at line 3723 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1RevBitMatrix-members.html b/docs/cpp_routing/classoperations__research_1_1RevBitMatrix-members.html index eea549044b..aeb4fa31ff 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevBitMatrix-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevBitMatrix-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevBitMatrix.html b/docs/cpp_routing/classoperations__research_1_1RevBitMatrix.html index df19c5f10f..6723460095 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevBitMatrix.html +++ b/docs/cpp_routing/classoperations__research_1_1RevBitMatrix.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevBitSet-members.html b/docs/cpp_routing/classoperations__research_1_1RevBitSet-members.html index 3e1cf8bfb8..652653102c 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevBitSet-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevBitSet-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevBitSet.html b/docs/cpp_routing/classoperations__research_1_1RevBitSet.html index 9a1f1fb786..3c224e2c48 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevBitSet.html +++ b/docs/cpp_routing/classoperations__research_1_1RevBitSet.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevGrowingArray-members.html b/docs/cpp_routing/classoperations__research_1_1RevGrowingArray-members.html index 5d9c7138d7..bc487a40f4 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevGrowingArray-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevGrowingArray-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevGrowingArray.html b/docs/cpp_routing/classoperations__research_1_1RevGrowingArray.html index c2e61f0ff9..681db3c2f5 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevGrowingArray.html +++ b/docs/cpp_routing/classoperations__research_1_1RevGrowingArray.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -113,7 +84,7 @@ class operations_research::RevGrowingArray< T, C >

    This class is a reversible growing array.

    In can grow in both directions, and even accept negative indices. The objects stored have a type T. As it relies on the solver for reversibility, these objects can be up-casted to 'C' when using Solver::SaveValue().

    -

    Definition at line 2223 of file constraint_solveri.h.

    +

    Definition at line 2206 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ RevGrowingArray()

    @@ -139,7 +110,7 @@ class operations_research::RevGrowingArray< T, C >
    -

    Definition at line 2225 of file constraint_solveri.h.

    +

    Definition at line 2208 of file constraint_solveri.h.

    @@ -166,7 +137,7 @@ class operations_research::RevGrowingArray< T, C >
    -

    Definition at line 2230 of file constraint_solveri.h.

    +

    Definition at line 2213 of file constraint_solveri.h.

    @@ -195,7 +166,7 @@ class operations_research::RevGrowingArray< T, C >
    -

    Definition at line 2236 of file constraint_solveri.h.

    +

    Definition at line 2219 of file constraint_solveri.h.

    @@ -239,7 +210,7 @@ class operations_research::RevGrowingArray< T, C >
    -

    Definition at line 2246 of file constraint_solveri.h.

    +

    Definition at line 2229 of file constraint_solveri.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap-members.html b/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap-members.html index f3cc8d2fdf..56c7e4b05f 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap.html b/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap.html index 7084c1b455..5ada4ad188 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap.html +++ b/docs/cpp_routing/classoperations__research_1_1RevImmutableMultiMap.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevIntSet-members.html b/docs/cpp_routing/classoperations__research_1_1RevIntSet-members.html index ab9f8e04eb..07c9899b88 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevIntSet-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevIntSet-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevIntSet.html b/docs/cpp_routing/classoperations__research_1_1RevIntSet.html index 6cdd062478..e73b9bc6e1 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevIntSet.html +++ b/docs/cpp_routing/classoperations__research_1_1RevIntSet.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -146,7 +117,7 @@ class operations_research::RevIntSet< T >

    This is a special class to represent a 'residual' set of T.

    T must be an integer type. You fill it at first, and then during search, you can efficiently remove an element, and query the removed elements.

    -

    Definition at line 2306 of file constraint_solveri.h.

    +

    Definition at line 2289 of file constraint_solveri.h.

    Member Typedef Documentation

    ◆ const_iterator

    @@ -162,7 +133,7 @@ class operations_research::RevIntSet< T >

    Iterators on the indices.

    -

    Definition at line 2378 of file constraint_solveri.h.

    +

    Definition at line 2361 of file constraint_solveri.h.

    @@ -193,7 +164,7 @@ class operations_research::RevIntSet< T >

    Capacity is the fixed size of the set (it cannot grow).

    -

    Definition at line 2311 of file constraint_solveri.h.

    +

    Definition at line 2294 of file constraint_solveri.h.

    @@ -239,7 +210,7 @@ class operations_research::RevIntSet< T >

    Capacity is the fixed size of the set (it cannot grow).

    -

    Definition at line 2323 of file constraint_solveri.h.

    +

    Definition at line 2306 of file constraint_solveri.h.

    @@ -266,7 +237,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2334 of file constraint_solveri.h.

    +

    Definition at line 2317 of file constraint_solveri.h.

    @@ -294,7 +265,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2379 of file constraint_solveri.h.

    +

    Definition at line 2362 of file constraint_solveri.h.

    @@ -321,7 +292,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2342 of file constraint_solveri.h.

    +

    Definition at line 2325 of file constraint_solveri.h.

    @@ -349,7 +320,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2375 of file constraint_solveri.h.

    +

    Definition at line 2358 of file constraint_solveri.h.

    @@ -377,7 +348,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2344 of file constraint_solveri.h.

    +

    Definition at line 2327 of file constraint_solveri.h.

    @@ -404,7 +375,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2380 of file constraint_solveri.h.

    +

    Definition at line 2363 of file constraint_solveri.h.

    @@ -443,7 +414,7 @@ class operations_research::RevIntSet< T >

    Valid.

    -

    Definition at line 2356 of file constraint_solveri.h.

    +

    Definition at line 2339 of file constraint_solveri.h.

    @@ -481,7 +452,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2365 of file constraint_solveri.h.

    +

    Definition at line 2348 of file constraint_solveri.h.

    @@ -509,7 +480,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2350 of file constraint_solveri.h.

    +

    Definition at line 2333 of file constraint_solveri.h.

    @@ -547,7 +518,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2370 of file constraint_solveri.h.

    +

    Definition at line 2353 of file constraint_solveri.h.

    @@ -574,7 +545,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2340 of file constraint_solveri.h.

    +

    Definition at line 2323 of file constraint_solveri.h.

    @@ -599,7 +570,7 @@ class operations_research::RevIntSet< T >
    -

    Definition at line 2308 of file constraint_solveri.h.

    +

    Definition at line 2291 of file constraint_solveri.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1RevPartialSequence-members.html b/docs/cpp_routing/classoperations__research_1_1RevPartialSequence-members.html index 77997de770..84babfe3ab 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevPartialSequence-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevPartialSequence-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevPartialSequence.html b/docs/cpp_routing/classoperations__research_1_1RevPartialSequence.html index df11023a7d..eea287c471 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevPartialSequence.html +++ b/docs/cpp_routing/classoperations__research_1_1RevPartialSequence.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -123,7 +94,7 @@ Public Member Functions

    Detailed Description

    --— RevPartialSequence --—

    -

    Definition at line 2418 of file constraint_solveri.h.

    +

    Definition at line 2401 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ RevPartialSequence() [1/2]

    @@ -149,7 +120,7 @@ Public Member Functions
    -

    Definition at line 2420 of file constraint_solveri.h.

    +

    Definition at line 2403 of file constraint_solveri.h.

    @@ -177,7 +148,7 @@ Public Member Functions
    -

    Definition at line 2432 of file constraint_solveri.h.

    +

    Definition at line 2415 of file constraint_solveri.h.

    @@ -204,7 +175,7 @@ Public Member Functions
    -

    Definition at line 2444 of file constraint_solveri.h.

    +

    Definition at line 2427 of file constraint_solveri.h.

    @@ -232,7 +203,7 @@ Public Member Functions
    -

    Definition at line 2478 of file constraint_solveri.h.

    +

    Definition at line 2461 of file constraint_solveri.h.

    @@ -260,7 +231,7 @@ Public Member Functions
    -

    Definition at line 2472 of file constraint_solveri.h.

    +

    Definition at line 2455 of file constraint_solveri.h.

    @@ -287,7 +258,7 @@ Public Member Functions
    -

    Definition at line 2446 of file constraint_solveri.h.

    +

    Definition at line 2429 of file constraint_solveri.h.

    @@ -314,7 +285,7 @@ Public Member Functions
    -

    Definition at line 2448 of file constraint_solveri.h.

    +

    Definition at line 2431 of file constraint_solveri.h.

    @@ -342,7 +313,7 @@ Public Member Functions
    -

    Definition at line 2453 of file constraint_solveri.h.

    +

    Definition at line 2436 of file constraint_solveri.h.

    @@ -380,7 +351,7 @@ Public Member Functions
    -

    Definition at line 2460 of file constraint_solveri.h.

    +

    Definition at line 2443 of file constraint_solveri.h.

    @@ -418,7 +389,7 @@ Public Member Functions
    -

    Definition at line 2466 of file constraint_solveri.h.

    +

    Definition at line 2449 of file constraint_solveri.h.

    @@ -445,7 +416,7 @@ Public Member Functions
    -

    Definition at line 2450 of file constraint_solveri.h.

    +

    Definition at line 2433 of file constraint_solveri.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1RevSwitch-members.html b/docs/cpp_routing/classoperations__research_1_1RevSwitch-members.html index e2d443089f..2f0dd98899 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevSwitch-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RevSwitch-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RevSwitch.html b/docs/cpp_routing/classoperations__research_1_1RevSwitch.html index 27c51cde59..b80ae50168 100644 --- a/docs/cpp_routing/classoperations__research_1_1RevSwitch.html +++ b/docs/cpp_routing/classoperations__research_1_1RevSwitch.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingDimension-members.html b/docs/cpp_routing/classoperations__research_1_1RoutingDimension-members.html index 5155409072..51e581ea0c 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingDimension-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingDimension-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingDimension.html b/docs/cpp_routing/classoperations__research_1_1RoutingDimension.html index 5ac8ffc24b..770dcb9e50 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingDimension.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingDimension.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder-members.html index 1ce09a6f14..0bc42917a6 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder.html index 60593688f2..ba1af77014 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager-members.html b/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager-members.html index 2417cb4a6d..5e400ebb93 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager.html b/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager.html index 0a9267953a..517ca4ed31 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingIndexManager.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingModel-members.html b/docs/cpp_routing/classoperations__research_1_1RoutingModel-members.html index 773354117c..cfa6ec70a2 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingModel-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingModel-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingModel.html b/docs/cpp_routing/classoperations__research_1_1RoutingModel.html index abb0c87e86..8c3cf15e18 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingModel.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingModel.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor-members.html b/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor-members.html index 6922e6a1f4..22c1b6bd9d 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor-members.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor.html b/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor.html index ccec933841..ed1c17c594 100644 --- a/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor.html +++ b/docs/cpp_routing/classoperations__research_1_1RoutingModelVisitor.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -157,9 +128,9 @@ Static Public Attributes
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder-members.html index cb56958f5b..e962ae5fd1 100644 --- a/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder.html index a6f83f5d30..ca267eb934 100644 --- a/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder_1_1SavingsContainer.html b/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder_1_1SavingsContainer.html index 7dd13aaf25..92abe7a03b 100644 --- a/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder_1_1SavingsContainer.html +++ b/docs/cpp_routing/classoperations__research_1_1SavingsFilteredDecisionBuilder_1_1SavingsContainer.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SearchLimit-members.html b/docs/cpp_routing/classoperations__research_1_1SearchLimit-members.html index fd616be7a7..1f6b4c8386 100644 --- a/docs/cpp_routing/classoperations__research_1_1SearchLimit-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SearchLimit-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SearchLimit.html b/docs/cpp_routing/classoperations__research_1_1SearchLimit.html index 1ac01f9d29..5158f51b69 100644 --- a/docs/cpp_routing/classoperations__research_1_1SearchLimit.html +++ b/docs/cpp_routing/classoperations__research_1_1SearchLimit.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -222,7 +193,7 @@ Static Public Attributes

    Detailed Description

    Base class of all search limits.

    -

    Definition at line 4182 of file constraint_solver.h.

    +

    Definition at line 4171 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ SearchLimit()

    @@ -248,7 +219,7 @@ Static Public Attributes
    -

    Definition at line 4184 of file constraint_solver.h.

    +

    Definition at line 4173 of file constraint_solver.h.

    @@ -705,7 +676,7 @@ Static Public Attributes

    Returns true if the limit has been crossed.

    -

    Definition at line 4188 of file constraint_solver.h.

    +

    Definition at line 4177 of file constraint_solver.h.

    @@ -736,7 +707,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 4211 of file constraint_solver.h.

    +

    Definition at line 4200 of file constraint_solver.h.

    @@ -977,7 +948,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3649 of file constraint_solver.h.

    +

    Definition at line 3638 of file constraint_solver.h.

    @@ -1123,7 +1094,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3658 of file constraint_solver.h.

    +

    Definition at line 3647 of file constraint_solver.h.

    @@ -1207,7 +1178,7 @@ Static Public Attributes
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -1232,7 +1203,7 @@ Static Public Attributes
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SearchLog-members.html b/docs/cpp_routing/classoperations__research_1_1SearchLog-members.html index bc8cbfb479..7941e1132a 100644 --- a/docs/cpp_routing/classoperations__research_1_1SearchLog-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SearchLog-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SearchLog.html b/docs/cpp_routing/classoperations__research_1_1SearchLog.html index 9af6ca5854..d992abb3e2 100644 --- a/docs/cpp_routing/classoperations__research_1_1SearchLog.html +++ b/docs/cpp_routing/classoperations__research_1_1SearchLog.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -216,7 +187,7 @@ Protected Member Functions

    Detailed Description

    The base class of all search logs that periodically outputs information when the search is running.

    -

    Definition at line 1782 of file constraint_solveri.h.

    +

    Definition at line 1765 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ SearchLog()

    @@ -878,7 +849,7 @@ Protected Member Functions

    Reimplemented in RegularLimit.

    -

    Definition at line 3649 of file constraint_solver.h.

    +

    Definition at line 3638 of file constraint_solver.h.

    @@ -1055,7 +1026,7 @@ Protected Member Functions

    Reimplemented in RegularLimit.

    -

    Definition at line 3658 of file constraint_solver.h.

    +

    Definition at line 3647 of file constraint_solver.h.

    @@ -1139,7 +1110,7 @@ Protected Member Functions
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -1164,7 +1135,7 @@ Protected Member Functions
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SearchMonitor-members.html b/docs/cpp_routing/classoperations__research_1_1SearchMonitor-members.html index aae08aad5e..dbd3a3d50d 100644 --- a/docs/cpp_routing/classoperations__research_1_1SearchMonitor-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SearchMonitor-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SearchMonitor.html b/docs/cpp_routing/classoperations__research_1_1SearchMonitor.html index a4ca99bed6..d2ca283b4b 100644 --- a/docs/cpp_routing/classoperations__research_1_1SearchMonitor.html +++ b/docs/cpp_routing/classoperations__research_1_1SearchMonitor.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -211,7 +182,7 @@ Static Public Attributes

    Detailed Description

    A search monitor is a simple set of callbacks to monitor all search events.

    -

    Definition at line 3578 of file constraint_solver.h.

    +

    Definition at line 3567 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ SearchMonitor()

    @@ -237,7 +208,7 @@ Static Public Attributes
    -

    Definition at line 3582 of file constraint_solver.h.

    +

    Definition at line 3571 of file constraint_solver.h.

    @@ -264,7 +235,7 @@ Static Public Attributes
    -

    Definition at line 3583 of file constraint_solver.h.

    +

    Definition at line 3572 of file constraint_solver.h.

    @@ -633,9 +604,9 @@ Static Public Attributes
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    @@ -847,7 +818,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3649 of file constraint_solver.h.

    +

    Definition at line 3638 of file constraint_solver.h.

    @@ -964,7 +935,7 @@ Static Public Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3658 of file constraint_solver.h.

    +

    Definition at line 3647 of file constraint_solver.h.

    @@ -1048,7 +1019,7 @@ Static Public Attributes
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -1073,7 +1044,7 @@ Static Public Attributes
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVar-members.html b/docs/cpp_routing/classoperations__research_1_1SequenceVar-members.html index 7d1d4fc248..687e78fdfc 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVar-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVar-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVar.html b/docs/cpp_routing/classoperations__research_1_1SequenceVar.html index 4eb613d7e7..bd2374074d 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVar.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVar.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -209,7 +180,7 @@ Public Member Functions

    A sequence variable is a variable whose domain is a set of possible orderings of the interval variables.

    It allows ordering of tasks. It has two sets of methods: ComputePossibleFirstsAndLasts(), which returns the list of interval variables that can be ranked first or last; and RankFirst/RankNotFirst/RankLast/RankNotLast, which can be used to create the search decision.

    -

    Definition at line 4450 of file constraint_solver.h.

    +

    Definition at line 4439 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ SequenceVar()

    @@ -540,7 +511,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -568,7 +539,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -661,7 +632,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -933,7 +904,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -961,7 +932,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -1017,7 +988,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -1046,7 +1017,7 @@ Public Member Functions

    Returns the number of interval vars in the sequence.

    -

    Definition at line 4526 of file constraint_solver.h.

    +

    Definition at line 4515 of file constraint_solver.h.

    @@ -1073,7 +1044,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -1103,7 +1074,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVarElement-members.html b/docs/cpp_routing/classoperations__research_1_1SequenceVarElement-members.html index c596550e60..3a5930051b 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVarElement-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVarElement-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVarElement.html b/docs/cpp_routing/classoperations__research_1_1SequenceVarElement.html index 997436cf3a..ef4ab4f4af 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVarElement.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVarElement.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -172,7 +143,7 @@ Public Member Functions
  • The list of unperformed interval variables. Furthermore, if all performed variables are ranked, then by convention, the forward_sequence will contain all such variables and the backward_sequence will be empty.
  • -

    Definition at line 4717 of file constraint_solver.h.

    +

    Definition at line 4706 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ SequenceVarElement() [1/2]

    @@ -241,7 +212,7 @@ Public Member Functions
    -

    Definition at line 4545 of file constraint_solver.h.

    +

    Definition at line 4534 of file constraint_solver.h.

    @@ -268,7 +239,7 @@ Public Member Functions
    -

    Definition at line 4547 of file constraint_solver.h.

    +

    Definition at line 4536 of file constraint_solver.h.

    @@ -312,7 +283,7 @@ Public Member Functions
    -

    Definition at line 4740 of file constraint_solver.h.

    +

    Definition at line 4729 of file constraint_solver.h.

    @@ -374,7 +345,7 @@ Public Member Functions
    -

    Definition at line 4546 of file constraint_solver.h.

    +

    Definition at line 4535 of file constraint_solver.h.

    @@ -454,7 +425,7 @@ Public Member Functions
    -

    Definition at line 4747 of file constraint_solver.h.

    +

    Definition at line 4736 of file constraint_solver.h.

    @@ -656,7 +627,7 @@ Public Member Functions
    -

    Definition at line 4724 of file constraint_solver.h.

    +

    Definition at line 4713 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler-members.html b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler-members.html index 1ef77ef37d..7f7eed486d 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler.html b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler.html index 3b1d5bf401..59da647d23 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchHandler.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator-members.html b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator-members.html index 4697e72e0f..3a13410811 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator.html b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator.html index 3903ceb5fc..387c7c96a0 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1SequenceVarLocalSearchOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -480,9 +451,9 @@ Friends
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder-members.html b/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder-members.html index 58d471a863..8d6497c62a 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder.html b/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder.html index ba13e42248..ef8d63b4fa 100644 --- a/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder.html +++ b/docs/cpp_routing/classoperations__research_1_1SequentialSavingsFilteredDecisionBuilder.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts-members.html b/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts-members.html index 987798dbed..1be29222c9 100644 --- a/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts.html b/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts.html index 108ec325b0..2cab494f41 100644 --- a/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts.html +++ b/docs/cpp_routing/classoperations__research_1_1SimpleBoundCosts.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO-members.html b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO-members.html index 923c7005f8..27f24ad82f 100644 --- a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO.html b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO.html index 4a59cec2a5..63eee8b96f 100644 --- a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO.html +++ b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator-members.html b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator-members.html index fc297efa7e..fe9f6e40af 100644 --- a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator.html b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator.html index ed027d500a..42ed268912 100644 --- a/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator.html +++ b/docs/cpp_routing/classoperations__research_1_1SimpleRevFIFO_1_1Iterator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet-members.html b/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet-members.html index 9364636697..b8e635c51f 100644 --- a/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet.html b/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet.html index d0a22d6172..e1b13f73d2 100644 --- a/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet.html +++ b/docs/cpp_routing/classoperations__research_1_1SmallRevBitSet.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SolutionCollector-members.html b/docs/cpp_routing/classoperations__research_1_1SolutionCollector-members.html index 8c2e0b3ab7..7bd07371f9 100644 --- a/docs/cpp_routing/classoperations__research_1_1SolutionCollector-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SolutionCollector-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SolutionCollector.html b/docs/cpp_routing/classoperations__research_1_1SolutionCollector.html index 788d1e7d8a..3e2718a584 100644 --- a/docs/cpp_routing/classoperations__research_1_1SolutionCollector.html +++ b/docs/cpp_routing/classoperations__research_1_1SolutionCollector.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -300,7 +271,7 @@ Protected Attributes

    This class is the root class of all solution collectors.

    It implements a basic query API to be used independently of the collector used.

    -

    Definition at line 4044 of file constraint_solver.h.

    +

    Definition at line 4033 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ SolutionCollector() [1/2]

    @@ -978,7 +949,7 @@ Protected Attributes

    Reimplemented from BaseObject.

    -

    Definition at line 4049 of file constraint_solver.h.

    +

    Definition at line 4038 of file constraint_solver.h.

    @@ -1327,7 +1298,7 @@ Protected Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3649 of file constraint_solver.h.

    +

    Definition at line 3638 of file constraint_solver.h.

    @@ -1521,7 +1492,7 @@ Protected Attributes

    Reimplemented in RegularLimit.

    -

    Definition at line 3658 of file constraint_solver.h.

    +

    Definition at line 3647 of file constraint_solver.h.

    @@ -1549,7 +1520,7 @@ Protected Attributes
    -

    Definition at line 4125 of file constraint_solver.h.

    +

    Definition at line 4114 of file constraint_solver.h.

    @@ -1699,7 +1670,7 @@ Protected Attributes
    -

    Definition at line 3651 of file constraint_solver.h.

    +

    Definition at line 3640 of file constraint_solver.h.

    @@ -1834,7 +1805,7 @@ Protected Attributes
    -

    Definition at line 3580 of file constraint_solver.h.

    +

    Definition at line 3569 of file constraint_solver.h.

    @@ -1858,7 +1829,7 @@ Protected Attributes
    -

    Definition at line 4132 of file constraint_solver.h.

    +

    Definition at line 4121 of file constraint_solver.h.

    @@ -1882,7 +1853,7 @@ Protected Attributes
    -

    Definition at line 4134 of file constraint_solver.h.

    +

    Definition at line 4123 of file constraint_solver.h.

    @@ -1906,7 +1877,7 @@ Protected Attributes
    -

    Definition at line 4133 of file constraint_solver.h.

    +

    Definition at line 4122 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SolutionPool-members.html b/docs/cpp_routing/classoperations__research_1_1SolutionPool-members.html index fa4b60d162..8938c163bb 100644 --- a/docs/cpp_routing/classoperations__research_1_1SolutionPool-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SolutionPool-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SolutionPool.html b/docs/cpp_routing/classoperations__research_1_1SolutionPool.html index 69a083e70b..2f0724e6c5 100644 --- a/docs/cpp_routing/classoperations__research_1_1SolutionPool.html +++ b/docs/cpp_routing/classoperations__research_1_1SolutionPool.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -138,7 +109,7 @@ Public Member Functions

    This class is used to manage a pool of solutions.

    It can transform a single point local search into a multipoint local search.

    -

    Definition at line 5279 of file constraint_solver.h.

    +

    Definition at line 5268 of file constraint_solver.h.

    Constructor & Destructor Documentation

    ◆ SolutionPool()

    @@ -163,7 +134,7 @@ Public Member Functions
    -

    Definition at line 5281 of file constraint_solver.h.

    +

    Definition at line 5270 of file constraint_solver.h.

    @@ -190,7 +161,7 @@ Public Member Functions
    -

    Definition at line 5282 of file constraint_solver.h.

    +

    Definition at line 5271 of file constraint_solver.h.

    @@ -218,9 +189,9 @@ Public Member Functions
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1Solver-members.html b/docs/cpp_routing/classoperations__research_1_1Solver-members.html index 26bbe7c849..5e3079178a 100644 --- a/docs/cpp_routing/classoperations__research_1_1Solver-members.html +++ b/docs/cpp_routing/classoperations__research_1_1Solver-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -544,9 +515,7 @@ MakeSumGreaterOrEqual(const std::vector< IntVar * > &vars, int64 cst)Solver MakeSumLessOrEqual(const std::vector< IntVar * > &vars, int64 cst)Solver MakeSumObjectiveFilter(const std::vector< IntVar * > &vars, IndexEvaluator2 values, Solver::LocalSearchFilterBound filter_enum)Solver - MakeSumObjectiveFilter(const std::vector< IntVar * > &vars, IndexEvaluator2 values, ObjectiveWatcher delta_objective_callback, Solver::LocalSearchFilterBound filter_enum)Solver - MakeSumObjectiveFilter(const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, Solver::IndexEvaluator3 values, Solver::LocalSearchFilterBound filter_enum)Solver - MakeSumObjectiveFilter(const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, Solver::IndexEvaluator3 values, ObjectiveWatcher delta_objective_callback, Solver::LocalSearchFilterBound filter_enum)Solver + MakeSumObjectiveFilter(const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, IndexEvaluator3 values, Solver::LocalSearchFilterBound filter_enum)Solver MakeSymmetryManager(const std::vector< SymmetryBreaker * > &visitors)Solver MakeSymmetryManager(SymmetryBreaker *const v1)Solver MakeSymmetryManager(SymmetryBreaker *const v1, SymmetryBreaker *const v2)Solver @@ -588,107 +557,106 @@ NORMAL_PRIORITY enum valueSolver NOT_SET enum valueSolver Now() constSolver - ObjectiveWatcher typedefSolver - optimization_direction() constSolverinline - OptimizationDirection enum nameSolver - OROPT enum valueSolver - OUTSIDE_SEARCH enum valueSolver - parameters() constSolverinline - PATHLNS enum valueSolver - PopState()Solver - PROBLEM_INFEASIBLE enum valueSolver - PropagationBaseObject classSolverfriend - PushState()Solver - Queue classSolverfriend - Rand32(int32 size)Solverinline - Rand64(int64 size)Solverinline - RandomConcatenateOperators(const std::vector< LocalSearchOperator * > &ops)Solver - RandomConcatenateOperators(const std::vector< LocalSearchOperator * > &ops, int32 seed)Solver - RegisterDemon(Demon *const demon)Solver - RegisterIntervalVar(IntervalVar *const var)Solver - RegisterIntExpr(IntExpr *const expr)Solver - RegisterIntVar(IntVar *const var)Solver - RELOCATE enum valueSolver - ReSeed(int32 seed)Solverinline - RestartCurrentSearch()Solver - RestartSearch()Solver - RevAlloc(T *object)Solverinline - RevAllocArray(T *object)Solverinline - REVERSIBLE_ACTION enum valueSolver - RevImmutableMultiMap classSolverfriend - RoutingModel classSolverfriend - SaveAndAdd(T *adr, T val)Solverinline - SaveAndSetValue(T *adr, T val)Solverinline - SaveValue(T *o)Solverinline - SearchContext() constSolver - SearchContext(const Search *search) constSolver - SearchDepth() constSolver - SearchLeftDepth() constSolver - SearchLimit classSolverfriend - SearchMonitor classSolverfriend - SENTINEL enum valueSolver - SEQUENCE_DEFAULT enum valueSolver - SEQUENCE_SIMPLE enum valueSolver - SequenceStrategy enum nameSolver - set_fail_intercept(std::function< void()> fail_intercept)Solverinline - set_optimization_direction(OptimizationDirection direction)Solverinline - SetBranchSelector(BranchSelector bs)Solver - SetSearchContext(Search *search, const std::string &search_context)Solver - SetUseFastLocalSearch(bool use_fast_local_search)Solverinline - ShouldFail()Solverinline - SIMPLE_MARKER enum valueSolver - SIMPLELNS enum valueSolver - SimpleRevFIFO classSolverfriend - solutions() constSolver - Solve(DecisionBuilder *const db, const std::vector< SearchMonitor * > &monitors)Solver - Solve(DecisionBuilder *const db)Solver - Solve(DecisionBuilder *const db, SearchMonitor *const m1)Solver - Solve(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2)Solver - Solve(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2, SearchMonitor *const m3)Solver - Solve(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2, SearchMonitor *const m3, SearchMonitor *const m4)Solver - SolveAndCommit(DecisionBuilder *const db, const std::vector< SearchMonitor * > &monitors)Solver - SolveAndCommit(DecisionBuilder *const db)Solver - SolveAndCommit(DecisionBuilder *const db, SearchMonitor *const m1)Solver - SolveAndCommit(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2)Solver - SolveAndCommit(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2, SearchMonitor *const m3)Solver - SolveDepth() constSolver - Solver(const std::string &name)Solverexplicit - Solver(const std::string &name, const ConstraintSolverParameters &parameters)Solver - SolverState enum nameSolver - SPLIT_LOWER_HALF enum valueSolver - SPLIT_UPPER_HALF enum valueSolver - stamp() constSolver - STARTS_AFTER enum valueSolver - STARTS_AFTER_END enum valueSolver - STARTS_AFTER_START enum valueSolver - STARTS_AT enum valueSolver - STARTS_AT_END enum valueSolver - STARTS_AT_START enum valueSolver - STARTS_BEFORE enum valueSolver - state() constSolverinline - STAYS_IN_SYNC enum valueSolver - SWAPACTIVE enum valueSolver - SWITCH_BRANCHES enum valueSolver - tmp_vector_Solver - TopPeriodicCheck()Solver - TopProgressPercent()Solver - Try(DecisionBuilder *const db1, DecisionBuilder *const db2)Solver - Try(DecisionBuilder *const db1, DecisionBuilder *const db2, DecisionBuilder *const db3)Solver - Try(DecisionBuilder *const db1, DecisionBuilder *const db2, DecisionBuilder *const db3, DecisionBuilder *const db4)Solver - Try(const std::vector< DecisionBuilder * > &dbs)Solver - TSPLNS enum valueSolver - TSPOPT enum valueSolver - TWOOPT enum valueSolver - UNACTIVELNS enum valueSolver - UnaryIntervalRelation enum nameSolver - unchecked_solutions() constSolver - UseFastLocalSearch() constSolverinline - VAR_PRIORITY enum valueSolver - VariableIndexSelector typedefSolver - VariableValueComparator typedefSolver - VariableValueSelector typedefSolver - wall_time() constSolver - ~Solver()Solver + optimization_direction() constSolverinline + OptimizationDirection enum nameSolver + OROPT enum valueSolver + OUTSIDE_SEARCH enum valueSolver + parameters() constSolverinline + PATHLNS enum valueSolver + PopState()Solver + PROBLEM_INFEASIBLE enum valueSolver + PropagationBaseObject classSolverfriend + PushState()Solver + Queue classSolverfriend + Rand32(int32 size)Solverinline + Rand64(int64 size)Solverinline + RandomConcatenateOperators(const std::vector< LocalSearchOperator * > &ops)Solver + RandomConcatenateOperators(const std::vector< LocalSearchOperator * > &ops, int32 seed)Solver + RegisterDemon(Demon *const demon)Solver + RegisterIntervalVar(IntervalVar *const var)Solver + RegisterIntExpr(IntExpr *const expr)Solver + RegisterIntVar(IntVar *const var)Solver + RELOCATE enum valueSolver + ReSeed(int32 seed)Solverinline + RestartCurrentSearch()Solver + RestartSearch()Solver + RevAlloc(T *object)Solverinline + RevAllocArray(T *object)Solverinline + REVERSIBLE_ACTION enum valueSolver + RevImmutableMultiMap classSolverfriend + RoutingModel classSolverfriend + SaveAndAdd(T *adr, T val)Solverinline + SaveAndSetValue(T *adr, T val)Solverinline + SaveValue(T *o)Solverinline + SearchContext() constSolver + SearchContext(const Search *search) constSolver + SearchDepth() constSolver + SearchLeftDepth() constSolver + SearchLimit classSolverfriend + SearchMonitor classSolverfriend + SENTINEL enum valueSolver + SEQUENCE_DEFAULT enum valueSolver + SEQUENCE_SIMPLE enum valueSolver + SequenceStrategy enum nameSolver + set_fail_intercept(std::function< void()> fail_intercept)Solverinline + set_optimization_direction(OptimizationDirection direction)Solverinline + SetBranchSelector(BranchSelector bs)Solver + SetSearchContext(Search *search, const std::string &search_context)Solver + SetUseFastLocalSearch(bool use_fast_local_search)Solverinline + ShouldFail()Solverinline + SIMPLE_MARKER enum valueSolver + SIMPLELNS enum valueSolver + SimpleRevFIFO classSolverfriend + solutions() constSolver + Solve(DecisionBuilder *const db, const std::vector< SearchMonitor * > &monitors)Solver + Solve(DecisionBuilder *const db)Solver + Solve(DecisionBuilder *const db, SearchMonitor *const m1)Solver + Solve(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2)Solver + Solve(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2, SearchMonitor *const m3)Solver + Solve(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2, SearchMonitor *const m3, SearchMonitor *const m4)Solver + SolveAndCommit(DecisionBuilder *const db, const std::vector< SearchMonitor * > &monitors)Solver + SolveAndCommit(DecisionBuilder *const db)Solver + SolveAndCommit(DecisionBuilder *const db, SearchMonitor *const m1)Solver + SolveAndCommit(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2)Solver + SolveAndCommit(DecisionBuilder *const db, SearchMonitor *const m1, SearchMonitor *const m2, SearchMonitor *const m3)Solver + SolveDepth() constSolver + Solver(const std::string &name)Solverexplicit + Solver(const std::string &name, const ConstraintSolverParameters &parameters)Solver + SolverState enum nameSolver + SPLIT_LOWER_HALF enum valueSolver + SPLIT_UPPER_HALF enum valueSolver + stamp() constSolver + STARTS_AFTER enum valueSolver + STARTS_AFTER_END enum valueSolver + STARTS_AFTER_START enum valueSolver + STARTS_AT enum valueSolver + STARTS_AT_END enum valueSolver + STARTS_AT_START enum valueSolver + STARTS_BEFORE enum valueSolver + state() constSolverinline + STAYS_IN_SYNC enum valueSolver + SWAPACTIVE enum valueSolver + SWITCH_BRANCHES enum valueSolver + tmp_vector_Solver + TopPeriodicCheck()Solver + TopProgressPercent()Solver + Try(DecisionBuilder *const db1, DecisionBuilder *const db2)Solver + Try(DecisionBuilder *const db1, DecisionBuilder *const db2, DecisionBuilder *const db3)Solver + Try(DecisionBuilder *const db1, DecisionBuilder *const db2, DecisionBuilder *const db3, DecisionBuilder *const db4)Solver + Try(const std::vector< DecisionBuilder * > &dbs)Solver + TSPLNS enum valueSolver + TSPOPT enum valueSolver + TWOOPT enum valueSolver + UNACTIVELNS enum valueSolver + UnaryIntervalRelation enum nameSolver + unchecked_solutions() constSolver + UseFastLocalSearch() constSolverinline + VAR_PRIORITY enum valueSolver + VariableIndexSelector typedefSolver + VariableValueComparator typedefSolver + VariableValueSelector typedefSolver + wall_time() constSolver + ~Solver()Solver
    diff --git a/docs/cpp_routing/classoperations__research_1_1Solver.html b/docs/cpp_routing/classoperations__research_1_1Solver.html index 7d2abf1fc7..c16c81ca9a 100644 --- a/docs/cpp_routing/classoperations__research_1_1Solver.html +++ b/docs/cpp_routing/classoperations__research_1_1Solver.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -292,8 +263,6 @@ Public Types   typedef std::function< bool(int64, int64, int64)> VariableValueComparator   -typedef std::function< void(int64)> ObjectiveWatcher -  typedef std::function< DecisionModification()> BranchSelector   typedef std::function< void(Solver *)> Action @@ -1385,12 +1354,8 @@ Public Member Functions   IntVarLocalSearchFilterMakeSumObjectiveFilter (const std::vector< IntVar * > &vars, IndexEvaluator2 values, Solver::LocalSearchFilterBound filter_enum)   -IntVarLocalSearchFilterMakeSumObjectiveFilter (const std::vector< IntVar * > &vars, IndexEvaluator2 values, ObjectiveWatcher delta_objective_callback, Solver::LocalSearchFilterBound filter_enum) -  -IntVarLocalSearchFilterMakeSumObjectiveFilter (const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, Solver::IndexEvaluator3 values, Solver::LocalSearchFilterBound filter_enum) -  -IntVarLocalSearchFilterMakeSumObjectiveFilter (const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, Solver::IndexEvaluator3 values, ObjectiveWatcher delta_objective_callback, Solver::LocalSearchFilterBound filter_enum) -  +IntVarLocalSearchFilterMakeSumObjectiveFilter (const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, IndexEvaluator3 values, Solver::LocalSearchFilterBound filter_enum) +  void TopPeriodicCheck ()  Performs PeriodicCheck on the top-level search; for instance, can be called from a nested solve to check top-level limits. More...
      @@ -1664,7 +1629,7 @@ Friends
    -

    Definition at line 738 of file constraint_solver.h.

    +

    Definition at line 737 of file constraint_solver.h.

    @@ -1680,7 +1645,7 @@ Friends
    -

    Definition at line 736 of file constraint_solver.h.

    +

    Definition at line 735 of file constraint_solver.h.

    @@ -1696,7 +1661,7 @@ Friends
    -

    Definition at line 739 of file constraint_solver.h.

    +

    Definition at line 738 of file constraint_solver.h.

    @@ -1780,22 +1745,6 @@ Friends

    Definition at line 727 of file constraint_solver.h.

    -
    -
    - -

    ◆ ObjectiveWatcher

    - -
    -
    - - - - -
    typedef std::function<void(int64)> ObjectiveWatcher
    -
    - -

    Definition at line 735 of file constraint_solver.h.

    -
    @@ -2483,7 +2432,7 @@ Friends

    The number of accepted neighbors.

    -

    Definition at line 987 of file constraint_solver.h.

    +

    Definition at line 986 of file constraint_solver.h.

    @@ -2665,7 +2614,7 @@ Friends
    -

    Definition at line 2813 of file constraint_solver.h.

    +

    Definition at line 2802 of file constraint_solver.h.

    @@ -2694,7 +2643,7 @@ Friends

    The number of branches explored since the creation of the solver.

    -

    Definition at line 966 of file constraint_solver.h.

    +

    Definition at line 965 of file constraint_solver.h.

    @@ -2802,7 +2751,7 @@ Friends
    -

    Definition at line 2929 of file constraint_solver.h.

    +

    Definition at line 2918 of file constraint_solver.h.

    @@ -2829,7 +2778,7 @@ Friends
    -

    Definition at line 2821 of file constraint_solver.h.

    +

    Definition at line 2810 of file constraint_solver.h.

    @@ -2858,7 +2807,7 @@ Friends

    Clears the local search state.

    -

    Definition at line 2877 of file constraint_solver.h.

    +

    Definition at line 2866 of file constraint_solver.h.

    @@ -3092,7 +3041,7 @@ Friends

    Counts the number of constraints that have been added to the solver before the search.

    -

    Definition at line 2808 of file constraint_solver.h.

    +

    Definition at line 2797 of file constraint_solver.h.

    @@ -3188,7 +3137,7 @@ Friends

    Access to demon profiler.

    -

    Definition at line 2823 of file constraint_solver.h.

    +

    Definition at line 2812 of file constraint_solver.h.

    @@ -3218,7 +3167,7 @@ Friends

    The number of demons executed during search for a given priority.

    -

    Definition at line 975 of file constraint_solver.h.

    +

    Definition at line 974 of file constraint_solver.h.

    @@ -3323,7 +3272,7 @@ Friends

    The number of failures encountered since the creation of the solver.

    -

    Definition at line 978 of file constraint_solver.h.

    +

    Definition at line 977 of file constraint_solver.h.

    @@ -3352,7 +3301,7 @@ Friends

    The number of filtered neighbors (neighbors accepted by filters).

    -

    Definition at line 984 of file constraint_solver.h.

    +

    Definition at line 983 of file constraint_solver.h.

    @@ -14232,7 +14181,7 @@ Friends -

    ◆ MakeSumObjectiveFilter() [1/4]

    +

    ◆ MakeSumObjectiveFilter() [1/2]

    @@ -14265,48 +14214,8 @@ Friends
    - -

    ◆ MakeSumObjectiveFilter() [2/4]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IntVarLocalSearchFilter* MakeSumObjectiveFilter (const std::vector< IntVar * > & vars,
    IndexEvaluator2 values,
    ObjectiveWatcher delta_objective_callback,
    Solver::LocalSearchFilterBound filter_enum 
    )
    -
    - -
    -
    - -

    ◆ MakeSumObjectiveFilter() [3/4]

    + +

    ◆ MakeSumObjectiveFilter() [2/2]

    @@ -14326,7 +14235,7 @@ Friends - Solver::IndexEvaluator3  + IndexEvaluator3  values, @@ -14343,52 +14252,6 @@ Friends
    -
    -
    - -

    ◆ MakeSumObjectiveFilter() [4/4]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IntVarLocalSearchFilter* MakeSumObjectiveFilter (const std::vector< IntVar * > & vars,
    const std::vector< IntVar * > & secondary_vars,
    Solver::IndexEvaluator3 values,
    ObjectiveWatcher delta_objective_callback,
    Solver::LocalSearchFilterBound filter_enum 
    )
    -
    -
    @@ -15202,7 +15065,7 @@ Friends

    The number of neighbors created.

    -

    Definition at line 981 of file constraint_solver.h.

    +

    Definition at line 980 of file constraint_solver.h.

    @@ -15463,7 +15326,7 @@ Friends

    The direction of optimization, getter and setter.

    -

    Definition at line 997 of file constraint_solver.h.

    +

    Definition at line 996 of file constraint_solver.h.

    @@ -15492,7 +15355,7 @@ Friends

    Stored Parameters.

    -

    Definition at line 747 of file constraint_solver.h.

    +

    Definition at line 746 of file constraint_solver.h.

    @@ -15559,7 +15422,7 @@ Friends

    Returns a random value between 0 and 'size' - 1;.

    -

    Definition at line 2786 of file constraint_solver.h.

    +

    Definition at line 2775 of file constraint_solver.h.

    @@ -15589,7 +15452,7 @@ Friends

    Returns a random value between 0 and 'size' - 1;.

    -

    Definition at line 2783 of file constraint_solver.h.

    +

    Definition at line 2772 of file constraint_solver.h.

    @@ -15750,7 +15613,7 @@ Friends

    Reseed the solver random generator.

    -

    Definition at line 2789 of file constraint_solver.h.

    +

    Definition at line 2778 of file constraint_solver.h.

    @@ -15817,7 +15680,7 @@ Friends

    Returns the argument for convenience: this way, the caller may directly invoke a constructor in the argument, without having to store the pointer first.

    This function is only for users that define their own subclasses of BaseObject: for all subclasses predefined in the library, the corresponding factory methods (e.g., MakeIntVar(...), MakeAllDifferent(...) already take care of the registration.

    -

    Definition at line 775 of file constraint_solver.h.

    +

    Definition at line 774 of file constraint_solver.h.

    @@ -15849,7 +15712,7 @@ Friends

    The entire array will be deleted when backtracking out of the current state.

    This method is valid for arrays of int, int64, uint64, bool, BaseObject*, IntVar*, IntExpr*, and Constraint*.

    -

    Definition at line 786 of file constraint_solver.h.

    +

    Definition at line 785 of file constraint_solver.h.

    @@ -15889,7 +15752,7 @@ Friends

    All-in-one SaveAndAdd_value.

    -

    Definition at line 2775 of file constraint_solver.h.

    +

    Definition at line 2764 of file constraint_solver.h.

    @@ -15929,7 +15792,7 @@ Friends

    All-in-one SaveAndSetValue.

    -

    Definition at line 2766 of file constraint_solver.h.

    +

    Definition at line 2755 of file constraint_solver.h.

    @@ -15960,7 +15823,7 @@ Friends

    reversibility

    SaveValue() saves the value of the corresponding object. It must be called before modifying the object. The value will be restored upon backtrack.

    -

    Definition at line 758 of file constraint_solver.h.

    +

    Definition at line 757 of file constraint_solver.h.

    @@ -16065,7 +15928,7 @@ Friends

    Internal.

    -

    Definition at line 2817 of file constraint_solver.h.

    +

    Definition at line 2806 of file constraint_solver.h.

    @@ -16093,7 +15956,7 @@ Friends
    -

    Definition at line 1000 of file constraint_solver.h.

    +

    Definition at line 999 of file constraint_solver.h.

    @@ -16172,7 +16035,7 @@ Friends

    enabled for metaheuristics.

    Disables/enables fast local search.

    -

    Definition at line 2827 of file constraint_solver.h.

    +

    Definition at line 2816 of file constraint_solver.h.

    @@ -16201,7 +16064,7 @@ Friends

    These methods are only useful for the SWIG wrappers, which need a way to externally cause the Solver to fail.

    -

    Definition at line 2928 of file constraint_solver.h.

    +

    Definition at line 2917 of file constraint_solver.h.

    @@ -16653,7 +16516,7 @@ Friends

    State of the solver.

    -

    Definition at line 936 of file constraint_solver.h.

    +

    Definition at line 935 of file constraint_solver.h.

    @@ -16863,7 +16726,7 @@ Friends

    Returns true if fast local search is enabled.

    -

    Definition at line 2831 of file constraint_solver.h.

    +

    Definition at line 2820 of file constraint_solver.h.

    @@ -16908,7 +16771,7 @@ Friends
    -

    Definition at line 2885 of file constraint_solver.h.

    +

    Definition at line 2874 of file constraint_solver.h.

    @@ -16932,7 +16795,7 @@ Friends
    -

    Definition at line 2886 of file constraint_solver.h.

    +

    Definition at line 2875 of file constraint_solver.h.

    @@ -16956,7 +16819,7 @@ Friends
    -

    Definition at line 2887 of file constraint_solver.h.

    +

    Definition at line 2876 of file constraint_solver.h.

    @@ -16980,7 +16843,7 @@ Friends
    -

    Definition at line 2888 of file constraint_solver.h.

    +

    Definition at line 2877 of file constraint_solver.h.

    @@ -17040,7 +16903,7 @@ Friends
    -

    Definition at line 2889 of file constraint_solver.h.

    +

    Definition at line 2878 of file constraint_solver.h.

    @@ -17064,7 +16927,7 @@ Friends
    -

    Definition at line 2895 of file constraint_solver.h.

    +

    Definition at line 2884 of file constraint_solver.h.

    @@ -17088,7 +16951,7 @@ Friends
    -

    Definition at line 2890 of file constraint_solver.h.

    +

    Definition at line 2879 of file constraint_solver.h.

    @@ -17112,7 +16975,7 @@ Friends
    -

    Definition at line 2891 of file constraint_solver.h.

    +

    Definition at line 2880 of file constraint_solver.h.

    @@ -17136,7 +16999,7 @@ Friends
    -

    Definition at line 2902 of file constraint_solver.h.

    +

    Definition at line 2891 of file constraint_solver.h.

    @@ -17160,7 +17023,7 @@ Friends
    -

    Definition at line 2894 of file constraint_solver.h.

    +

    Definition at line 2883 of file constraint_solver.h.

    @@ -17184,7 +17047,7 @@ Friends
    -

    Definition at line 2893 of file constraint_solver.h.

    +

    Definition at line 2882 of file constraint_solver.h.

    @@ -17208,7 +17071,7 @@ Friends
    -

    Definition at line 2892 of file constraint_solver.h.

    +

    Definition at line 2881 of file constraint_solver.h.

    @@ -17232,7 +17095,7 @@ Friends
    -

    Definition at line 2900 of file constraint_solver.h.

    +

    Definition at line 2889 of file constraint_solver.h.

    @@ -17278,7 +17141,7 @@ Friends

    Unsafe temporary vector.

    It is used to avoid leaks in operations that need storage and that may fail. See IntVar::SetValues() for instance. It is not locked; do not use in a multi-threaded or reentrant setup.

    -

    Definition at line 2883 of file constraint_solver.h.

    +

    Definition at line 2872 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator-members.html b/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator-members.html index d6526e2571..f3ba12edee 100644 --- a/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator.html b/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator.html index 0fbe8b907a..73ea398a62 100644 --- a/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1SwapIndexPairOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SweepArranger-members.html b/docs/cpp_routing/classoperations__research_1_1SweepArranger-members.html index 2c1274d410..30cad23f7c 100644 --- a/docs/cpp_routing/classoperations__research_1_1SweepArranger-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SweepArranger-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SweepArranger.html b/docs/cpp_routing/classoperations__research_1_1SweepArranger.html index fa0ba79274..f3f23ac6a4 100644 --- a/docs/cpp_routing/classoperations__research_1_1SweepArranger.html +++ b/docs/cpp_routing/classoperations__research_1_1SweepArranger.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker-members.html b/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker-members.html index 0ff36bff3a..8dccaeddf0 100644 --- a/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker-members.html +++ b/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker.html b/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker.html index 68c19cde13..30ee48cee5 100644 --- a/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker.html +++ b/docs/cpp_routing/classoperations__research_1_1SymmetryBreaker.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -154,7 +125,7 @@ Friends

    A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in return.

    Each symmetry breaker represents one class of symmetry.

    -

    Definition at line 1753 of file constraint_solveri.h.

    +

    Definition at line 1736 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ SymmetryBreaker()

    @@ -179,7 +150,7 @@ Friends
    -

    Definition at line 1755 of file constraint_solveri.h.

    +

    Definition at line 1738 of file constraint_solveri.h.

    @@ -206,7 +177,7 @@ Friends
    -

    Definition at line 1757 of file constraint_solveri.h.

    +

    Definition at line 1740 of file constraint_solveri.h.

    @@ -318,9 +289,9 @@ Friends
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    @@ -592,7 +563,7 @@ Friends
    -

    Definition at line 1765 of file constraint_solveri.h.

    +

    Definition at line 1748 of file constraint_solveri.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker-members.html b/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker-members.html index 3f96552181..dceb2a9fcc 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker-members.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker.html b/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker.html index 6a293aea8b..a23c5e4db4 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeIncompatibilityChecker.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker-members.html b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker-members.html index 5df2dc5aed..038baa6a0d 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker-members.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker.html b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker.html index 9c989a3ca1..896798a917 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsChecker.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint-members.html b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint-members.html index 20ddee2ee3..4d2eae2f4e 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint-members.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint.html b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint.html index 2b1dda0d3d..2fcae7dd5c 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeRegulationsConstraint.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -357,7 +328,7 @@ Public Member Functions

    This method pushes the demon onto the propagation queue.

    It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.

    -

    Definition at line 3135 of file constraint_solver.h.

    +

    Definition at line 3124 of file constraint_solver.h.

    @@ -385,7 +356,7 @@ Public Member Functions
    -

    Definition at line 3136 of file constraint_solver.h.

    +

    Definition at line 3125 of file constraint_solver.h.

    @@ -441,7 +412,7 @@ Public Member Functions

    This method freezes the propagation queue.

    It is useful when you need to apply multiple modifications at once.

    -

    Definition at line 3126 of file constraint_solver.h.

    +

    Definition at line 3115 of file constraint_solver.h.

    @@ -639,7 +610,7 @@ Public Member Functions

    This method clears the failure callback.

    -

    Definition at line 3149 of file constraint_solver.h.

    +

    Definition at line 3138 of file constraint_solver.h.

    @@ -667,7 +638,7 @@ Public Member Functions
    -

    Definition at line 3143 of file constraint_solver.h.

    +

    Definition at line 3132 of file constraint_solver.h.

    @@ -723,7 +694,7 @@ Public Member Functions

    Shortcut for variable cleaner.

    -

    Definition at line 3152 of file constraint_solver.h.

    +

    Definition at line 3141 of file constraint_solver.h.

    @@ -750,7 +721,7 @@ Public Member Functions
    -

    Definition at line 3122 of file constraint_solver.h.

    +

    Definition at line 3111 of file constraint_solver.h.

    @@ -780,7 +751,7 @@ Public Member Functions

    This method unfreezes the propagation queue.

    All modifications that happened when the queue was frozen will be processed.

    -

    Definition at line 3130 of file constraint_solver.h.

    +

    Definition at line 3119 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker-members.html b/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker-members.html index a218b90b22..b222d08928 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker-members.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker.html b/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker.html index d0dc839a16..113e9e783f 100644 --- a/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker.html +++ b/docs/cpp_routing/classoperations__research_1_1TypeRequirementChecker.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset-members.html b/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset-members.html index 50ff7839df..28376c8438 100644 --- a/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset-members.html +++ b/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset.html b/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset.html index b056e95d47..7ae958ba47 100644 --- a/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset.html +++ b/docs/cpp_routing/classoperations__research_1_1UnsortedNullableRevBitset.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -134,7 +105,7 @@ Public Member Functions

    This class represents a reversible bitset.

    It is meant to represent a set of active bits. It does not offer direct access, but just methods that can reversibly subtract another bitset, or check if the current active bitset intersects with another bitset.

    -

    Definition at line 2532 of file constraint_solveri.h.

    +

    Definition at line 2515 of file constraint_solveri.h.

    Constructor & Destructor Documentation

    ◆ UnsortedNullableRevBitset()

    @@ -187,7 +158,7 @@ Public Member Functions
    -

    Definition at line 2537 of file constraint_solveri.h.

    +

    Definition at line 2520 of file constraint_solveri.h.

    @@ -217,7 +188,7 @@ Public Member Functions

    Returns the set of active word indices.

    -

    Definition at line 2572 of file constraint_solveri.h.

    +

    Definition at line 2555 of file constraint_solveri.h.

    @@ -246,7 +217,7 @@ Public Member Functions

    This method returns the number of non null 64 bit words in the bitset representation.

    -

    Definition at line 2553 of file constraint_solveri.h.

    +

    Definition at line 2536 of file constraint_solveri.h.

    @@ -275,7 +246,7 @@ Public Member Functions

    Returns the number of bits given in the constructor of the bitset.

    -

    Definition at line 2568 of file constraint_solveri.h.

    +

    Definition at line 2551 of file constraint_solveri.h.

    @@ -304,7 +275,7 @@ Public Member Functions

    This method returns true if the active bitset is null.

    -

    Definition at line 2556 of file constraint_solveri.h.

    +

    Definition at line 2539 of file constraint_solveri.h.

    @@ -460,7 +431,7 @@ Public Member Functions

    Returns the number of 64 bit words used to store the bitset.

    -

    Definition at line 2570 of file constraint_solveri.h.

    +

    Definition at line 2553 of file constraint_solveri.h.

    diff --git a/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator-members.html b/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator-members.html index 3947527128..6b1bdd2c4f 100644 --- a/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator-members.html +++ b/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator-members.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator.html b/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator.html index e53d5a91a9..3f06de9e96 100644 --- a/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator.html +++ b/docs/cpp_routing/classoperations__research_1_1VarLocalSearchOperator.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -479,9 +450,9 @@ class operations_research::VarLocalSearchOperator< V, Val, Handler >
    -

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, Decision, ChristofidesFilteredDecisionBuilder, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    +

    Reimplemented in Pack, Assignment, SequenceVar, RegularLimit, SearchLimit, OptimizeVar, SolutionCollector, IntVarIterator, Constraint, CPFeasibilityFilter, Demon, DecisionBuilder, ChristofidesFilteredDecisionBuilder, Decision, ParallelSavingsFilteredDecisionBuilder, PropagationBaseObject, SequentialSavingsFilteredDecisionBuilder, ComparatorCheapestAdditionFilteredDecisionBuilder, EvaluatorCheapestAdditionFilteredDecisionBuilder, LocalCheapestInsertionFilteredDecisionBuilder, GlobalCheapestInsertionFilteredDecisionBuilder, ArrayWithOffset< T >, SearchLog, BooleanVar, LocalSearchMonitor, PropagationMonitor, LocalSearchFilterManager, PathWithPreviousNodesOperator, DelayedCallMethod2< T, P, Q >, DelayedCallMethod1< T, P >, DelayedCallMethod0< T >, CallMethod3< T, P, Q, R >, CallMethod2< T, P, Q >, CallMethod1< T, P >, ExchangeSubtrip, RelocateSubtrip, CallMethod0< T >, PairNodeSwapActiveOperator< swap_first >, RelocateExpensiveChain, IndexPairSwapActiveOperator, SwapIndexPairOperator, PairExchangeRelocateOperator, PairExchangeOperator, LightPairRelocateOperator, PairRelocateOperator, MakePairInactiveOperator, MakePairActiveOperator, and MakeRelocateNeighborsOperator.

    -

    Definition at line 3099 of file constraint_solver.h.

    +

    Definition at line 3088 of file constraint_solver.h.

    diff --git a/docs/cpp_routing/constraint__solver_8h.html b/docs/cpp_routing/constraint__solver_8h.html index 340ae00fdb..d5a6059f74 100644 --- a/docs/cpp_routing/constraint__solver_8h.html +++ b/docs/cpp_routing/constraint__solver_8h.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/constraint__solver_8h_source.html b/docs/cpp_routing/constraint__solver_8h_source.html index 2cca7f356a..e15db8bfb2 100644 --- a/docs/cpp_routing/constraint__solver_8h_source.html +++ b/docs/cpp_routing/constraint__solver_8h_source.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -84,70 +55,70 @@
    constraint_solver.h
    -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 
    62 
    63 #ifndef OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVER_H_
    64 #define OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVER_H_
    65 
    66 #include <functional>
    67 #include <iosfwd>
    68 #include <memory>
    69 #include <string>
    70 #include <utility>
    71 #include <vector>
    72 
    73 #include "absl/container/flat_hash_map.h"
    74 #include "absl/container/flat_hash_set.h"
    75 #include "absl/strings/str_format.h"
    76 #include "ortools/base/commandlineflags.h"
    77 #include "ortools/base/hash.h"
    78 #include "ortools/base/integral_types.h"
    79 #include "ortools/base/logging.h"
    80 #include "ortools/base/macros.h"
    81 #include "ortools/base/map_util.h"
    82 #include "ortools/base/random.h"
    83 #include "ortools/base/sysinfo.h"
    84 #include "ortools/base/timer.h"
    85 #include "ortools/constraint_solver/solver_parameters.pb.h"
    86 #include "ortools/util/piecewise_linear_function.h"
    87 #include "ortools/util/sorted_interval_list.h"
    88 #include "ortools/util/tuple_set.h"
    89 
    90 class File;
    91 
    93 
    94 class Assignment;
    95 class AssignmentProto;
    96 class BaseObject;
    97 class CpArgument;
    98 class CpConstraint;
    99 class CpIntegerExpression;
    100 class CpIntervalVariable;
    101 class CpSequenceVariable;
    102 class CastConstraint;
    103 class Constraint;
    104 class Decision;
    105 class DecisionBuilder;
    106 class DecisionVisitor;
    107 class Demon;
    108 class DemonProfiler;
    109 class LocalSearchProfiler;
    110 class Dimension;
    112 class ExpressionCache;
    113 class IntExpr;
    114 class IntTupleSet;
    115 class IntVar;
    116 class IntVarAssignment;
    117 class IntVarElement;
    118 class IntervalVar;
    119 class IntervalVarAssignment;
    120 class IntervalVarElement;
    122 class LocalSearchFilter;
    123 class LocalSearchOperator;
    124 class LocalSearchPhaseParameters;
    125 class ModelCache;
    126 class ModelVisitor;
    127 class OptimizeVar;
    128 class Pack;
    130 class PropagationMonitor;
    131 class LocalSearchMonitor;
    132 class Queue;
    133 class RevBitMatrix;
    134 class RevBitSet;
    135 class RegularLimit;
    136 class RegularLimitParameters;
    137 class Search;
    138 class SearchLimit;
    139 class SearchMonitor;
    140 class SequenceVar;
    141 class SequenceVarAssignment;
    142 class SolutionCollector;
    143 class SolutionPool;
    144 class Solver;
    145 class ConstraintSolverParameters;
    146 class SymmetryBreaker;
    147 struct StateInfo;
    148 struct Trail;
    149 template <class T>
    151 
    156  public:
    161  };
    162 
    166  };
    167 
    168  enum DisplayLevel { NONE = 0, NORMAL = 1, VERBOSE = 2 };
    169 
    173 
    176 
    180 
    185 
    190 
    193 
    197 
    200 
    204 
    207 
    210 
    212 };
    213 
    231 class Solver {
    232  public:
    239  : variable(nullptr), expression(nullptr), maintainer(nullptr) {}
    240  IntegerCastInfo(IntVar* const v, IntExpr* const e, Constraint* const c)
    241  : variable(v), expression(e), maintainer(c) {}
    245  };
    246 
    248  static const int kNumPriorities = 3;
    249 
    255 
    258 
    263 
    266 
    274 
    282 
    290 
    298 
    304 
    310 
    315 
    320 
    324 
    328  };
    329  // TODO(user): add HIGHEST_MIN and LOWEST_MAX.
    330 
    336 
    339 
    342 
    345 
    348 
    353 
    357 
    361  };
    362 
    379 
    385  };
    386 
    393  };
    394 
    408  };
    409 
    423 
    439 
    442 
    451 
    462 
    470 
    477 
    485 
    492 
    504 
    513 
    517 
    522 
    532 
    537 
    546  };
    547 
    555  LK,
    556 
    564 
    572  };
    573 
    580  GE,
    582  LE,
    586  };
    587 
    595 
    598 
    601  };
    602 
    608 
    611 
    614 
    617 
    620 
    623 
    626 
    629 
    634  };
    635 
    641 
    644 
    647 
    650 
    653 
    656 
    661 
    666  };
    667 
    677 
    682 
    687 
    691 
    695  };
    696 
    700 
    702  enum SolverState {
    715  };
    716 
    719 
    721  typedef std::function<int64(int64)> IndexEvaluator1;
    722  typedef std::function<int64(int64, int64)> IndexEvaluator2;
    723  typedef std::function<int64(int64, int64, int64)> IndexEvaluator3;
    724 
    725  typedef std::function<bool(int64)> IndexFilter1;
    726 
    727  typedef std::function<IntVar*(int64)> Int64ToIntVar;
    728 
    729  typedef std::function<int64(Solver* solver, const std::vector<IntVar*>& vars,
    730  int64 first_unbound, int64 last_unbound)>
    732 
    733  typedef std::function<int64(const IntVar* v, int64 id)> VariableValueSelector;
    734  typedef std::function<bool(int64, int64, int64)> VariableValueComparator;
    735  typedef std::function<void(int64)> ObjectiveWatcher;
    736  typedef std::function<DecisionModification()> BranchSelector;
    737  // TODO(user): wrap in swig.
    738  typedef std::function<void(Solver*)> Action;
    739  typedef std::function<void()> Closure;
    740 
    742  explicit Solver(const std::string& name);
    743  Solver(const std::string& name, const ConstraintSolverParameters& parameters);
    744  ~Solver();
    745 
    747  ConstraintSolverParameters parameters() const { return parameters_; }
    749  // TODO(user): Move to constraint_solver_parameters.h.
    750  static ConstraintSolverParameters DefaultSolverParameters();
    751 
    753 
    757  template <class T>
    758  void SaveValue(T* o) {
    759  InternalSaveValue(o);
    760  }
    761 
    774  template <typename T>
    775  T* RevAlloc(T* object) {
    776  return reinterpret_cast<T*>(SafeRevAlloc(object));
    777  }
    778 
    785  template <typename T>
    786  T* RevAllocArray(T* object) {
    787  return reinterpret_cast<T*>(SafeRevAllocArray(object));
    788  }
    789 
    823  void AddConstraint(Constraint* const c);
    827  void AddCastConstraint(CastConstraint* const constraint,
    828  IntVar* const target_var, IntExpr* const expr);
    829 
    871  bool Solve(DecisionBuilder* const db,
    872  const std::vector<SearchMonitor*>& monitors);
    873  bool Solve(DecisionBuilder* const db);
    874  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1);
    875  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1,
    876  SearchMonitor* const m2);
    877  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1,
    878  SearchMonitor* const m2, SearchMonitor* const m3);
    879  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1,
    880  SearchMonitor* const m2, SearchMonitor* const m3,
    881  SearchMonitor* const m4);
    883 
    892 
    893  void NewSearch(DecisionBuilder* const db,
    894  const std::vector<SearchMonitor*>& monitors);
    895  void NewSearch(DecisionBuilder* const db);
    896  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1);
    897  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1,
    898  SearchMonitor* const m2);
    899  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1,
    900  SearchMonitor* const m2, SearchMonitor* const m3);
    901  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1,
    902  SearchMonitor* const m2, SearchMonitor* const m3,
    903  SearchMonitor* const m4);
    904 
    905  bool NextSolution();
    906  void RestartSearch();
    907  void EndSearch();
    909 
    918  bool SolveAndCommit(DecisionBuilder* const db,
    919  const std::vector<SearchMonitor*>& monitors);
    920  bool SolveAndCommit(DecisionBuilder* const db);
    921  bool SolveAndCommit(DecisionBuilder* const db, SearchMonitor* const m1);
    922  bool SolveAndCommit(DecisionBuilder* const db, SearchMonitor* const m1,
    923  SearchMonitor* const m2);
    924  bool SolveAndCommit(DecisionBuilder* const db, SearchMonitor* const m1,
    925  SearchMonitor* const m2, SearchMonitor* const m3);
    926 
    928  bool CheckAssignment(Assignment* const solution);
    929 
    933  bool CheckConstraint(Constraint* const ct);
    934 
    936  SolverState state() const { return state_; }
    937 
    939  void Fail();
    940 
    941 #if !defined(SWIG)
    942  void AddBacktrackAction(Action a, bool fast);
    947 #endif
    948 
    949  std::string DebugString() const;
    951 
    953  static int64 MemoryUsage();
    954 
    959  absl::Time Now() const;
    960 
    963  int64 wall_time() const;
    964 
    966  int64 branches() const { return branches_; }
    967 
    969  int64 solutions() const;
    970 
    972  int64 unchecked_solutions() const;
    973 
    975  int64 demon_runs(DemonPriority p) const { return demon_runs_[p]; }
    976 
    978  int64 failures() const { return fails_; }
    979 
    981  int64 neighbors() const { return neighbors_; }
    982 
    984  int64 filtered_neighbors() const { return filtered_neighbors_; }
    985 
    987  int64 accepted_neighbors() const { return accepted_neighbors_; }
    988 
    991  uint64 stamp() const;
    992 
    994  uint64 fail_stamp() const;
    995 
    998  return optimization_direction_;
    999  }
    1001  optimization_direction_ = direction;
    1002  }
    1003 
    1004  // All factories (MakeXXX methods) encapsulate creation of objects
    1005  // through RevAlloc(). Hence, the Solver used for allocating the
    1006  // returned object will retain ownership of the allocated memory.
    1007  // Destructors are called upon backtrack, or when the Solver is
    1008  // itself destructed.
    1009 
    1010  // ----- Int Variables and Constants -----
    1011 
    1013  IntVar* MakeIntVar(int64 min, int64 max, const std::string& name);
    1014 
    1016  IntVar* MakeIntVar(const std::vector<int64>& values, const std::string& name);
    1017 
    1019  IntVar* MakeIntVar(const std::vector<int>& values, const std::string& name);
    1020 
    1022  IntVar* MakeIntVar(int64 min, int64 max);
    1023 
    1025  IntVar* MakeIntVar(const std::vector<int64>& values);
    1026 
    1028  IntVar* MakeIntVar(const std::vector<int>& values);
    1029 
    1031  IntVar* MakeBoolVar(const std::string& name);
    1032 
    1034  IntVar* MakeBoolVar();
    1035 
    1037  IntVar* MakeIntConst(int64 val, const std::string& name);
    1038 
    1040  IntVar* MakeIntConst(int64 val);
    1041 
    1045  void MakeIntVarArray(int var_count, int64 vmin, int64 vmax,
    1046  const std::string& name, std::vector<IntVar*>* vars);
    1049  void MakeIntVarArray(int var_count, int64 vmin, int64 vmax,
    1050  std::vector<IntVar*>* vars);
    1052  IntVar** MakeIntVarArray(int var_count, int64 vmin, int64 vmax,
    1053  const std::string& name);
    1054 
    1058  void MakeBoolVarArray(int var_count, const std::string& name,
    1059  std::vector<IntVar*>* vars);
    1062  void MakeBoolVarArray(int var_count, std::vector<IntVar*>* vars);
    1064  IntVar** MakeBoolVarArray(int var_count, const std::string& name);
    1065 
    1066  // ----- Integer Expressions -----
    1067 
    1069  IntExpr* MakeSum(IntExpr* const left, IntExpr* const right);
    1071  IntExpr* MakeSum(IntExpr* const expr, int64 value);
    1073  IntExpr* MakeSum(const std::vector<IntVar*>& vars);
    1074 
    1076  IntExpr* MakeScalProd(const std::vector<IntVar*>& vars,
    1077  const std::vector<int64>& coefs);
    1079  IntExpr* MakeScalProd(const std::vector<IntVar*>& vars,
    1080  const std::vector<int>& coefs);
    1081 
    1083  IntExpr* MakeDifference(IntExpr* const left, IntExpr* const right);
    1085  IntExpr* MakeDifference(int64 value, IntExpr* const expr);
    1087  IntExpr* MakeOpposite(IntExpr* const expr);
    1088 
    1090  IntExpr* MakeProd(IntExpr* const left, IntExpr* const right);
    1092  IntExpr* MakeProd(IntExpr* const expr, int64 value);
    1093 
    1095  IntExpr* MakeDiv(IntExpr* const expr, int64 value);
    1097  IntExpr* MakeDiv(IntExpr* const numerator, IntExpr* const denominator);
    1098 
    1100  IntExpr* MakeAbs(IntExpr* const expr);
    1102  IntExpr* MakeSquare(IntExpr* const expr);
    1104  IntExpr* MakePower(IntExpr* const expr, int64 n);
    1105 
    1107  IntExpr* MakeElement(const std::vector<int64>& values, IntVar* const index);
    1109  IntExpr* MakeElement(const std::vector<int>& values, IntVar* const index);
    1110 
    1114  IntExpr* MakeElement(IndexEvaluator1 values, IntVar* const index);
    1121  IntExpr* MakeMonotonicElement(IndexEvaluator1 values, bool increasing,
    1122  IntVar* const index);
    1124  IntExpr* MakeElement(IndexEvaluator2 values, IntVar* const index1,
    1125  IntVar* const index2);
    1126 
    1128  IntExpr* MakeElement(const std::vector<IntVar*>& vars, IntVar* const index);
    1129 
    1130 #if !defined(SWIG)
    1131  IntExpr* MakeElement(Int64ToIntVar vars, int64 range_start, int64 range_end,
    1133  IntVar* argument);
    1134 #endif // SWIG
    1135 
    1138  IntExpr* MakeIndexExpression(const std::vector<IntVar*>& vars, int64 value);
    1139 
    1141  Constraint* MakeIfThenElseCt(IntVar* const condition,
    1142  IntExpr* const then_expr,
    1143  IntExpr* const else_expr,
    1144  IntVar* const target_var);
    1145 
    1147  IntExpr* MakeMin(const std::vector<IntVar*>& vars);
    1149  IntExpr* MakeMin(IntExpr* const left, IntExpr* const right);
    1151  IntExpr* MakeMin(IntExpr* const expr, int64 value);
    1153  IntExpr* MakeMin(IntExpr* const expr, int value);
    1154 
    1156  IntExpr* MakeMax(const std::vector<IntVar*>& vars);
    1158  IntExpr* MakeMax(IntExpr* const left, IntExpr* const right);
    1160  IntExpr* MakeMax(IntExpr* const expr, int64 value);
    1162  IntExpr* MakeMax(IntExpr* const expr, int value);
    1163 
    1165  IntExpr* MakeConvexPiecewiseExpr(IntExpr* expr, int64 early_cost,
    1166  int64 early_date, int64 late_date,
    1167  int64 late_cost);
    1168 
    1171  IntExpr* MakeSemiContinuousExpr(IntExpr* const expr, int64 fixed_charge,
    1172  int64 step);
    1173 
    1176  // TODO(user): Investigate if we can merge all three piecewise linear
    1178 #ifndef SWIG
    1180  const PiecewiseLinearFunction& f);
    1181 #endif
    1182 
    1184  IntExpr* MakeModulo(IntExpr* const x, int64 mod);
    1185 
    1187  IntExpr* MakeModulo(IntExpr* const x, IntExpr* const mod);
    1188 
    1190  IntExpr* MakeConditionalExpression(IntVar* const condition,
    1191  IntExpr* const expr,
    1192  int64 unperformed_value);
    1193 
    1198  Constraint* MakeFalseConstraint(const std::string& explanation);
    1199 
    1201  Constraint* MakeIsEqualCstCt(IntExpr* const var, int64 value,
    1202  IntVar* const boolvar);
    1204  IntVar* MakeIsEqualCstVar(IntExpr* const var, int64 value);
    1206  Constraint* MakeIsEqualCt(IntExpr* const v1, IntExpr* v2, IntVar* const b);
    1208  IntVar* MakeIsEqualVar(IntExpr* const v1, IntExpr* v2);
    1210  Constraint* MakeEquality(IntExpr* const left, IntExpr* const right);
    1212  Constraint* MakeEquality(IntExpr* const expr, int64 value);
    1214  Constraint* MakeEquality(IntExpr* const expr, int value);
    1215 
    1217  Constraint* MakeIsDifferentCstCt(IntExpr* const var, int64 value,
    1218  IntVar* const boolvar);
    1220  IntVar* MakeIsDifferentCstVar(IntExpr* const var, int64 value);
    1222  IntVar* MakeIsDifferentVar(IntExpr* const v1, IntExpr* const v2);
    1224  Constraint* MakeIsDifferentCt(IntExpr* const v1, IntExpr* const v2,
    1225  IntVar* const b);
    1227  Constraint* MakeNonEquality(IntExpr* const left, IntExpr* const right);
    1229  Constraint* MakeNonEquality(IntExpr* const expr, int64 value);
    1231  Constraint* MakeNonEquality(IntExpr* const expr, int value);
    1232 
    1234  Constraint* MakeIsLessOrEqualCstCt(IntExpr* const var, int64 value,
    1235  IntVar* const boolvar);
    1237  IntVar* MakeIsLessOrEqualCstVar(IntExpr* const var, int64 value);
    1239  IntVar* MakeIsLessOrEqualVar(IntExpr* const left, IntExpr* const right);
    1241  Constraint* MakeIsLessOrEqualCt(IntExpr* const left, IntExpr* const right,
    1242  IntVar* const b);
    1244  Constraint* MakeLessOrEqual(IntExpr* const left, IntExpr* const right);
    1246  Constraint* MakeLessOrEqual(IntExpr* const expr, int64 value);
    1248  Constraint* MakeLessOrEqual(IntExpr* const expr, int value);
    1249 
    1251  Constraint* MakeIsGreaterOrEqualCstCt(IntExpr* const var, int64 value,
    1252  IntVar* const boolvar);
    1254  IntVar* MakeIsGreaterOrEqualCstVar(IntExpr* const var, int64 value);
    1256  IntVar* MakeIsGreaterOrEqualVar(IntExpr* const left, IntExpr* const right);
    1258  Constraint* MakeIsGreaterOrEqualCt(IntExpr* const left, IntExpr* const right,
    1259  IntVar* const b);
    1261  Constraint* MakeGreaterOrEqual(IntExpr* const left, IntExpr* const right);
    1263  Constraint* MakeGreaterOrEqual(IntExpr* const expr, int64 value);
    1265  Constraint* MakeGreaterOrEqual(IntExpr* const expr, int value);
    1266 
    1268  Constraint* MakeIsGreaterCstCt(IntExpr* const v, int64 c, IntVar* const b);
    1270  IntVar* MakeIsGreaterCstVar(IntExpr* const var, int64 value);
    1272  IntVar* MakeIsGreaterVar(IntExpr* const left, IntExpr* const right);
    1274  Constraint* MakeIsGreaterCt(IntExpr* const left, IntExpr* const right,
    1275  IntVar* const b);
    1277  Constraint* MakeGreater(IntExpr* const left, IntExpr* const right);
    1279  Constraint* MakeGreater(IntExpr* const expr, int64 value);
    1281  Constraint* MakeGreater(IntExpr* const expr, int value);
    1282 
    1284  Constraint* MakeIsLessCstCt(IntExpr* const v, int64 c, IntVar* const b);
    1286  IntVar* MakeIsLessCstVar(IntExpr* const var, int64 value);
    1288  IntVar* MakeIsLessVar(IntExpr* const left, IntExpr* const right);
    1290  Constraint* MakeIsLessCt(IntExpr* const left, IntExpr* const right,
    1291  IntVar* const b);
    1293  Constraint* MakeLess(IntExpr* const left, IntExpr* const right);
    1295  Constraint* MakeLess(IntExpr* const expr, int64 value);
    1297  Constraint* MakeLess(IntExpr* const expr, int value);
    1298 
    1300  Constraint* MakeSumLessOrEqual(const std::vector<IntVar*>& vars, int64 cst);
    1301  Constraint* MakeSumGreaterOrEqual(const std::vector<IntVar*>& vars,
    1302  int64 cst);
    1303  Constraint* MakeSumEquality(const std::vector<IntVar*>& vars, int64 cst);
    1304  Constraint* MakeSumEquality(const std::vector<IntVar*>& vars,
    1305  IntVar* const var);
    1306  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1307  const std::vector<int64>& coefficients,
    1308  int64 cst);
    1309  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1310  const std::vector<int>& coefficients,
    1311  int64 cst);
    1312  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1313  const std::vector<int64>& coefficients,
    1314  IntVar* const target);
    1315  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1316  const std::vector<int>& coefficients,
    1317  IntVar* const target);
    1318  Constraint* MakeScalProdGreaterOrEqual(const std::vector<IntVar*>& vars,
    1319  const std::vector<int64>& coeffs,
    1320  int64 cst);
    1321  Constraint* MakeScalProdGreaterOrEqual(const std::vector<IntVar*>& vars,
    1322  const std::vector<int>& coeffs,
    1323  int64 cst);
    1324  Constraint* MakeScalProdLessOrEqual(const std::vector<IntVar*>& vars,
    1325  const std::vector<int64>& coefficients,
    1326  int64 cst);
    1327  Constraint* MakeScalProdLessOrEqual(const std::vector<IntVar*>& vars,
    1328  const std::vector<int>& coefficients,
    1329  int64 cst);
    1330 
    1331  Constraint* MakeMinEquality(const std::vector<IntVar*>& vars,
    1332  IntVar* const min_var);
    1333  Constraint* MakeMaxEquality(const std::vector<IntVar*>& vars,
    1334  IntVar* const max_var);
    1335 
    1336  Constraint* MakeElementEquality(const std::vector<int64>& vals,
    1337  IntVar* const index, IntVar* const target);
    1338  Constraint* MakeElementEquality(const std::vector<int>& vals,
    1339  IntVar* const index, IntVar* const target);
    1340  Constraint* MakeElementEquality(const std::vector<IntVar*>& vars,
    1341  IntVar* const index, IntVar* const target);
    1342  Constraint* MakeElementEquality(const std::vector<IntVar*>& vars,
    1343  IntVar* const index, int64 target);
    1345  Constraint* MakeAbsEquality(IntVar* const var, IntVar* const abs_var);
    1350  Constraint* MakeIndexOfConstraint(const std::vector<IntVar*>& vars,
    1351  IntVar* const index, int64 target);
    1352 
    1360 #if !defined(SWIG)
    1361  Demon* MakeActionDemon(Action action);
    1363 #endif
    1364  Demon* MakeClosureDemon(Closure closure);
    1366 
    1367  // ----- Between and related constraints -----
    1368 
    1370  Constraint* MakeBetweenCt(IntExpr* const expr, int64 l, int64 u);
    1371 
    1376  Constraint* MakeNotBetweenCt(IntExpr* const expr, int64 l, int64 u);
    1377 
    1379  Constraint* MakeIsBetweenCt(IntExpr* const expr, int64 l, int64 u,
    1380  IntVar* const b);
    1381  IntVar* MakeIsBetweenVar(IntExpr* const v, int64 l, int64 u);
    1382 
    1383  // ----- Member and related constraints -----
    1384 
    1387  Constraint* MakeMemberCt(IntExpr* const expr,
    1388  const std::vector<int64>& values);
    1389  Constraint* MakeMemberCt(IntExpr* const expr, const std::vector<int>& values);
    1390 
    1392  Constraint* MakeNotMemberCt(IntExpr* const expr,
    1393  const std::vector<int64>& values);
    1394  Constraint* MakeNotMemberCt(IntExpr* const expr,
    1395  const std::vector<int>& values);
    1396 
    1398  Constraint* MakeNotMemberCt(IntExpr* const expr, std::vector<int64> starts,
    1399  std::vector<int64> ends);
    1401  Constraint* MakeNotMemberCt(IntExpr* const expr, std::vector<int> starts,
    1402  std::vector<int> ends);
    1403 #if !defined(SWIG)
    1406  SortedDisjointIntervalList intervals);
    1407 #endif // !defined(SWIG)
    1408 
    1410  Constraint* MakeIsMemberCt(IntExpr* const expr,
    1411  const std::vector<int64>& values,
    1412  IntVar* const boolvar);
    1413  Constraint* MakeIsMemberCt(IntExpr* const expr,
    1414  const std::vector<int>& values,
    1415  IntVar* const boolvar);
    1416  IntVar* MakeIsMemberVar(IntExpr* const expr,
    1417  const std::vector<int64>& values);
    1418  IntVar* MakeIsMemberVar(IntExpr* const expr, const std::vector<int>& values);
    1419 
    1421  Constraint* MakeAtMost(std::vector<IntVar*> vars, int64 value,
    1422  int64 max_count);
    1424  Constraint* MakeCount(const std::vector<IntVar*>& vars, int64 value,
    1425  int64 max_count);
    1427  Constraint* MakeCount(const std::vector<IntVar*>& vars, int64 value,
    1428  IntVar* const max_count);
    1429 
    1431  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1432  const std::vector<int64>& values,
    1433  const std::vector<IntVar*>& cards);
    1435  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1436  const std::vector<int>& values,
    1437  const std::vector<IntVar*>& cards);
    1439  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1440  const std::vector<IntVar*>& cards);
    1443  Constraint* MakeDistribute(const std::vector<IntVar*>& vars, int64 card_min,
    1444  int64 card_max, int64 card_size);
    1448  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1449  const std::vector<int64>& card_min,
    1450  const std::vector<int64>& card_max);
    1454  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1455  const std::vector<int>& card_min,
    1456  const std::vector<int>& card_max);
    1460  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1461  const std::vector<int64>& values,
    1462  const std::vector<int64>& card_min,
    1463  const std::vector<int64>& card_max);
    1467  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1468  const std::vector<int>& values,
    1469  const std::vector<int>& card_min,
    1470  const std::vector<int>& card_max);
    1471 
    1476  Constraint* MakeDeviation(const std::vector<IntVar*>& vars,
    1477  IntVar* const deviation_var, int64 total_sum);
    1478 
    1481  Constraint* MakeAllDifferent(const std::vector<IntVar*>& vars);
    1482 
    1486  Constraint* MakeAllDifferent(const std::vector<IntVar*>& vars,
    1487  bool stronger_propagation);
    1488 
    1491  Constraint* MakeAllDifferentExcept(const std::vector<IntVar*>& vars,
    1492  int64 escape_value);
    1493  // TODO(user): Do we need a version with an array of escape values.
    1494 
    1510  Constraint* MakeSortingConstraint(const std::vector<IntVar*>& vars,
    1511  const std::vector<IntVar*>& sorted);
    1512  // TODO(user): Add void MakeSortedArray(const std::vector<IntVar*>& vars,
    1515 
    1518  Constraint* MakeLexicalLess(const std::vector<IntVar*>& left,
    1519  const std::vector<IntVar*>& right);
    1520 
    1523  Constraint* MakeLexicalLessOrEqual(const std::vector<IntVar*>& left,
    1524  const std::vector<IntVar*>& right);
    1525 
    1531  const std::vector<IntVar*>& left, const std::vector<IntVar*>& right);
    1532 
    1536  IntVar* index, const std::vector<IntVar*>& vars);
    1537 
    1541  IntVar* index, const std::vector<IntVar*>& vars);
    1542 
    1547  Constraint* MakeNullIntersect(const std::vector<IntVar*>& first_vars,
    1548  const std::vector<IntVar*>& second_vars);
    1549 
    1555  Constraint* MakeNullIntersectExcept(const std::vector<IntVar*>& first_vars,
    1556  const std::vector<IntVar*>& second_vars,
    1557  int64 escape_value);
    1558 
    1559  // TODO(user): Implement MakeAllNullIntersect taking an array of
    1560  // variable vectors.
    1561 
    1571  Constraint* MakeNoCycle(const std::vector<IntVar*>& nexts,
    1572  const std::vector<IntVar*>& active,
    1573  IndexFilter1 sink_handler = nullptr);
    1574  Constraint* MakeNoCycle(const std::vector<IntVar*>& nexts,
    1575  const std::vector<IntVar*>& active,
    1576  IndexFilter1 sink_handler, bool assume_paths);
    1577 
    1579  Constraint* MakeCircuit(const std::vector<IntVar*>& nexts);
    1580 
    1583  Constraint* MakeSubCircuit(const std::vector<IntVar*>& nexts);
    1584 
    1589  Constraint* MakePathCumul(const std::vector<IntVar*>& nexts,
    1590  const std::vector<IntVar*>& active,
    1591  const std::vector<IntVar*>& cumuls,
    1592  const std::vector<IntVar*>& transits);
    1595  // TODO(user): Merge with other path-cumuls constraints.
    1596  Constraint* MakeDelayedPathCumul(const std::vector<IntVar*>& nexts,
    1597  const std::vector<IntVar*>& active,
    1598  const std::vector<IntVar*>& cumuls,
    1599  const std::vector<IntVar*>& transits);
    1606  Constraint* MakePathCumul(const std::vector<IntVar*>& nexts,
    1607  const std::vector<IntVar*>& active,
    1608  const std::vector<IntVar*>& cumuls,
    1609  IndexEvaluator2 transit_evaluator);
    1610 
    1617  Constraint* MakePathCumul(const std::vector<IntVar*>& nexts,
    1618  const std::vector<IntVar*>& active,
    1619  const std::vector<IntVar*>& cumuls,
    1620  const std::vector<IntVar*>& slacks,
    1621  IndexEvaluator2 transit_evaluator);
    1624  // TODO(user): Only does checking on WhenBound events on next variables.
    1626  Constraint* MakePathConnected(std::vector<IntVar*> nexts,
    1627  std::vector<int64> sources,
    1628  std::vector<int64> sinks,
    1629  std::vector<IntVar*> status);
    1630 #ifndef SWIG
    1631  // TODO(user): This constraint does not make holes in variable domains;
    1637  std::vector<IntVar*> nexts,
    1638  const std::vector<std::pair<int, int>>& precedences);
    1648  std::vector<IntVar*> nexts,
    1649  const std::vector<std::pair<int, int>>& precedences,
    1650  const std::vector<int>& lifo_path_starts,
    1651  const std::vector<int>& fifo_path_starts);
    1655  std::vector<IntVar*> nexts, std::vector<IntVar*> transits,
    1656  const std::vector<std::pair<int, int>>& precedences);
    1657 #endif
    1658  Constraint* MakeMapDomain(IntVar* const var,
    1662  const std::vector<IntVar*>& actives);
    1663 
    1668  Constraint* MakeAllowedAssignments(const std::vector<IntVar*>& vars,
    1669  const IntTupleSet& tuples);
    1670 
    1678  Constraint* MakeTransitionConstraint(const std::vector<IntVar*>& vars,
    1679  const IntTupleSet& transition_table,
    1680  int64 initial_state,
    1681  const std::vector<int64>& final_states);
    1682 
    1690  Constraint* MakeTransitionConstraint(const std::vector<IntVar*>& vars,
    1691  const IntTupleSet& transition_table,
    1692  int64 initial_state,
    1693  const std::vector<int>& final_states);
    1694 
    1695 #if defined(SWIGPYTHON)
    1698  const std::vector<IntVar*>& vars,
    1699  const std::vector<std::vector<int64>>& raw_tuples) {
    1700  IntTupleSet tuples(vars.size());
    1701  tuples.InsertAll(raw_tuples);
    1702  return MakeAllowedAssignments(vars, tuples);
    1703  }
    1704 
    1706  const std::vector<IntVar*>& vars,
    1707  const std::vector<std::vector<int64>>& raw_transitions,
    1708  int64 initial_state, const std::vector<int>& final_states) {
    1709  IntTupleSet transitions(3);
    1710  transitions.InsertAll(raw_transitions);
    1711  return MakeTransitionConstraint(vars, transitions, initial_state,
    1712  final_states);
    1713  }
    1714 #endif
    1715 
    1725  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1726  const std::vector<IntVar*>& x_size, const std::vector<IntVar*>& y_size);
    1728  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1729  const std::vector<int64>& x_size, const std::vector<int64>& y_size);
    1731  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1732  const std::vector<int>& x_size, const std::vector<int>& y_size);
    1733 
    1743  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1744  const std::vector<IntVar*>& x_size, const std::vector<IntVar*>& y_size);
    1746  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1747  const std::vector<int64>& x_size, const std::vector<int64>& y_size);
    1749  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1750  const std::vector<int>& x_size, const std::vector<int>& y_size);
    1751 
    1757  Pack* MakePack(const std::vector<IntVar*>& vars, int number_of_bins);
    1758 
    1763  IntervalVar* MakeFixedDurationIntervalVar(int64 start_min, int64 start_max,
    1764  int64 duration, bool optional,
    1765  const std::string& name);
    1766 
    1770  int count, int64 start_min, int64 start_max, int64 duration,
    1771  bool optional, const std::string& name,
    1772  std::vector<IntervalVar*>* const array);
    1773 
    1776  IntervalVar* MakeFixedDurationIntervalVar(IntVar* const start_variable,
    1777  int64 duration,
    1778  const std::string& name);
    1779 
    1782  IntervalVar* MakeFixedDurationIntervalVar(IntVar* const start_variable,
    1783  int64 duration,
    1784  IntVar* const performed_variable,
    1785  const std::string& name);
    1786 
    1790  const std::vector<IntVar*>& start_variables, int64 duration,
    1791  const std::string& name, std::vector<IntervalVar*>* const array);
    1792 
    1796  const std::vector<IntVar*>& start_variables,
    1797  const std::vector<int64>& durations, const std::string& name,
    1798  std::vector<IntervalVar*>* const array);
    1802  const std::vector<IntVar*>& start_variables,
    1803  const std::vector<int>& durations, const std::string& name,
    1804  std::vector<IntervalVar*>* const array);
    1805 
    1809  const std::vector<IntVar*>& start_variables,
    1810  const std::vector<int64>& durations,
    1811  const std::vector<IntVar*>& performed_variables, const std::string& name,
    1812  std::vector<IntervalVar*>* const array);
    1813 
    1817  const std::vector<IntVar*>& start_variables,
    1818  const std::vector<int>& durations,
    1819  const std::vector<IntVar*>& performed_variables, const std::string& name,
    1820  std::vector<IntervalVar*>* const array);
    1821 
    1823  IntervalVar* MakeFixedInterval(int64 start, int64 duration,
    1824  const std::string& name);
    1825 
    1828  IntervalVar* MakeIntervalVar(int64 start_min, int64 start_max,
    1829  int64 duration_min, int64 duration_max,
    1830  int64 end_min, int64 end_max, bool optional,
    1831  const std::string& name);
    1832 
    1835  void MakeIntervalVarArray(int count, int64 start_min, int64 start_max,
    1836  int64 duration_min, int64 duration_max,
    1837  int64 end_min, int64 end_max, bool optional,
    1838  const std::string& name,
    1839  std::vector<IntervalVar*>* const array);
    1840 
    1843  IntervalVar* MakeMirrorInterval(IntervalVar* const interval_var);
    1844 
    1850  IntervalVar* const interval_var, int64 duration, int64 offset);
    1851 
    1857  IntervalVar* const interval_var, int64 duration, int64 offset);
    1858 
    1864  IntervalVar* const interval_var, int64 duration, int64 offset);
    1865 
    1871  IntervalVar* const interval_var, int64 duration, int64 offset);
    1872 
    1890  IntervalVar* MakeIntervalRelaxedMin(IntervalVar* const interval_var);
    1891 
    1909  IntervalVar* MakeIntervalRelaxedMax(IntervalVar* const interval_var);
    1910 
    1913  Constraint* MakeIntervalVarRelation(IntervalVar* const t,
    1914  UnaryIntervalRelation r, int64 d);
    1915 
    1917  Constraint* MakeIntervalVarRelation(IntervalVar* const t1,
    1919  IntervalVar* const t2);
    1920 
    1925  Constraint* MakeIntervalVarRelationWithDelay(IntervalVar* const t1,
    1927  IntervalVar* const t2,
    1928  int64 delay);
    1929 
    1933  Constraint* MakeTemporalDisjunction(IntervalVar* const t1,
    1934  IntervalVar* const t2, IntVar* const alt);
    1935 
    1938  Constraint* MakeTemporalDisjunction(IntervalVar* const t1,
    1939  IntervalVar* const t2);
    1940 
    1943  DisjunctiveConstraint* MakeDisjunctiveConstraint(
    1944  const std::vector<IntervalVar*>& intervals, const std::string& name);
    1945 
    1949  DisjunctiveConstraint* MakeStrictDisjunctiveConstraint(
    1950  const std::vector<IntervalVar*>& intervals, const std::string& name);
    1951 
    1961  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    1962  const std::vector<int64>& demands, int64 capacity,
    1963  const std::string& name);
    1964 
    1974  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    1975  const std::vector<int>& demands, int64 capacity,
    1976  const std::string& name);
    1977 
    1987  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    1988  const std::vector<int64>& demands,
    1989  IntVar* const capacity, const std::string& name);
    1990 
    2000  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    2001  const std::vector<int>& demands,
    2002  IntVar* const capacity, const std::string& name);
    2003 
    2011  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    2012  const std::vector<IntVar*>& demands,
    2013  int64 capacity, const std::string& name);
    2014 
    2022  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    2023  const std::vector<IntVar*>& demands,
    2024  IntVar* const capacity, const std::string& name);
    2025 
    2031  Constraint* MakeCover(const std::vector<IntervalVar*>& vars,
    2032  IntervalVar* const target_var);
    2033 
    2035  Constraint* MakeEquality(IntervalVar* const var1, IntervalVar* const var2);
    2036 
    2038  Assignment* MakeAssignment();
    2039 
    2041  Assignment* MakeAssignment(const Assignment* const a);
    2042 
    2044  SolutionCollector* MakeFirstSolutionCollector(
    2045  const Assignment* const assignment);
    2048  SolutionCollector* MakeFirstSolutionCollector();
    2049 
    2051  SolutionCollector* MakeLastSolutionCollector(
    2052  const Assignment* const assignment);
    2055  SolutionCollector* MakeLastSolutionCollector();
    2056 
    2061  SolutionCollector* MakeBestValueSolutionCollector(
    2062  const Assignment* const assignment, bool maximize);
    2068  SolutionCollector* MakeBestValueSolutionCollector(bool maximize);
    2069 
    2073  SolutionCollector* MakeNBestValueSolutionCollector(
    2074  const Assignment* const assignment, int solution_count, bool maximize);
    2075  SolutionCollector* MakeNBestValueSolutionCollector(int solution_count,
    2076  bool maximize);
    2077 
    2079  SolutionCollector* MakeAllSolutionCollector(
    2080  const Assignment* const assignment);
    2083  SolutionCollector* MakeAllSolutionCollector();
    2084 
    2086  OptimizeVar* MakeMinimize(IntVar* const v, int64 step);
    2087 
    2089  OptimizeVar* MakeMaximize(IntVar* const v, int64 step);
    2090 
    2092  OptimizeVar* MakeOptimize(bool maximize, IntVar* const v, int64 step);
    2093 
    2096  OptimizeVar* MakeWeightedMinimize(const std::vector<IntVar*>& sub_objectives,
    2097  const std::vector<int64>& weights,
    2098  int64 step);
    2099 
    2102  OptimizeVar* MakeWeightedMinimize(const std::vector<IntVar*>& sub_objectives,
    2103  const std::vector<int>& weights,
    2104  int64 step);
    2105 
    2107  OptimizeVar* MakeWeightedMaximize(const std::vector<IntVar*>& sub_objectives,
    2108  const std::vector<int64>& weights,
    2109  int64 step);
    2110 
    2112  OptimizeVar* MakeWeightedMaximize(const std::vector<IntVar*>& sub_objectives,
    2113  const std::vector<int>& weights,
    2114  int64 step);
    2115 
    2117  OptimizeVar* MakeWeightedOptimize(bool maximize,
    2118  const std::vector<IntVar*>& sub_objectives,
    2119  const std::vector<int64>& weights,
    2120  int64 step);
    2121 
    2123  OptimizeVar* MakeWeightedOptimize(bool maximize,
    2124  const std::vector<IntVar*>& sub_objectives,
    2125  const std::vector<int>& weights,
    2126  int64 step);
    2127 
    2129 
    2145 
    2146  SearchMonitor* MakeTabuSearch(bool maximize, IntVar* const v, int64 step,
    2147  const std::vector<IntVar*>& vars,
    2148  int64 keep_tenure, int64 forbid_tenure,
    2149  double tabu_factor);
    2150 
    2153  SearchMonitor* MakeGenericTabuSearch(bool maximize, IntVar* const v,
    2154  int64 step,
    2155  const std::vector<IntVar*>& tabu_vars,
    2156  int64 forbid_tenure);
    2157 
    2159  // TODO(user): document behavior
    2160  SearchMonitor* MakeSimulatedAnnealing(bool maximize, IntVar* const v,
    2161  int64 step, int64 initial_temperature);
    2162 
    2165  SearchMonitor* MakeGuidedLocalSearch(bool maximize, IntVar* const objective,
    2166  IndexEvaluator2 objective_function,
    2167  int64 step,
    2168  const std::vector<IntVar*>& vars,
    2169  double penalty_factor);
    2171  bool maximize, IntVar* const objective,
    2172  IndexEvaluator3 objective_function, int64 step,
    2173  const std::vector<IntVar*>& vars,
    2174  const std::vector<IntVar*>& secondary_vars, double penalty_factor);
    2175 
    2179  SearchMonitor* MakeLubyRestart(int scale_factor);
    2180 
    2183  SearchMonitor* MakeConstantRestart(int frequency);
    2184 
    2187  RegularLimit* MakeTimeLimit(int64 time_in_ms);
    2188 
    2191  RegularLimit* MakeBranchesLimit(int64 branches);
    2192 
    2195  RegularLimit* MakeFailuresLimit(int64 failures);
    2196 
    2199  RegularLimit* MakeSolutionsLimit(int64 solutions);
    2200 
    2203  RegularLimit* MakeLimit(int64 time, int64 branches, int64 failures,
    2204  int64 solutions);
    2207  RegularLimit* MakeLimit(int64 time, int64 branches, int64 failures,
    2208  int64 solutions, bool smart_time_check);
    2211  RegularLimit* MakeLimit(int64 time, int64 branches, int64 failures,
    2212  int64 solutions, bool smart_time_check,
    2213  bool cumulative);
    2215  RegularLimit* MakeLimit(const RegularLimitParameters& proto);
    2216 
    2218  RegularLimitParameters MakeDefaultRegularLimitParameters() const;
    2219 
    2223  SearchLimit* MakeLimit(SearchLimit* const limit_1,
    2224  SearchLimit* const limit_2);
    2225 
    2228  SearchLimit* MakeCustomLimit(std::function<bool()> limiter);
    2229 
    2230  // TODO(user): DEPRECATE API of MakeSearchLog(.., IntVar* var,..).
    2231 
    2234  SearchMonitor* MakeSearchLog(int branch_period);
    2235 
    2237  SearchMonitor* MakeSearchLog(int branch_period, IntVar* const var);
    2238 
    2241  SearchMonitor* MakeSearchLog(int branch_period,
    2242  std::function<std::string()> display_callback);
    2243 
    2246  SearchMonitor* MakeSearchLog(int branch_period, IntVar* var,
    2247  std::function<std::string()> display_callback);
    2248 
    2251  SearchMonitor* MakeSearchLog(int branch_period, OptimizeVar* const opt_var);
    2252 
    2255  SearchMonitor* MakeSearchLog(int branch_period, OptimizeVar* const opt_var,
    2256  std::function<std::string()> display_callback);
    2257 
    2262  int branch_period = 1;
    2266  IntVar* variable = nullptr;
    2270  double scaling_factor = 1.0;
    2271  double offset = 0;
    2274  std::function<std::string()> display_callback;
    2275  };
    2277 
    2280  SearchMonitor* MakeSearchTrace(const std::string& prefix);
    2281 
    2283  SearchMonitor* MakeEnterSearchCallback(std::function<void()> callback);
    2284  SearchMonitor* MakeExitSearchCallback(std::function<void()> callback);
    2285  SearchMonitor* MakeAtSolutionCallback(std::function<void()> callback);
    2286 
    2291 #if !defined(SWIG)
    2294  absl::flat_hash_map<const IntVar*, int>* const map);
    2295 #endif // !defined(SWIG)
    2296 
    2299  const std::vector<SymmetryBreaker*>& visitors);
    2302  SymmetryBreaker* const v2);
    2304  SymmetryBreaker* const v2,
    2305  SymmetryBreaker* const v3);
    2307  SymmetryBreaker* const v2,
    2308  SymmetryBreaker* const v3,
    2309  SymmetryBreaker* const v4);
    2310 
    2312  Decision* MakeAssignVariableValue(IntVar* const var, int64 val);
    2313  Decision* MakeVariableLessOrEqualValue(IntVar* const var, int64 value);
    2314  Decision* MakeVariableGreaterOrEqualValue(IntVar* const var, int64 value);
    2315  Decision* MakeSplitVariableDomain(IntVar* const var, int64 val,
    2316  bool start_with_lower_half);
    2317  Decision* MakeAssignVariableValueOrFail(IntVar* const var, int64 value);
    2318  Decision* MakeAssignVariableValueOrDoNothing(IntVar* const var, int64 value);
    2319  Decision* MakeAssignVariablesValues(const std::vector<IntVar*>& vars,
    2320  const std::vector<int64>& values);
    2322  Decision* MakeDecision(Action apply, Action refute);
    2323 
    2333  DecisionBuilder* const db2);
    2335  DecisionBuilder* const db2,
    2336  DecisionBuilder* const db3);
    2338  DecisionBuilder* const db2,
    2339  DecisionBuilder* const db3,
    2340  DecisionBuilder* const db4);
    2341  DecisionBuilder* Compose(const std::vector<DecisionBuilder*>& dbs);
    2342 
    2354  // TODO(user): The search tree can be balanced by using binary
    2359  DecisionBuilder* Try(DecisionBuilder* const db1, DecisionBuilder* const db2);
    2360  DecisionBuilder* Try(DecisionBuilder* const db1, DecisionBuilder* const db2,
    2361  DecisionBuilder* const db3);
    2362  DecisionBuilder* Try(DecisionBuilder* const db1, DecisionBuilder* const db2,
    2363  DecisionBuilder* const db3, DecisionBuilder* const db4);
    2364  DecisionBuilder* Try(const std::vector<DecisionBuilder*>& dbs);
    2365 
    2367  // TODO(user): name each of them differently, and document them (and do that
    2369  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2370  IntVarStrategy var_str, IntValueStrategy val_str);
    2371  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2372  IndexEvaluator1 var_evaluator,
    2373  IntValueStrategy val_str);
    2374 
    2375  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2376  IntVarStrategy var_str,
    2377  IndexEvaluator2 value_evaluator);
    2378 
    2381  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2382  IntVarStrategy var_str,
    2383  VariableValueComparator var_val1_val2_comparator);
    2384 
    2385  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2386  IndexEvaluator1 var_evaluator,
    2387  IndexEvaluator2 value_evaluator);
    2388 
    2389  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2390  IntVarStrategy var_str,
    2391  IndexEvaluator2 value_evaluator,
    2392  IndexEvaluator1 tie_breaker);
    2393 
    2394  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2395  IndexEvaluator1 var_evaluator,
    2396  IndexEvaluator2 value_evaluator,
    2397  IndexEvaluator1 tie_breaker);
    2398 
    2399  DecisionBuilder* MakeDefaultPhase(const std::vector<IntVar*>& vars);
    2400  DecisionBuilder* MakeDefaultPhase(const std::vector<IntVar*>& vars,
    2402 
    2404  DecisionBuilder* MakePhase(IntVar* const v0, IntVarStrategy var_str,
    2405  IntValueStrategy val_str);
    2406  DecisionBuilder* MakePhase(IntVar* const v0, IntVar* const v1,
    2407  IntVarStrategy var_str, IntValueStrategy val_str);
    2408  DecisionBuilder* MakePhase(IntVar* const v0, IntVar* const v1,
    2409  IntVar* const v2, IntVarStrategy var_str,
    2410  IntValueStrategy val_str);
    2411  DecisionBuilder* MakePhase(IntVar* const v0, IntVar* const v1,
    2412  IntVar* const v2, IntVar* const v3,
    2413  IntVarStrategy var_str, IntValueStrategy val_str);
    2414 
    2420  Decision* MakeScheduleOrPostpone(IntervalVar* const var, int64 est,
    2421  int64* const marker);
    2422 
    2428  Decision* MakeScheduleOrExpedite(IntervalVar* const var, int64 est,
    2429  int64* const marker);
    2430 
    2433  Decision* MakeRankFirstInterval(SequenceVar* const sequence, int index);
    2434 
    2437  Decision* MakeRankLastInterval(SequenceVar* const sequence, int index);
    2438 
    2444  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2446 
    2454  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2455  IndexEvaluator2 eval, IndexEvaluator1 tie_breaker,
    2456  EvaluatorStrategy str);
    2457 
    2459  DecisionBuilder* MakePhase(const std::vector<IntervalVar*>& intervals,
    2460  IntervalStrategy str);
    2461 
    2462  DecisionBuilder* MakePhase(const std::vector<SequenceVar*>& sequences,
    2463  SequenceStrategy str);
    2464 
    2468  Assignment* const assignment, DecisionBuilder* const db,
    2469  const std::vector<IntVar*>& vars);
    2470 
    2474 
    2481  SearchMonitor* const monitor1);
    2483  SearchMonitor* const monitor1,
    2484  SearchMonitor* const monitor2);
    2486  SearchMonitor* const monitor1,
    2487  SearchMonitor* const monitor2,
    2488  SearchMonitor* const monitor3);
    2490  SearchMonitor* const monitor1,
    2491  SearchMonitor* const monitor2,
    2492  SearchMonitor* const monitor3,
    2493  SearchMonitor* const monitor4);
    2495  const std::vector<SearchMonitor*>& monitors);
    2496 
    2505  Assignment* const solution, bool maximize,
    2506  int64 step);
    2508  Assignment* const solution, bool maximize,
    2509  int64 step,
    2510  SearchMonitor* const monitor1);
    2512  Assignment* const solution, bool maximize,
    2513  int64 step, SearchMonitor* const monitor1,
    2514  SearchMonitor* const monitor2);
    2516  Assignment* const solution, bool maximize,
    2517  int64 step, SearchMonitor* const monitor1,
    2518  SearchMonitor* const monitor2,
    2519  SearchMonitor* const monitor3);
    2521  Assignment* const solution, bool maximize,
    2522  int64 step, SearchMonitor* const monitor1,
    2523  SearchMonitor* const monitor2,
    2524  SearchMonitor* const monitor3,
    2525  SearchMonitor* const monitor4);
    2527  DecisionBuilder* const db, Assignment* const solution, bool maximize,
    2528  int64 step, const std::vector<SearchMonitor*>& monitors);
    2529 
    2533 
    2537 
    2539  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2541  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2542  const std::vector<IntVar*>& secondary_vars,
    2544  // TODO(user): Make the callback an IndexEvaluator2 when there are no
    2545  // secondary variables.
    2546  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2547  IndexEvaluator3 evaluator,
    2549  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2550  const std::vector<IntVar*>& secondary_vars,
    2551  IndexEvaluator3 evaluator,
    2553 
    2561  LocalSearchOperator* MakeRandomLnsOperator(const std::vector<IntVar*>& vars,
    2562  int number_of_variables);
    2563  LocalSearchOperator* MakeRandomLnsOperator(const std::vector<IntVar*>& vars,
    2564  int number_of_variables,
    2565  int32 seed);
    2566 
    2573 
    2581  const std::vector<IntVar*>& variables,
    2582  const std::vector<int64>& target_values);
    2583 
    2615  const std::vector<LocalSearchOperator*>& ops);
    2617  const std::vector<LocalSearchOperator*>& ops, bool restart);
    2619  const std::vector<LocalSearchOperator*>& ops,
    2620  std::function<int64(int, int)> evaluator);
    2624  const std::vector<LocalSearchOperator*>& ops);
    2625 
    2630  const std::vector<LocalSearchOperator*>& ops, int32 seed);
    2631 
    2638  int64 limit);
    2639 
    2664  // TODO(user): Make a variant which runs a local search after each
    2665  // solution found in a DFS.
    2666 
    2668  Assignment* const assignment,
    2669  LocalSearchPhaseParameters* const parameters);
    2671  const std::vector<IntVar*>& vars, DecisionBuilder* const first_solution,
    2672  LocalSearchPhaseParameters* const parameters);
    2675  const std::vector<IntVar*>& vars, DecisionBuilder* const first_solution,
    2676  DecisionBuilder* const first_solution_sub_decision_builder,
    2677  LocalSearchPhaseParameters* const parameters);
    2679  const std::vector<SequenceVar*>& vars,
    2680  DecisionBuilder* const first_solution,
    2681  LocalSearchPhaseParameters* const parameters);
    2682 
    2685 
    2687  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2688  IntVar* objective, LocalSearchOperator* const ls_operator,
    2689  DecisionBuilder* const sub_decision_builder);
    2690  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2691  IntVar* objective, LocalSearchOperator* const ls_operator,
    2692  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit);
    2693  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2694  IntVar* objective, LocalSearchOperator* const ls_operator,
    2695  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit,
    2696  const std::vector<LocalSearchFilter*>& filters);
    2697 
    2698  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2699  IntVar* objective, SolutionPool* const pool,
    2700  LocalSearchOperator* const ls_operator,
    2701  DecisionBuilder* const sub_decision_builder);
    2702  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2703  IntVar* objective, SolutionPool* const pool,
    2704  LocalSearchOperator* const ls_operator,
    2705  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit);
    2706  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2707  IntVar* objective, SolutionPool* const pool,
    2708  LocalSearchOperator* const ls_operator,
    2709  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit,
    2710  const std::vector<LocalSearchFilter*>& filters);
    2711 
    2715  const std::vector<IntVar*>& vars, IndexEvaluator2 values,
    2716  Solver::LocalSearchFilterBound filter_enum);
    2718  const std::vector<IntVar*>& vars, IndexEvaluator2 values,
    2719  ObjectiveWatcher delta_objective_callback,
    2720  Solver::LocalSearchFilterBound filter_enum);
    2722  const std::vector<IntVar*>& vars,
    2723  const std::vector<IntVar*>& secondary_vars,
    2724  Solver::IndexEvaluator3 values,
    2725  Solver::LocalSearchFilterBound filter_enum);
    2727  const std::vector<IntVar*>& vars,
    2728  const std::vector<IntVar*>& secondary_vars,
    2729  Solver::IndexEvaluator3 values, ObjectiveWatcher delta_objective_callback,
    2730  Solver::LocalSearchFilterBound filter_enum);
    2731 
    2734  void TopPeriodicCheck();
    2738  int TopProgressPercent();
    2739 
    2743  void PushState();
    2744  void PopState();
    2745 
    2748  int SearchDepth() const;
    2749 
    2752  int SearchLeftDepth() const;
    2753 
    2756  int SolveDepth() const;
    2757 
    2760 
    2763 
    2765  template <class T>
    2766  void SaveAndSetValue(T* adr, T val) {
    2767  if (*adr != val) {
    2768  InternalSaveValue(adr);
    2769  *adr = val;
    2770  }
    2771  }
    2772 
    2774  template <class T>
    2775  void SaveAndAdd(T* adr, T val) {
    2776  if (val != 0) {
    2777  InternalSaveValue(adr);
    2778  (*adr) += val;
    2779  }
    2780  }
    2781 
    2783  int64 Rand64(int64 size) { return random_.Next64() % size; }
    2784 
    2786  int32 Rand32(int32 size) { return random_.Next() % size; }
    2787 
    2789  void ReSeed(int32 seed) { random_.Reset(seed); }
    2790 
    2794  void ExportProfilingOverview(const std::string& filename);
    2795 
    2797  // TODO(user): Add a profiling protocol buffer and merge demon and local
    2799  std::string LocalSearchProfile() const;
    2800 
    2804  bool CurrentlyInSolve() const;
    2805 
    2808  int constraints() const { return constraints_list_.size(); }
    2809 
    2811  void Accept(ModelVisitor* const visitor) const;
    2812 
    2813  Decision* balancing_decision() const { return balancing_decision_.get(); }
    2814 
    2816 #if !defined(SWIG)
    2817  void set_fail_intercept(std::function<void()> fail_intercept) {
    2818  fail_intercept_ = std::move(fail_intercept);
    2819  }
    2820 #endif // !defined(SWIG)
    2821  void clear_fail_intercept() { fail_intercept_ = nullptr; }
    2823  DemonProfiler* demon_profiler() const { return demon_profiler_; }
    2824  // TODO(user): Get rid of the following methods once fast local search is
    2827  void SetUseFastLocalSearch(bool use_fast_local_search) {
    2828  use_fast_local_search_ = use_fast_local_search;
    2829  }
    2831  bool UseFastLocalSearch() const { return use_fast_local_search_; }
    2833  bool HasName(const PropagationBaseObject* object) const;
    2835  Demon* RegisterDemon(Demon* const demon);
    2837  IntExpr* RegisterIntExpr(IntExpr* const expr);
    2839  IntVar* RegisterIntVar(IntVar* const var);
    2843 
    2845  Search* ActiveSearch() const;
    2847  ModelCache* Cache() const;
    2849  bool InstrumentsDemons() const;
    2851  bool IsProfilingEnabled() const;
    2853  bool IsLocalSearchProfilingEnabled() const;
    2855  bool InstrumentsVariables() const;
    2857  bool NameAllVariables() const;
    2859  std::string model_name() const;
    2864  void AddPropagationMonitor(PropagationMonitor* const monitor);
    2870  void SetSearchContext(Search* search, const std::string& search_context);
    2871  std::string SearchContext() const;
    2872  std::string SearchContext(const Search* search) const;
    2874  // TODO(user): Investigate if this should be moved to Search.
    2877  void ClearLocalSearchState() { local_search_state_.reset(nullptr); }
    2878 
    2883  std::vector<int64> tmp_vector_;
    2884 
    2885  friend class BaseIntExpr;
    2886  friend class Constraint;
    2887  friend class DemonProfiler;
    2888  friend class FindOneNeighbor;
    2889  friend class IntVar;
    2891  friend class Queue;
    2892  friend class SearchMonitor;
    2893  friend class SearchLimit;
    2894  friend class RoutingModel;
    2895  friend class LocalSearchProfiler;
    2896 
    2897 #if !defined(SWIG)
    2898  friend void InternalSaveBooleanVarValue(Solver* const, IntVar* const);
    2899  template <class>
    2900  friend class SimpleRevFIFO;
    2901  template <class K, class V>
    2902  friend class RevImmutableMultiMap;
    2903 
    2908  bool IsBooleanVar(IntExpr* const expr, IntVar** inner_var,
    2909  bool* is_negated) const;
    2910 
    2915  bool IsProduct(IntExpr* const expr, IntExpr** inner_expr, int64* coefficient);
    2916 #endif
    2917 
    2918  IntExpr* CastExpression(const IntVar* const var) const;
    2921 
    2923  void FinishCurrentSearch();
    2924  void RestartCurrentSearch();
    2925 
    2928  void ShouldFail() { should_fail_ = true; }
    2929  void CheckFail() {
    2930  if (!should_fail_) return;
    2931  should_fail_ = false;
    2932  Fail();
    2933  }
    2934 
    2935  private:
    2936  void Init();
    2937  void PushState(MarkerType t, const StateInfo& info);
    2938  MarkerType PopState(StateInfo* info);
    2939  void PushSentinel(int magic_code);
    2940  void BacktrackToSentinel(int magic_code);
    2941  void ProcessConstraints();
    2942  bool BacktrackOneLevel(Decision** fail_decision);
    2943  void JumpToSentinelWhenNested();
    2944  void JumpToSentinel();
    2945  void check_alloc_state();
    2946  void FreezeQueue();
    2947  void EnqueueVar(Demon* const d);
    2948  void EnqueueDelayedDemon(Demon* const d);
    2949  void ExecuteAll(const SimpleRevFIFO<Demon*>& demons);
    2950  void EnqueueAll(const SimpleRevFIFO<Demon*>& demons);
    2951  void UnfreezeQueue();
    2952  void reset_action_on_fail();
    2953  void set_action_on_fail(Action a);
    2954  void set_variable_to_clean_on_fail(IntVar* v);
    2955  void IncrementUncheckedSolutionCounter();
    2956  bool IsUncheckedSolutionLimitReached();
    2957 
    2958  void InternalSaveValue(int* valptr);
    2959  void InternalSaveValue(int64* valptr);
    2960  void InternalSaveValue(uint64* valptr);
    2961  void InternalSaveValue(double* valptr);
    2962  void InternalSaveValue(bool* valptr);
    2963  void InternalSaveValue(void** valptr);
    2964  void InternalSaveValue(int64** valptr) {
    2965  InternalSaveValue(reinterpret_cast<void**>(valptr));
    2966  }
    2967 
    2968  BaseObject* SafeRevAlloc(BaseObject* ptr);
    2969 
    2970  int* SafeRevAllocArray(int* ptr);
    2971  int64* SafeRevAllocArray(int64* ptr);
    2972  uint64* SafeRevAllocArray(uint64* ptr);
    2973  double* SafeRevAllocArray(double* ptr);
    2974  BaseObject** SafeRevAllocArray(BaseObject** ptr);
    2975  IntVar** SafeRevAllocArray(IntVar** ptr);
    2976  IntExpr** SafeRevAllocArray(IntExpr** ptr);
    2977  Constraint** SafeRevAllocArray(Constraint** ptr);
    2980  void* UnsafeRevAllocAux(void* ptr);
    2981  template <class T>
    2982  T* UnsafeRevAlloc(T* ptr) {
    2983  return reinterpret_cast<T*>(
    2984  UnsafeRevAllocAux(reinterpret_cast<void*>(ptr)));
    2985  }
    2986  void** UnsafeRevAllocArrayAux(void** ptr);
    2987  template <class T>
    2988  T** UnsafeRevAllocArray(T** ptr) {
    2989  return reinterpret_cast<T**>(
    2990  UnsafeRevAllocArrayAux(reinterpret_cast<void**>(ptr)));
    2991  }
    2992 
    2993  void InitCachedIntConstants();
    2994  void InitCachedConstraint();
    2995 
    2999  Search* TopLevelSearch() const { return searches_.at(1); }
    3003  Search* ParentSearch() const {
    3004  const size_t search_size = searches_.size();
    3005  DCHECK_GT(search_size, 1);
    3006  return searches_[search_size - 2];
    3007  }
    3008 
    3010  std::string GetName(const PropagationBaseObject* object);
    3011  void SetName(const PropagationBaseObject* object, const std::string& name);
    3012 
    3015  int GetNewIntVarIndex() { return num_int_vars_++; }
    3016 
    3018  bool IsADifference(IntExpr* expr, IntExpr** const left,
    3019  IntExpr** const right);
    3020 
    3021  const std::string name_;
    3022  const ConstraintSolverParameters parameters_;
    3023  absl::flat_hash_map<const PropagationBaseObject*, std::string>
    3024  propagation_object_names_;
    3025  absl::flat_hash_map<const PropagationBaseObject*, IntegerCastInfo>
    3026  cast_information_;
    3027  absl::flat_hash_set<const Constraint*> cast_constraints_;
    3028  const std::string empty_name_;
    3029  std::unique_ptr<Queue> queue_;
    3030  std::unique_ptr<Trail> trail_;
    3031  std::vector<Constraint*> constraints_list_;
    3032  std::vector<Constraint*> additional_constraints_list_;
    3033  std::vector<int> additional_constraints_parent_list_;
    3034  SolverState state_;
    3035  int64 branches_;
    3036  int64 fails_;
    3037  int64 decisions_;
    3038  int64 demon_runs_[kNumPriorities];
    3039  int64 neighbors_;
    3040  int64 filtered_neighbors_;
    3041  int64 accepted_neighbors_;
    3042  OptimizationDirection optimization_direction_;
    3043  std::unique_ptr<ClockTimer> timer_;
    3044  std::vector<Search*> searches_;
    3045  ACMRandom random_;
    3046  uint64 fail_stamp_;
    3047  std::unique_ptr<Decision> balancing_decision_;
    3049  std::function<void()> fail_intercept_;
    3051  DemonProfiler* const demon_profiler_;
    3053  bool use_fast_local_search_;
    3055  LocalSearchProfiler* const local_search_profiler_;
    3057  std::unique_ptr<Assignment> local_search_state_;
    3058 
    3060  enum { MIN_CACHED_INT_CONST = -8, MAX_CACHED_INT_CONST = 8 };
    3061  IntVar* cached_constants_[MAX_CACHED_INT_CONST + 1 - MIN_CACHED_INT_CONST];
    3062 
    3064  Constraint* true_constraint_;
    3065  Constraint* false_constraint_;
    3066 
    3067  std::unique_ptr<Decision> fail_decision_;
    3068  int constraint_index_;
    3069  int additional_constraint_index_;
    3070  int num_int_vars_;
    3071 
    3072  std::unique_ptr<ModelCache> model_cache_;
    3073  std::unique_ptr<PropagationMonitor> propagation_monitor_;
    3074  PropagationMonitor* print_trace_;
    3075  std::unique_ptr<LocalSearchMonitor> local_search_monitor_;
    3076  int anonymous_variable_index_;
    3077  bool should_fail_;
    3078 
    3079  DISALLOW_COPY_AND_ASSIGN(Solver);
    3080 };
    3081 
    3082 std::ostream& operator<<(std::ostream& out, const Solver* const s);
    3083 
    3087 inline int64 Zero() { return 0; }
    3088 
    3090 inline int64 One() { return 1; }
    3091 
    3095 class BaseObject {
    3096  public:
    3098  virtual ~BaseObject() {}
    3099  virtual std::string DebugString() const { return "BaseObject"; }
    3100 
    3101  private:
    3102  DISALLOW_COPY_AND_ASSIGN(BaseObject);
    3103 };
    3104 
    3105 std::ostream& operator<<(std::ostream& out, const BaseObject* o);
    3106 
    3111  public:
    3112  explicit PropagationBaseObject(Solver* const s) : solver_(s) {}
    3114 
    3115  std::string DebugString() const override {
    3116  if (name().empty()) {
    3117  return "PropagationBaseObject";
    3118  } else {
    3119  return absl::StrFormat("PropagationBaseObject: %s", name());
    3120  }
    3121  }
    3122  Solver* solver() const { return solver_; }
    3123 
    3126  void FreezeQueue() { solver_->FreezeQueue(); }
    3127 
    3130  void UnfreezeQueue() { solver_->UnfreezeQueue(); }
    3131 
    3135  void EnqueueDelayedDemon(Demon* const d) { solver_->EnqueueDelayedDemon(d); }
    3136  void EnqueueVar(Demon* const d) { solver_->EnqueueVar(d); }
    3137  void ExecuteAll(const SimpleRevFIFO<Demon*>& demons);
    3138  void EnqueueAll(const SimpleRevFIFO<Demon*>& demons);
    3139 
    3140 #if !defined(SWIG)
    3141  // This method sets a callback that will be called if a failure
    3142  // happens during the propagation of the queue.
    3144  solver_->set_action_on_fail(std::move(a));
    3145  }
    3146 #endif // !defined(SWIG)
    3147 
    3149  void reset_action_on_fail() { solver_->reset_action_on_fail(); }
    3150 
    3153  solver_->set_variable_to_clean_on_fail(v);
    3154  }
    3155 
    3157  virtual std::string name() const;
    3158  void set_name(const std::string& name);
    3160  bool HasName() const;
    3162  virtual std::string BaseName() const;
    3163 
    3164  private:
    3165  Solver* const solver_;
    3166  DISALLOW_COPY_AND_ASSIGN(PropagationBaseObject);
    3167 };
    3168 
    3171 class Decision : public BaseObject {
    3172  public:
    3174  ~Decision() override {}
    3175 
    3177  virtual void Apply(Solver* const s) = 0;
    3178 
    3180  virtual void Refute(Solver* const s) = 0;
    3181 
    3182  std::string DebugString() const override { return "Decision"; }
    3184  virtual void Accept(DecisionVisitor* const visitor) const;
    3185 
    3186  private:
    3187  DISALLOW_COPY_AND_ASSIGN(Decision);
    3188 };
    3189 
    3192 class DecisionVisitor : public BaseObject {
    3193  public:
    3195  ~DecisionVisitor() override {}
    3196  virtual void VisitSetVariableValue(IntVar* const var, int64 value);
    3197  virtual void VisitSplitVariableDomain(IntVar* const var, int64 value,
    3198  bool start_with_lower_half);
    3199  virtual void VisitScheduleOrPostpone(IntervalVar* const var, int64 est);
    3200  virtual void VisitScheduleOrExpedite(IntervalVar* const var, int64 est);
    3201  virtual void VisitRankFirstInterval(SequenceVar* const sequence, int index);
    3202  virtual void VisitRankLastInterval(SequenceVar* const sequence, int index);
    3203  virtual void VisitUnknownDecision();
    3204 
    3205  private:
    3206  DISALLOW_COPY_AND_ASSIGN(DecisionVisitor);
    3207 };
    3208 
    3211 class DecisionBuilder : public BaseObject {
    3212  public:
    3214  ~DecisionBuilder() override {}
    3219  virtual Decision* Next(Solver* const s) = 0;
    3220  std::string DebugString() const override;
    3221 #if !defined(SWIG)
    3222  virtual void AppendMonitors(Solver* const solver,
    3227  std::vector<SearchMonitor*>* const extras);
    3228  virtual void Accept(ModelVisitor* const visitor) const;
    3229 #endif
    3230 
    3231  private:
    3232  DISALLOW_COPY_AND_ASSIGN(DecisionBuilder);
    3233 };
    3234 
    3244 class Demon : public BaseObject {
    3245  public:
    3248  Demon() : stamp_(GG_ULONGLONG(0)) {}
    3249  ~Demon() override {}
    3250 
    3252  virtual void Run(Solver* const s) = 0;
    3253 
    3257  virtual Solver::DemonPriority priority() const;
    3258 
    3259  std::string DebugString() const override;
    3260 
    3263  void inhibit(Solver* const s);
    3264 
    3266  void desinhibit(Solver* const s);
    3267 
    3268  private:
    3269  friend class Queue;
    3270  void set_stamp(int64 stamp) { stamp_ = stamp; }
    3271  uint64 stamp() const { return stamp_; }
    3272  uint64 stamp_;
    3273  DISALLOW_COPY_AND_ASSIGN(Demon);
    3274 };
    3275 
    3277 class ModelVisitor : public BaseObject {
    3278  public:
    3280  static const char kAbs[];
    3281  static const char kAbsEqual[];
    3282  static const char kAllDifferent[];
    3283  static const char kAllowedAssignments[];
    3284  static const char kAtMost[];
    3285  static const char kIndexOf[];
    3286  static const char kBetween[];
    3287  static const char kConditionalExpr[];
    3288  static const char kCircuit[];
    3289  static const char kConvexPiecewise[];
    3290  static const char kCountEqual[];
    3291  static const char kCover[];
    3292  static const char kCumulative[];
    3293  static const char kDeviation[];
    3294  static const char kDifference[];
    3295  static const char kDisjunctive[];
    3296  static const char kDistribute[];
    3297  static const char kDivide[];
    3298  static const char kDurationExpr[];
    3299  static const char kElement[];
    3300  static const char kElementEqual[];
    3301  static const char kEndExpr[];
    3302  static const char kEquality[];
    3303  static const char kFalseConstraint[];
    3304  static const char kGlobalCardinality[];
    3305  static const char kGreater[];
    3306  static const char kGreaterOrEqual[];
    3307  static const char kIntegerVariable[];
    3308  static const char kIntervalBinaryRelation[];
    3309  static const char kIntervalDisjunction[];
    3310  static const char kIntervalUnaryRelation[];
    3311  static const char kIntervalVariable[];
    3312  static const char kInversePermutation[];
    3313  static const char kIsBetween[];
    3314  static const char kIsDifferent[];
    3315  static const char kIsEqual[];
    3316  static const char kIsGreater[];
    3317  static const char kIsGreaterOrEqual[];
    3318  static const char kIsLess[];
    3319  static const char kIsLessOrEqual[];
    3320  static const char kIsMember[];
    3321  static const char kLess[];
    3322  static const char kLessOrEqual[];
    3323  static const char kLexLess[];
    3324  static const char kLinkExprVar[];
    3325  static const char kMapDomain[];
    3326  static const char kMax[];
    3327  static const char kMaxEqual[];
    3328  static const char kMember[];
    3329  static const char kMin[];
    3330  static const char kMinEqual[];
    3331  static const char kModulo[];
    3332  static const char kNoCycle[];
    3333  static const char kNonEqual[];
    3334  static const char kNotBetween[];
    3335  static const char kNotMember[];
    3336  static const char kNullIntersect[];
    3337  static const char kOpposite[];
    3338  static const char kPack[];
    3339  static const char kPathCumul[];
    3340  static const char kDelayedPathCumul[];
    3341  static const char kPerformedExpr[];
    3342  static const char kPower[];
    3343  static const char kProduct[];
    3344  static const char kScalProd[];
    3345  static const char kScalProdEqual[];
    3346  static const char kScalProdGreaterOrEqual[];
    3347  static const char kScalProdLessOrEqual[];
    3348  static const char kSemiContinuous[];
    3349  static const char kSequenceVariable[];
    3350  static const char kSortingConstraint[];
    3351  static const char kSquare[];
    3352  static const char kStartExpr[];
    3353  static const char kSum[];
    3354  static const char kSumEqual[];
    3355  static const char kSumGreaterOrEqual[];
    3356  static const char kSumLessOrEqual[];
    3357  static const char kTrace[];
    3358  static const char kTransition[];
    3359  static const char kTrueConstraint[];
    3360  static const char kVarBoundWatcher[];
    3361  static const char kVarValueWatcher[];
    3362 
    3364  static const char kCountAssignedItemsExtension[];
    3365  static const char kCountUsedBinsExtension[];
    3366  static const char kInt64ToBoolExtension[];
    3367  static const char kInt64ToInt64Extension[];
    3368  static const char kObjectiveExtension[];
    3369  static const char kSearchLimitExtension[];
    3370  static const char kUsageEqualVariableExtension[];
    3371 
    3372  static const char kUsageLessConstantExtension[];
    3373  static const char kVariableGroupExtension[];
    3376 
    3378  static const char kActiveArgument[];
    3379  static const char kAssumePathsArgument[];
    3380  static const char kBranchesLimitArgument[];
    3381  static const char kCapacityArgument[];
    3382  static const char kCardsArgument[];
    3383  static const char kCoefficientsArgument[];
    3384  static const char kCountArgument[];
    3385  static const char kCumulativeArgument[];
    3386  static const char kCumulsArgument[];
    3387  static const char kDemandsArgument[];
    3388  static const char kDurationMaxArgument[];
    3389  static const char kDurationMinArgument[];
    3390  static const char kEarlyCostArgument[];
    3391  static const char kEarlyDateArgument[];
    3392  static const char kEndMaxArgument[];
    3393  static const char kEndMinArgument[];
    3394  static const char kEndsArgument[];
    3395  static const char kExpressionArgument[];
    3396  static const char kFailuresLimitArgument[];
    3397  static const char kFinalStatesArgument[];
    3398  static const char kFixedChargeArgument[];
    3399  static const char kIndex2Argument[];
    3400  static const char kIndexArgument[];
    3401  static const char kInitialState[];
    3402  static const char kIntervalArgument[];
    3403  static const char kIntervalsArgument[];
    3404  static const char kLateCostArgument[];
    3405  static const char kLateDateArgument[];
    3406  static const char kLeftArgument[];
    3407  static const char kMaxArgument[];
    3408  static const char kMaximizeArgument[];
    3409  static const char kMinArgument[];
    3410  static const char kModuloArgument[];
    3411  static const char kNextsArgument[];
    3412  static const char kOptionalArgument[];
    3413  static const char kPartialArgument[];
    3414  static const char kPositionXArgument[];
    3415  static const char kPositionYArgument[];
    3416  static const char kRangeArgument[];
    3417  static const char kRelationArgument[];
    3418  static const char kRightArgument[];
    3419  static const char kSequenceArgument[];
    3420  static const char kSequencesArgument[];
    3421  static const char kSizeArgument[];
    3422  static const char kSizeXArgument[];
    3423  static const char kSizeYArgument[];
    3424  static const char kSmartTimeCheckArgument[];
    3425  static const char kSolutionLimitArgument[];
    3426  static const char kStartMaxArgument[];
    3427  static const char kStartMinArgument[];
    3428  static const char kStartsArgument[];
    3429  static const char kStepArgument[];
    3430  static const char kTargetArgument[];
    3431  static const char kTimeLimitArgument[];
    3432  static const char kTransitsArgument[];
    3433  static const char kTuplesArgument[];
    3434  static const char kValueArgument[];
    3435  static const char kValuesArgument[];
    3436  static const char kVariableArgument[];
    3437  static const char kVarsArgument[];
    3438  static const char kEvaluatorArgument[];
    3439 
    3441  static const char kMirrorOperation[];
    3442  static const char kRelaxedMaxOperation[];
    3443  static const char kRelaxedMinOperation[];
    3444  static const char kSumOperation[];
    3445  static const char kDifferenceOperation[];
    3446  static const char kProductOperation[];
    3447  static const char kStartSyncOnStartOperation[];
    3448  static const char kStartSyncOnEndOperation[];
    3449  static const char kTraceOperation[];
    3450 
    3451  ~ModelVisitor() override;
    3452 
    3454 
    3456  virtual void BeginVisitModel(const std::string& solver_name);
    3457  virtual void EndVisitModel(const std::string& solver_name);
    3458  virtual void BeginVisitConstraint(const std::string& type_name,
    3459  const Constraint* const constraint);
    3460  virtual void EndVisitConstraint(const std::string& type_name,
    3461  const Constraint* const constraint);
    3462  virtual void BeginVisitExtension(const std::string& type);
    3463  virtual void EndVisitExtension(const std::string& type);
    3464  virtual void BeginVisitIntegerExpression(const std::string& type_name,
    3465  const IntExpr* const expr);
    3466  virtual void EndVisitIntegerExpression(const std::string& type_name,
    3467  const IntExpr* const expr);
    3468  virtual void VisitIntegerVariable(const IntVar* const variable,
    3469  IntExpr* const delegate);
    3470  virtual void VisitIntegerVariable(const IntVar* const variable,
    3471  const std::string& operation, int64 value,
    3472  IntVar* const delegate);
    3473  virtual void VisitIntervalVariable(const IntervalVar* const variable,
    3474  const std::string& operation, int64 value,
    3475  IntervalVar* const delegate);
    3476  virtual void VisitSequenceVariable(const SequenceVar* const variable);
    3477 
    3479  virtual void VisitIntegerArgument(const std::string& arg_name, int64 value);
    3480  virtual void VisitIntegerArrayArgument(const std::string& arg_name,
    3481  const std::vector<int64>& values);
    3482  virtual void VisitIntegerMatrixArgument(const std::string& arg_name,
    3483  const IntTupleSet& tuples);
    3484 
    3486  virtual void VisitIntegerExpressionArgument(const std::string& arg_name,
    3487  IntExpr* const argument);
    3488 
    3489  virtual void VisitIntegerVariableArrayArgument(
    3490  const std::string& arg_name, const std::vector<IntVar*>& arguments);
    3491 
    3493  virtual void VisitIntervalArgument(const std::string& arg_name,
    3494  IntervalVar* const argument);
    3495 
    3496  virtual void VisitIntervalArrayArgument(
    3497  const std::string& arg_name, const std::vector<IntervalVar*>& arguments);
    3499  virtual void VisitSequenceArgument(const std::string& arg_name,
    3500  SequenceVar* const argument);
    3501 
    3502  virtual void VisitSequenceArrayArgument(
    3503  const std::string& arg_name, const std::vector<SequenceVar*>& arguments);
    3504 #if !defined(SWIG)
    3507  const std::string& arg_name, const Solver::Int64ToIntVar& arguments);
    3508 
    3511  void VisitInt64ToBoolExtension(Solver::IndexFilter1 filter, int64 index_min,
    3512  int64 index_max);
    3514  int64 index_min, int64 index_max);
    3517  const std::string& arg_name, int64 index_max);
    3518 #endif // #if !defined(SWIG)
    3519 };
    3520 
    3528  public:
    3530  ~Constraint() override {}
    3531 
    3534  virtual void Post() = 0;
    3535 
    3538  virtual void InitialPropagate() = 0;
    3539  std::string DebugString() const override;
    3540 
    3543  void PostAndPropagate();
    3544 
    3546  virtual void Accept(ModelVisitor* const visitor) const;
    3547 
    3549  bool IsCastConstraint() const;
    3550 
    3554  virtual IntVar* Var();
    3555 
    3556  private:
    3557  DISALLOW_COPY_AND_ASSIGN(Constraint);
    3558 };
    3559 
    3563 class CastConstraint : public Constraint {
    3564  public:
    3567  CHECK(target_var != nullptr);
    3568  }
    3569  ~CastConstraint() override {}
    3570 
    3571  IntVar* target_var() const { return target_var_; }
    3572 
    3573  protected:
    3575 };
    3576 
    3578 class SearchMonitor : public BaseObject {
    3579  public:
    3580  static const int kNoProgress = -1;
    3581 
    3582  explicit SearchMonitor(Solver* const s) : solver_(s) {}
    3583  ~SearchMonitor() override {}
    3585  virtual void EnterSearch();
    3586 
    3588  virtual void RestartSearch();
    3589 
    3591  virtual void ExitSearch();
    3592 
    3594  virtual void BeginNextDecision(DecisionBuilder* const b);
    3595 
    3597  virtual void EndNextDecision(DecisionBuilder* const b, Decision* const d);
    3598 
    3600  virtual void ApplyDecision(Decision* const d);
    3601 
    3603  virtual void RefuteDecision(Decision* const d);
    3604 
    3607  virtual void AfterDecision(Decision* const d, bool apply);
    3608 
    3610  virtual void BeginFail();
    3611 
    3613  virtual void EndFail();
    3614 
    3616  virtual void BeginInitialPropagation();
    3617 
    3619  virtual void EndInitialPropagation();
    3620 
    3624  virtual bool AcceptSolution();
    3625 
    3629  virtual bool AtSolution();
    3630 
    3632  virtual void NoMoreSolutions();
    3633 
    3636  virtual bool LocalOptimum();
    3637 
    3639  virtual bool AcceptDelta(Assignment* delta, Assignment* deltadelta);
    3640 
    3642  virtual void AcceptNeighbor();
    3643 
    3645  virtual void AcceptUncheckedNeighbor();
    3646 
    3649  virtual bool IsUncheckedSolutionLimitReached() { return false; }
    3650 
    3651  Solver* solver() const { return solver_; }
    3652 
    3654  virtual void PeriodicCheck();
    3655 
    3658  virtual int ProgressPercent() { return kNoProgress; }
    3659 
    3661  virtual void Accept(ModelVisitor* const visitor) const;
    3662 
    3665  virtual void Install();
    3666 
    3667  private:
    3668  Solver* const solver_;
    3669  DISALLOW_COPY_AND_ASSIGN(SearchMonitor);
    3670 };
    3671 
    3677 template <class T>
    3678 class Rev {
    3679  public:
    3680  explicit Rev(const T& val) : stamp_(0), value_(val) {}
    3681 
    3682  const T& Value() const { return value_; }
    3683 
    3684  void SetValue(Solver* const s, const T& val) {
    3685  if (val != value_) {
    3686  if (stamp_ < s->stamp()) {
    3687  s->SaveValue(&value_);
    3688  stamp_ = s->stamp();
    3689  }
    3690  value_ = val;
    3691  }
    3692  }
    3693 
    3694  private:
    3695  uint64 stamp_;
    3696  T value_;
    3697 };
    3698 
    3700 template <class T>
    3701 class NumericalRev : public Rev<T> {
    3702  public:
    3703  explicit NumericalRev(const T& val) : Rev<T>(val) {}
    3704 
    3705  void Add(Solver* const s, const T& to_add) {
    3706  this->SetValue(s, this->Value() + to_add);
    3707  }
    3708 
    3709  void Incr(Solver* const s) { Add(s, 1); }
    3710 
    3711  void Decr(Solver* const s) { Add(s, -1); }
    3712 };
    3713 
    3719 template <class T>
    3720 class RevArray {
    3721  public:
    3722  RevArray(int size, const T& val)
    3723  : stamps_(new uint64[size]), values_(new T[size]), size_(size) {
    3724  for (int i = 0; i < size; ++i) {
    3725  stamps_[i] = 0;
    3726  values_[i] = val;
    3727  }
    3728  }
    3729 
    3731 
    3732  int64 size() const { return size_; }
    3733 
    3734  const T& Value(int index) const { return values_[index]; }
    3735 
    3736 #if !defined(SWIG)
    3737  const T& operator[](int index) const { return values_[index]; }
    3738 #endif
    3739 
    3740  void SetValue(Solver* const s, int index, const T& val) {
    3741  DCHECK_LT(index, size_);
    3742  if (val != values_[index]) {
    3743  if (stamps_[index] < s->stamp()) {
    3744  s->SaveValue(&values_[index]);
    3745  stamps_[index] = s->stamp();
    3746  }
    3747  values_[index] = val;
    3748  }
    3749  }
    3750 
    3751  private:
    3752  std::unique_ptr<uint64[]> stamps_;
    3753  std::unique_ptr<T[]> values_;
    3754  const int size_;
    3755 };
    3756 
    3758 template <class T>
    3759 class NumericalRevArray : public RevArray<T> {
    3760  public:
    3761  NumericalRevArray(int size, const T& val) : RevArray<T>(size, val) {}
    3762 
    3763  void Add(Solver* const s, int index, const T& to_add) {
    3764  this->SetValue(s, index, this->Value(index) + to_add);
    3765  }
    3766 
    3767  void Incr(Solver* const s, int index) { Add(s, index, 1); }
    3768 
    3769  void Decr(Solver* const s, int index) { Add(s, index, -1); }
    3770 };
    3771 
    3780  public:
    3781  explicit IntExpr(Solver* const s) : PropagationBaseObject(s) {}
    3782  ~IntExpr() override {}
    3783 
    3784  virtual int64 Min() const = 0;
    3785  virtual void SetMin(int64 m) = 0;
    3786  virtual int64 Max() const = 0;
    3787  virtual void SetMax(int64 m) = 0;
    3788 
    3791  virtual void Range(int64* l, int64* u) {
    3792  *l = Min();
    3793  *u = Max();
    3794  }
    3796  virtual void SetRange(int64 l, int64 u) {
    3797  SetMin(l);
    3798  SetMax(u);
    3799  }
    3800 
    3802  virtual void SetValue(int64 v) { SetRange(v, v); }
    3803 
    3805  virtual bool Bound() const { return (Min() == Max()); }
    3806 
    3808  virtual bool IsVar() const { return false; }
    3809 
    3811  virtual IntVar* Var() = 0;
    3812 
    3817  IntVar* VarWithName(const std::string& name);
    3818 
    3820  virtual void WhenRange(Demon* d) = 0;
    3822  void WhenRange(Solver::Closure closure) {
    3823  WhenRange(solver()->MakeClosureDemon(std::move(closure)));
    3824  }
    3825 
    3826 #if !defined(SWIG)
    3827  void WhenRange(Solver::Action action) {
    3829  WhenRange(solver()->MakeActionDemon(std::move(action)));
    3830  }
    3831 #endif // SWIG
    3832 
    3834  virtual void Accept(ModelVisitor* const visitor) const;
    3835 
    3836  private:
    3837  DISALLOW_COPY_AND_ASSIGN(IntExpr);
    3838 };
    3839 
    3847 
    3850 
    3856 
    3857 class IntVarIterator : public BaseObject {
    3858  public:
    3859  ~IntVarIterator() override {}
    3860 
    3862  virtual void Init() = 0;
    3863 
    3865  virtual bool Ok() const = 0;
    3866 
    3868  virtual int64 Value() const = 0;
    3869 
    3871  virtual void Next() = 0;
    3872 
    3874  std::string DebugString() const override { return "IntVar::Iterator"; }
    3875 };
    3876 
    3877 #ifndef SWIG
    3878 class InitAndGetValues {
    3885  public:
    3887  : it_(it), begin_was_called_(false) {
    3888  it_->Init();
    3889  }
    3890  struct Iterator;
    3892  if (DEBUG_MODE) {
    3893  DCHECK(!begin_was_called_);
    3894  begin_was_called_ = true;
    3895  }
    3896  return Iterator::Begin(it_);
    3897  }
    3898  Iterator end() { return Iterator::End(it_); }
    3899 
    3900  struct Iterator {
    3903  return Iterator(it, /*is_end=*/false);
    3904  }
    3906  return Iterator(it, /*is_end=*/true);
    3907  }
    3908 
    3909  int64 operator*() const {
    3910  DCHECK(it_->Ok());
    3911  return it_->Value();
    3912  }
    3914  DCHECK(it_->Ok());
    3915  it_->Next();
    3916  return *this;
    3917  }
    3918  bool operator!=(const Iterator& other) const {
    3919  DCHECK(other.it_ == it_);
    3920  DCHECK(other.is_end_);
    3921  return it_->Ok();
    3922  }
    3923 
    3924  private:
    3925  Iterator(IntVarIterator* it, bool is_end) : it_(it), is_end_(is_end) {}
    3926 
    3927  IntVarIterator* const it_;
    3928  const bool is_end_;
    3929  };
    3930 
    3931  private:
    3932  IntVarIterator* const it_;
    3933  bool begin_was_called_;
    3934 };
    3935 #endif // SWIG
    3936 
    3940 class IntVar : public IntExpr {
    3941  public:
    3942  explicit IntVar(Solver* const s);
    3943  IntVar(Solver* const s, const std::string& name);
    3944  ~IntVar() override {}
    3945 
    3946  bool IsVar() const override { return true; }
    3947  IntVar* Var() override { return this; }
    3948 
    3951  virtual int64 Value() const = 0;
    3952 
    3954  virtual void RemoveValue(int64 v) = 0;
    3955 
    3958  virtual void RemoveInterval(int64 l, int64 u) = 0;
    3959 
    3961  virtual void RemoveValues(const std::vector<int64>& values);
    3962 
    3964  virtual void SetValues(const std::vector<int64>& values);
    3965 
    3968  virtual void WhenBound(Demon* d) = 0;
    3971  void WhenBound(Solver::Closure closure) {
    3972  WhenBound(solver()->MakeClosureDemon(std::move(closure)));
    3973  }
    3974 
    3975 #if !defined(SWIG)
    3976  void WhenBound(Solver::Action action) {
    3979  WhenBound(solver()->MakeActionDemon(std::move(action)));
    3980  }
    3981 #endif // SWIG
    3982 
    3985  virtual void WhenDomain(Demon* d) = 0;
    3988  void WhenDomain(Solver::Closure closure) {
    3989  WhenDomain(solver()->MakeClosureDemon(std::move(closure)));
    3990  }
    3991 #if !defined(SWIG)
    3992  void WhenDomain(Solver::Action action) {
    3995  WhenDomain(solver()->MakeActionDemon(std::move(action)));
    3996  }
    3997 #endif // SWIG
    3998 
    4000  virtual uint64 Size() const = 0;
    4001 
    4004  virtual bool Contains(int64 v) const = 0;
    4005 
    4009  virtual IntVarIterator* MakeHoleIterator(bool reversible) const = 0;
    4010 
    4014  virtual IntVarIterator* MakeDomainIterator(bool reversible) const = 0;
    4015 
    4017  virtual int64 OldMin() const = 0;
    4018 
    4020  virtual int64 OldMax() const = 0;
    4021 
    4022  virtual int VarType() const;
    4023 
    4025  void Accept(ModelVisitor* const visitor) const override;
    4026 
    4028  virtual IntVar* IsEqual(int64 constant) = 0;
    4029  virtual IntVar* IsDifferent(int64 constant) = 0;
    4030  virtual IntVar* IsGreaterOrEqual(int64 constant) = 0;
    4031  virtual IntVar* IsLessOrEqual(int64 constant) = 0;
    4032 
    4034  int index() const { return index_; }
    4035 
    4036  private:
    4037  const int index_;
    4038  DISALLOW_COPY_AND_ASSIGN(IntVar);
    4039 };
    4040 
    4045  public:
    4046  SolutionCollector(Solver* const solver, const Assignment* assignment);
    4047  explicit SolutionCollector(Solver* const solver);
    4048  ~SolutionCollector() override;
    4049  std::string DebugString() const override { return "SolutionCollector"; }
    4050 
    4052  void Add(IntVar* const var);
    4053  void Add(const std::vector<IntVar*>& vars);
    4054  void Add(IntervalVar* const var);
    4055  void Add(const std::vector<IntervalVar*>& vars);
    4056  void Add(SequenceVar* const var);
    4057  void Add(const std::vector<SequenceVar*>& vars);
    4058  void AddObjective(IntVar* const objective);
    4059 
    4061  void EnterSearch() override;
    4062 
    4064  int solution_count() const;
    4065 
    4067  Assignment* solution(int n) const;
    4068 
    4070  int64 wall_time(int n) const;
    4071 
    4073  int64 branches(int n) const;
    4074 
    4077  int64 failures(int n) const;
    4078 
    4080  int64 objective_value(int n) const;
    4081 
    4083  int64 Value(int n, IntVar* const var) const;
    4084 
    4086  int64 StartValue(int n, IntervalVar* const var) const;
    4087 
    4089  int64 EndValue(int n, IntervalVar* const var) const;
    4090 
    4092  int64 DurationValue(int n, IntervalVar* const var) const;
    4093 
    4095  int64 PerformedValue(int n, IntervalVar* const var) const;
    4096 
    4100  const std::vector<int>& ForwardSequence(int n, SequenceVar* const var) const;
    4104  const std::vector<int>& BackwardSequence(int n, SequenceVar* const var) const;
    4107  const std::vector<int>& Unperformed(int n, SequenceVar* const var) const;
    4108 
    4109  protected:
    4110  struct SolutionData {
    4112  int64 time;
    4113  int64 branches;
    4114  int64 failures;
    4116  bool operator<(const SolutionData& other) const {
    4117  return std::tie(solution, time, branches, failures, objective_value) <
    4118  std::tie(other.solution, other.time, other.branches,
    4119  other.failures, other.objective_value);
    4120  }
    4121  };
    4122 
    4124  void PushSolution();
    4125  void Push(const SolutionData& data) { solution_data_.push_back(data); }
    4127  void PopSolution();
    4128  SolutionData BuildSolutionDataForCurrentState();
    4130  void check_index(int n) const;
    4131 
    4132  std::unique_ptr<Assignment> prototype_;
    4133  std::vector<SolutionData> solution_data_;
    4134  std::vector<Assignment*> recycle_solutions_;
    4135 
    4136  private:
    4137  DISALLOW_COPY_AND_ASSIGN(SolutionCollector);
    4138 };
    4139 
    4140 // TODO(user): Refactor this into an Objective class:
    4141 // - print methods for AtNode and AtSolution.
    4142 // - support for weighted objective and lexicographical objective.
    4143 
    4147 class OptimizeVar : public SearchMonitor {
    4148  public:
    4149  OptimizeVar(Solver* const s, bool maximize, IntVar* const a, int64 step);
    4150  ~OptimizeVar() override;
    4151 
    4153  int64 best() const { return best_; }
    4154 
    4156  IntVar* Var() const { return var_; }
    4158  bool AcceptDelta(Assignment* delta, Assignment* deltadelta) override;
    4159  void EnterSearch() override;
    4160  void BeginNextDecision(DecisionBuilder* const db) override;
    4161  void RefuteDecision(Decision* const d) override;
    4162  bool AtSolution() override;
    4163  bool AcceptSolution() override;
    4164  virtual std::string Print() const;
    4165  std::string DebugString() const override;
    4166  void Accept(ModelVisitor* const visitor) const override;
    4167 
    4168  void ApplyBound();
    4169 
    4170  protected:
    4171  IntVar* const var_;
    4172  int64 step_;
    4173  int64 best_;
    4176 
    4177  private:
    4178  DISALLOW_COPY_AND_ASSIGN(OptimizeVar);
    4179 };
    4180 
    4182 class SearchLimit : public SearchMonitor {
    4183  public:
    4184  explicit SearchLimit(Solver* const s) : SearchMonitor(s), crossed_(false) {}
    4185  ~SearchLimit() override;
    4186 
    4188  bool crossed() const { return crossed_; }
    4189 
    4194  virtual bool Check() = 0;
    4195 
    4197  virtual void Init() = 0;
    4198 
    4201  virtual void Copy(const SearchLimit* const limit) = 0;
    4202 
    4204  virtual SearchLimit* MakeClone() const = 0;
    4205 
    4207  void EnterSearch() override;
    4208  void BeginNextDecision(DecisionBuilder* const b) override;
    4209  void PeriodicCheck() override;
    4210  void RefuteDecision(Decision* const d) override;
    4211  std::string DebugString() const override {
    4212  return absl::StrFormat("SearchLimit(crossed = %i)", crossed_);
    4213  }
    4214 
    4215  private:
    4216  void TopPeriodicCheck();
    4217 
    4218  bool crossed_;
    4219  DISALLOW_COPY_AND_ASSIGN(SearchLimit);
    4220 };
    4221 
    4224 class RegularLimit : public SearchLimit {
    4225  public:
    4226  RegularLimit(Solver* const s, int64 time, int64 branches, int64 failures,
    4227  int64 solutions, bool smart_time_check, bool cumulative);
    4228  ~RegularLimit() override;
    4229  void Copy(const SearchLimit* const limit) override;
    4230  SearchLimit* MakeClone() const override;
    4232  bool Check() override;
    4233  void Init() override;
    4234  void ExitSearch() override;
    4235  void UpdateLimits(int64 time, int64 branches, int64 failures,
    4236  int64 solutions);
    4237  absl::Duration duration_limit() const { return duration_limit_; }
    4238  int64 wall_time() const {
    4239  return duration_limit_ == absl::InfiniteDuration()
    4240  ? kint64max
    4241  : absl::ToInt64Milliseconds(duration_limit());
    4242  }
    4243  int64 branches() const { return branches_; }
    4244  int64 failures() const { return failures_; }
    4245  int64 solutions() const { return solutions_; }
    4246  bool IsUncheckedSolutionLimitReached() override;
    4247  int ProgressPercent() override;
    4248  std::string DebugString() const override;
    4249 
    4250  absl::Time AbsoluteSolverDeadline() const {
    4251  return solver_time_at_limit_start_ + duration_limit_;
    4252  }
    4253 
    4254  void Accept(ModelVisitor* const visitor) const override;
    4255 
    4256  private:
    4257  bool CheckTime();
    4258  absl::Duration TimeElapsed();
    4259  static int64 GetPercent(int64 value, int64 offset, int64 total) {
    4260  return (total > 0 && total < kint64max) ? 100 * (value - offset) / total
    4261  : -1;
    4262  }
    4263 
    4264  absl::Duration duration_limit_;
    4265  absl::Time solver_time_at_limit_start_;
    4266  absl::Duration last_time_elapsed_;
    4267  int64 check_count_;
    4268  int64 next_check_;
    4269  bool smart_time_check_;
    4270  int64 branches_;
    4271  int64 branches_offset_;
    4272  int64 failures_;
    4273  int64 failures_offset_;
    4274  int64 solutions_;
    4275  int64 solutions_offset_;
    4283  bool cumulative_;
    4284 };
    4285 
    4297  public:
    4299  static const int64 kMinValidValue;
    4301  static const int64 kMaxValidValue;
    4302  IntervalVar(Solver* const solver, const std::string& name)
    4304  set_name(name);
    4305  }
    4306  ~IntervalVar() override {}
    4307 
    4310  virtual int64 StartMin() const = 0;
    4311  virtual int64 StartMax() const = 0;
    4312  virtual void SetStartMin(int64 m) = 0;
    4313  virtual void SetStartMax(int64 m) = 0;
    4314  virtual void SetStartRange(int64 mi, int64 ma) = 0;
    4315  virtual int64 OldStartMin() const = 0;
    4316  virtual int64 OldStartMax() const = 0;
    4317  virtual void WhenStartRange(Demon* const d) = 0;
    4319  WhenStartRange(solver()->MakeClosureDemon(std::move(closure)));
    4320  }
    4321 #if !defined(SWIG)
    4323  WhenStartRange(solver()->MakeActionDemon(std::move(action)));
    4324  }
    4325 #endif // SWIG
    4326  virtual void WhenStartBound(Demon* const d) = 0;
    4328  WhenStartBound(solver()->MakeClosureDemon(std::move(closure)));
    4329  }
    4330 #if !defined(SWIG)
    4332  WhenStartBound(solver()->MakeActionDemon(std::move(action)));
    4333  }
    4334 #endif // SWIG
    4335 
    4337  virtual int64 DurationMin() const = 0;
    4338  virtual int64 DurationMax() const = 0;
    4339  virtual void SetDurationMin(int64 m) = 0;
    4340  virtual void SetDurationMax(int64 m) = 0;
    4341  virtual void SetDurationRange(int64 mi, int64 ma) = 0;
    4342  virtual int64 OldDurationMin() const = 0;
    4343  virtual int64 OldDurationMax() const = 0;
    4344  virtual void WhenDurationRange(Demon* const d) = 0;
    4346  WhenDurationRange(solver()->MakeClosureDemon(std::move(closure)));
    4347  }
    4348 #if !defined(SWIG)
    4350  WhenDurationRange(solver()->MakeActionDemon(std::move(action)));
    4351  }
    4352 #endif // SWIG
    4353  virtual void WhenDurationBound(Demon* const d) = 0;
    4355  WhenDurationBound(solver()->MakeClosureDemon(std::move(closure)));
    4356  }
    4357 #if !defined(SWIG)
    4359  WhenDurationBound(solver()->MakeActionDemon(std::move(action)));
    4360  }
    4361 #endif // SWIG
    4362 
    4364  virtual int64 EndMin() const = 0;
    4365  virtual int64 EndMax() const = 0;
    4366  virtual void SetEndMin(int64 m) = 0;
    4367  virtual void SetEndMax(int64 m) = 0;
    4368  virtual void SetEndRange(int64 mi, int64 ma) = 0;
    4369  virtual int64 OldEndMin() const = 0;
    4370  virtual int64 OldEndMax() const = 0;
    4371  virtual void WhenEndRange(Demon* const d) = 0;
    4373  WhenEndRange(solver()->MakeClosureDemon(std::move(closure)));
    4374  }
    4375 #if !defined(SWIG)
    4377  WhenEndRange(solver()->MakeActionDemon(std::move(action)));
    4378  }
    4379 #endif // SWIG
    4380  virtual void WhenEndBound(Demon* const d) = 0;
    4382  WhenEndBound(solver()->MakeClosureDemon(std::move(closure)));
    4383  }
    4384 #if !defined(SWIG)
    4386  WhenEndBound(solver()->MakeActionDemon(std::move(action)));
    4387  }
    4388 #endif // SWIG
    4389 
    4392  virtual bool MustBePerformed() const = 0;
    4393  virtual bool MayBePerformed() const = 0;
    4394  bool CannotBePerformed() const { return !MayBePerformed(); }
    4395  bool IsPerformedBound() const {
    4396  return MustBePerformed() || !MayBePerformed();
    4397  }
    4398  virtual void SetPerformed(bool val) = 0;
    4399  virtual bool WasPerformedBound() const = 0;
    4400  virtual void WhenPerformedBound(Demon* const d) = 0;
    4402  WhenPerformedBound(solver()->MakeClosureDemon(std::move(closure)));
    4403  }
    4404 #if !defined(SWIG)
    4406  WhenPerformedBound(solver()->MakeActionDemon(std::move(action)));
    4407  }
    4408 #endif // SWIG
    4409 
    4411  void WhenAnything(Demon* const d);
    4414  WhenAnything(solver()->MakeClosureDemon(std::move(closure)));
    4415  }
    4416 #if !defined(SWIG)
    4417  void WhenAnything(Solver::Action action) {
    4419  WhenAnything(solver()->MakeActionDemon(std::move(action)));
    4420  }
    4421 #endif // SWIG
    4422 
    4426  virtual IntExpr* StartExpr() = 0;
    4427  virtual IntExpr* DurationExpr() = 0;
    4428  virtual IntExpr* EndExpr() = 0;
    4429  virtual IntExpr* PerformedExpr() = 0;
    4433  virtual IntExpr* SafeStartExpr(int64 unperformed_value) = 0;
    4434  virtual IntExpr* SafeDurationExpr(int64 unperformed_value) = 0;
    4435  virtual IntExpr* SafeEndExpr(int64 unperformed_value) = 0;
    4436 
    4438  virtual void Accept(ModelVisitor* const visitor) const = 0;
    4439 
    4440  private:
    4441  DISALLOW_COPY_AND_ASSIGN(IntervalVar);
    4442 };
    4443 
    4451  public:
    4452  SequenceVar(Solver* const s, const std::vector<IntervalVar*>& intervals,
    4453  const std::vector<IntVar*>& nexts, const std::string& name);
    4454 
    4455  ~SequenceVar() override;
    4456 
    4457  std::string DebugString() const override;
    4458 
    4459 #if !defined(SWIG)
    4460  void DurationRange(int64* const dmin, int64* const dmax) const;
    4463 
    4466  void HorizonRange(int64* const hmin, int64* const hmax) const;
    4467 
    4470  void ActiveHorizonRange(int64* const hmin, int64* const hmax) const;
    4471 
    4473  void ComputeStatistics(int* const ranked, int* const not_ranked,
    4474  int* const unperformed) const;
    4475 #endif // !defined(SWIG)
    4476 
    4479  void RankFirst(int index);
    4480 
    4483  void RankNotFirst(int index);
    4484 
    4487  void RankLast(int index);
    4488 
    4491  void RankNotLast(int index);
    4492 
    4495  void ComputePossibleFirstsAndLasts(std::vector<int>* const possible_firsts,
    4496  std::vector<int>* const possible_lasts);
    4497 
    4503  void RankSequence(const std::vector<int>& rank_first,
    4504  const std::vector<int>& rank_last,
    4505  const std::vector<int>& unperformed);
    4506 
    4515  void FillSequence(std::vector<int>* const rank_first,
    4516  std::vector<int>* const rank_last,
    4517  std::vector<int>* const unperformed) const;
    4518 
    4520  IntervalVar* Interval(int index) const;
    4521 
    4523  IntVar* Next(int index) const;
    4524 
    4526  int64 size() const { return intervals_.size(); }
    4527 
    4529  virtual void Accept(ModelVisitor* const visitor) const;
    4530 
    4531  private:
    4532  int ComputeForwardFrontier();
    4533  int ComputeBackwardFrontier();
    4534  void UpdatePrevious() const;
    4535 
    4536  const std::vector<IntervalVar*> intervals_;
    4537  const std::vector<IntVar*> nexts_;
    4538  mutable std::vector<int> previous_;
    4539 };
    4540 
    4542  public:
    4543  AssignmentElement() : activated_(true) {}
    4544 
    4545  void Activate() { activated_ = true; }
    4546  void Deactivate() { activated_ = false; }
    4547  bool Activated() const { return activated_; }
    4548 
    4549  private:
    4550  bool activated_;
    4551 };
    4552 
    4554  public:
    4555  IntVarElement();
    4556  explicit IntVarElement(IntVar* const var);
    4557  void Reset(IntVar* const var);
    4558  IntVarElement* Clone();
    4559  void Copy(const IntVarElement& element);
    4560  IntVar* Var() const { return var_; }
    4561  void Store() {
    4562  min_ = var_->Min();
    4563  max_ = var_->Max();
    4564  }
    4565  void Restore() {
    4566  if (var_ != nullptr) {
    4567  var_->SetRange(min_, max_);
    4568  }
    4569  }
    4570  void LoadFromProto(const IntVarAssignment& int_var_assignment_proto);
    4571  void WriteToProto(IntVarAssignment* int_var_assignment_proto) const;
    4572 
    4573  int64 Min() const { return min_; }
    4574  void SetMin(int64 m) { min_ = m; }
    4575  int64 Max() const { return max_; }
    4576  void SetMax(int64 m) { max_ = m; }
    4577  int64 Value() const {
    4578  DCHECK_EQ(min_, max_);
    4579  // Get the value from an unbound int var assignment element.
    4580  return min_;
    4581  }
    4582  bool Bound() const { return (max_ == min_); }
    4583  void SetRange(int64 l, int64 u) {
    4584  min_ = l;
    4585  max_ = u;
    4586  }
    4587  void SetValue(int64 v) {
    4588  min_ = v;
    4589  max_ = v;
    4590  }
    4591  std::string DebugString() const;
    4592 
    4593  bool operator==(const IntVarElement& element) const;
    4594  bool operator!=(const IntVarElement& element) const {
    4595  return !(*this == element);
    4596  }
    4597 
    4598  private:
    4599  IntVar* var_;
    4600  int64 min_;
    4601  int64 max_;
    4602 };
    4603 
    4605  public:
    4607  explicit IntervalVarElement(IntervalVar* const var);
    4608  void Reset(IntervalVar* const var);
    4610  void Copy(const IntervalVarElement& element);
    4611  IntervalVar* Var() const { return var_; }
    4612  void Store();
    4613  void Restore();
    4614  void LoadFromProto(
    4615  const IntervalVarAssignment& interval_var_assignment_proto);
    4616  void WriteToProto(IntervalVarAssignment* interval_var_assignment_proto) const;
    4617 
    4618  int64 StartMin() const { return start_min_; }
    4619  int64 StartMax() const { return start_max_; }
    4620  int64 StartValue() const {
    4621  CHECK_EQ(start_max_, start_min_);
    4622  return start_max_;
    4623  }
    4624  int64 DurationMin() const { return duration_min_; }
    4625  int64 DurationMax() const { return duration_max_; }
    4626  int64 DurationValue() const {
    4627  CHECK_EQ(duration_max_, duration_min_);
    4628  return duration_max_;
    4629  }
    4630  int64 EndMin() const { return end_min_; }
    4631  int64 EndMax() const { return end_max_; }
    4632  int64 EndValue() const {
    4633  CHECK_EQ(end_max_, end_min_);
    4634  return end_max_;
    4635  }
    4636  int64 PerformedMin() const { return performed_min_; }
    4637  int64 PerformedMax() const { return performed_max_; }
    4638  int64 PerformedValue() const {
    4639  CHECK_EQ(performed_max_, performed_min_);
    4640  return performed_max_;
    4641  }
    4642  void SetStartMin(int64 m) { start_min_ = m; }
    4643  void SetStartMax(int64 m) { start_max_ = m; }
    4644  void SetStartRange(int64 mi, int64 ma) {
    4645  start_min_ = mi;
    4646  start_max_ = ma;
    4647  }
    4648  void SetStartValue(int64 v) {
    4649  start_min_ = v;
    4650  start_max_ = v;
    4651  }
    4652  void SetDurationMin(int64 m) { duration_min_ = m; }
    4653  void SetDurationMax(int64 m) { duration_max_ = m; }
    4654  void SetDurationRange(int64 mi, int64 ma) {
    4655  duration_min_ = mi;
    4656  duration_max_ = ma;
    4657  }
    4658  void SetDurationValue(int64 v) {
    4659  duration_min_ = v;
    4660  duration_max_ = v;
    4661  }
    4662  void SetEndMin(int64 m) { end_min_ = m; }
    4663  void SetEndMax(int64 m) { end_max_ = m; }
    4664  void SetEndRange(int64 mi, int64 ma) {
    4665  end_min_ = mi;
    4666  end_max_ = ma;
    4667  }
    4668  void SetEndValue(int64 v) {
    4669  end_min_ = v;
    4670  end_max_ = v;
    4671  }
    4672  void SetPerformedMin(int64 m) { performed_min_ = m; }
    4673  void SetPerformedMax(int64 m) { performed_max_ = m; }
    4674  void SetPerformedRange(int64 mi, int64 ma) {
    4675  performed_min_ = mi;
    4676  performed_max_ = ma;
    4677  }
    4678  void SetPerformedValue(int64 v) {
    4679  performed_min_ = v;
    4680  performed_max_ = v;
    4681  }
    4682  bool Bound() const {
    4683  return (start_min_ == start_max_ && duration_min_ == duration_max_ &&
    4684  end_min_ == end_max_ && performed_min_ == performed_max_);
    4685  }
    4686  std::string DebugString() const;
    4687  bool operator==(const IntervalVarElement& element) const;
    4688  bool operator!=(const IntervalVarElement& element) const {
    4689  return !(*this == element);
    4690  }
    4691 
    4692  private:
    4693  int64 start_min_;
    4694  int64 start_max_;
    4695  int64 duration_min_;
    4696  int64 duration_max_;
    4697  int64 end_min_;
    4698  int64 end_max_;
    4699  int64 performed_min_;
    4700  int64 performed_max_;
    4701  IntervalVar* var_;
    4702 };
    4703 
    4718  public:
    4720  explicit SequenceVarElement(SequenceVar* const var);
    4721  void Reset(SequenceVar* const var);
    4723  void Copy(const SequenceVarElement& element);
    4724  SequenceVar* Var() const { return var_; }
    4725  void Store();
    4726  void Restore();
    4727  void LoadFromProto(
    4728  const SequenceVarAssignment& sequence_var_assignment_proto);
    4729  void WriteToProto(SequenceVarAssignment* sequence_var_assignment_proto) const;
    4730 
    4731  const std::vector<int>& ForwardSequence() const;
    4732  const std::vector<int>& BackwardSequence() const;
    4733  const std::vector<int>& Unperformed() const;
    4734  void SetSequence(const std::vector<int>& forward_sequence,
    4735  const std::vector<int>& backward_sequence,
    4736  const std::vector<int>& unperformed);
    4737  void SetForwardSequence(const std::vector<int>& forward_sequence);
    4738  void SetBackwardSequence(const std::vector<int>& backward_sequence);
    4739  void SetUnperformed(const std::vector<int>& unperformed);
    4740  bool Bound() const {
    4741  return forward_sequence_.size() + unperformed_.size() == var_->size();
    4742  }
    4743 
    4744  std::string DebugString() const;
    4745 
    4746  bool operator==(const SequenceVarElement& element) const;
    4747  bool operator!=(const SequenceVarElement& element) const {
    4748  return !(*this == element);
    4749  }
    4750 
    4751  private:
    4752  bool CheckClassInvariants();
    4753 
    4754  SequenceVar* var_;
    4755  std::vector<int> forward_sequence_;
    4756  std::vector<int> backward_sequence_;
    4757  std::vector<int> unperformed_;
    4758 };
    4759 
    4760 template <class V, class E>
    4762  public:
    4764  E* Add(V* var) {
    4765  CHECK(var != nullptr);
    4766  int index = -1;
    4767  if (!Find(var, &index)) {
    4768  return FastAdd(var);
    4769  } else {
    4770  return &elements_[index];
    4771  }
    4772  }
    4774  E* FastAdd(V* var) {
    4775  DCHECK(var != nullptr);
    4776  elements_.emplace_back(var);
    4777  return &elements_.back();
    4778  }
    4781  E* AddAtPosition(V* var, int position) {
    4782  elements_[position].Reset(var);
    4783  return &elements_[position];
    4784  }
    4785  void Clear() {
    4786  elements_.clear();
    4787  if (!elements_map_.empty()) {
    4788  elements_map_.clear();
    4789  }
    4790  }
    4793  void Resize(size_t size) { elements_.resize(size); }
    4794  bool Empty() const { return elements_.empty(); }
    4798  for (int i = 0; i < container.elements_.size(); ++i) {
    4799  const E& element = container.elements_[i];
    4800  const V* const var = element.Var();
    4801  int index = -1;
    4802  if (i < elements_.size() && elements_[i].Var() == var) {
    4803  index = i;
    4804  } else if (!Find(var, &index)) {
    4805  continue;
    4806  }
    4807  DCHECK_GE(index, 0);
    4808  E* const local_element = &elements_[index];
    4809  local_element->Copy(element);
    4810  if (element.Activated()) {
    4811  local_element->Activate();
    4812  } else {
    4813  local_element->Deactivate();
    4814  }
    4815  }
    4816  }
    4819  void Copy(const AssignmentContainer<V, E>& container) {
    4820  Clear();
    4821  for (int i = 0; i < container.elements_.size(); ++i) {
    4822  const E& element = container.elements_[i];
    4823  FastAdd(element.Var())->Copy(element);
    4824  }
    4825  }
    4826  bool Contains(const V* const var) const {
    4827  int index;
    4828  return Find(var, &index);
    4829  }
    4830  E* MutableElement(const V* const var) {
    4831  E* const element = MutableElementOrNull(var);
    4832  DCHECK(element != nullptr)
    4833  << "Unknown variable " << var->DebugString() << " in solution";
    4834  return element;
    4835  }
    4836  E* MutableElementOrNull(const V* const var) {
    4837  int index = -1;
    4838  if (Find(var, &index)) {
    4839  return MutableElement(index);
    4840  }
    4841  return nullptr;
    4842  }
    4843  const E& Element(const V* const var) const {
    4844  const E* const element = ElementPtrOrNull(var);
    4845  DCHECK(element != nullptr)
    4846  << "Unknown variable " << var->DebugString() << " in solution";
    4847  return *element;
    4848  }
    4849  const E* ElementPtrOrNull(const V* const var) const {
    4850  int index = -1;
    4851  if (Find(var, &index)) {
    4852  return &Element(index);
    4853  }
    4854  return nullptr;
    4855  }
    4856  const std::vector<E>& elements() const { return elements_; }
    4857  E* MutableElement(int index) { return &elements_[index]; }
    4858  const E& Element(int index) const { return elements_[index]; }
    4859  int Size() const { return elements_.size(); }
    4860  void Store() {
    4861  for (E& element : elements_) {
    4862  element.Store();
    4863  }
    4864  }
    4865  void Restore() {
    4866  for (E& element : elements_) {
    4867  if (element.Activated()) {
    4868  element.Restore();
    4869  }
    4870  }
    4871  }
    4872  bool AreAllElementsBound() const {
    4873  for (const E& element : elements_) {
    4874  if (!element.Bound()) return false;
    4875  }
    4876  return true;
    4877  }
    4878 
    4882  bool operator==(const AssignmentContainer<V, E>& container) const {
    4884  if (Size() != container.Size()) {
    4885  return false;
    4886  }
    4888  EnsureMapIsUpToDate();
    4892  for (const E& element : container.elements_) {
    4893  const int position =
    4894  gtl::FindWithDefault(elements_map_, element.Var(), -1);
    4895  if (position < 0 || elements_[position] != element) {
    4896  return false;
    4897  }
    4898  }
    4899  return true;
    4900  }
    4901  bool operator!=(const AssignmentContainer<V, E>& container) const {
    4902  return !(*this == container);
    4903  }
    4904 
    4905  private:
    4906  void EnsureMapIsUpToDate() const {
    4907  absl::flat_hash_map<const V*, int>* map =
    4908  const_cast<absl::flat_hash_map<const V*, int>*>(&elements_map_);
    4909  for (int i = map->size(); i < elements_.size(); ++i) {
    4910  (*map)[elements_[i].Var()] = i;
    4911  }
    4912  }
    4913  bool Find(const V* const var, int* index) const {
    4915  const size_t kMaxSizeForLinearAccess = 11;
    4916  if (Size() <= kMaxSizeForLinearAccess) {
    4920  for (int i = 0; i < elements_.size(); ++i) {
    4921  if (var == elements_[i].Var()) {
    4922  *index = i;
    4923  return true;
    4924  }
    4925  }
    4926  return false;
    4927  } else {
    4928  EnsureMapIsUpToDate();
    4929  DCHECK_EQ(elements_map_.size(), elements_.size());
    4930  return gtl::FindCopy(elements_map_, var, index);
    4931  }
    4932  }
    4933 
    4934  std::vector<E> elements_;
    4935  absl::flat_hash_map<const V*, int> elements_map_;
    4936 };
    4937 
    4941  public:
    4947 
    4948  explicit Assignment(Solver* const s);
    4949  explicit Assignment(const Assignment* const copy);
    4950  ~Assignment() override;
    4951 
    4952  void Clear();
    4953  bool Empty() const {
    4954  return int_var_container_.Empty() && interval_var_container_.Empty() &&
    4955  sequence_var_container_.Empty();
    4956  }
    4957  int Size() const {
    4958  return NumIntVars() + NumIntervalVars() + NumSequenceVars();
    4959  }
    4960  int NumIntVars() const { return int_var_container_.Size(); }
    4961  int NumIntervalVars() const { return interval_var_container_.Size(); }
    4962  int NumSequenceVars() const { return sequence_var_container_.Size(); }
    4963  void Store();
    4964  void Restore();
    4965 
    4968  bool Load(const std::string& filename);
    4969 #if !defined(SWIG)
    4970  bool Load(File* file);
    4971 #endif
    4972  void Load(const AssignmentProto& assignment_proto);
    4973  bool Save(const std::string& filename) const;
    4975 #if !defined(SWIG)
    4976  bool Save(File* file) const;
    4977 #endif // #if !defined(SWIG)
    4978  void Save(AssignmentProto* const assignment_proto) const;
    4979 
    4980  void AddObjective(IntVar* const v);
    4981  void ClearObjective() { objective_element_.Reset(nullptr); }
    4982  IntVar* Objective() const;
    4983  bool HasObjective() const { return (objective_element_.Var() != nullptr); }
    4984  int64 ObjectiveMin() const;
    4985  int64 ObjectiveMax() const;
    4986  int64 ObjectiveValue() const;
    4987  bool ObjectiveBound() const;
    4988  void SetObjectiveMin(int64 m);
    4989  void SetObjectiveMax(int64 m);
    4990  void SetObjectiveValue(int64 value);
    4991  void SetObjectiveRange(int64 l, int64 u);
    4992 
    4993  IntVarElement* Add(IntVar* const var);
    4994  void Add(const std::vector<IntVar*>& vars);
    4996  IntVarElement* FastAdd(IntVar* const var);
    4997  int64 Min(const IntVar* const var) const;
    4998  int64 Max(const IntVar* const var) const;
    4999  int64 Value(const IntVar* const var) const;
    5000  bool Bound(const IntVar* const var) const;
    5001  void SetMin(const IntVar* const var, int64 m);
    5002  void SetMax(const IntVar* const var, int64 m);
    5003  void SetRange(const IntVar* const var, int64 l, int64 u);
    5004  void SetValue(const IntVar* const var, int64 value);
    5005 
    5006  IntervalVarElement* Add(IntervalVar* const var);
    5007  void Add(const std::vector<IntervalVar*>& vars);
    5009  IntervalVarElement* FastAdd(IntervalVar* const var);
    5010  int64 StartMin(const IntervalVar* const var) const;
    5011  int64 StartMax(const IntervalVar* const var) const;
    5012  int64 StartValue(const IntervalVar* const var) const;
    5013  int64 DurationMin(const IntervalVar* const var) const;
    5014  int64 DurationMax(const IntervalVar* const var) const;
    5015  int64 DurationValue(const IntervalVar* const var) const;
    5016  int64 EndMin(const IntervalVar* const var) const;
    5017  int64 EndMax(const IntervalVar* const var) const;
    5018  int64 EndValue(const IntervalVar* const var) const;
    5019  int64 PerformedMin(const IntervalVar* const var) const;
    5020  int64 PerformedMax(const IntervalVar* const var) const;
    5021  int64 PerformedValue(const IntervalVar* const var) const;
    5022  void SetStartMin(const IntervalVar* const var, int64 m);
    5023  void SetStartMax(const IntervalVar* const var, int64 m);
    5024  void SetStartRange(const IntervalVar* const var, int64 mi, int64 ma);
    5025  void SetStartValue(const IntervalVar* const var, int64 value);
    5026  void SetDurationMin(const IntervalVar* const var, int64 m);
    5027  void SetDurationMax(const IntervalVar* const var, int64 m);
    5028  void SetDurationRange(const IntervalVar* const var, int64 mi, int64 ma);
    5029  void SetDurationValue(const IntervalVar* const var, int64 value);
    5030  void SetEndMin(const IntervalVar* const var, int64 m);
    5031  void SetEndMax(const IntervalVar* const var, int64 m);
    5032  void SetEndRange(const IntervalVar* const var, int64 mi, int64 ma);
    5033  void SetEndValue(const IntervalVar* const var, int64 value);
    5034  void SetPerformedMin(const IntervalVar* const var, int64 m);
    5035  void SetPerformedMax(const IntervalVar* const var, int64 m);
    5036  void SetPerformedRange(const IntervalVar* const var, int64 mi, int64 ma);
    5037  void SetPerformedValue(const IntervalVar* const var, int64 value);
    5038 
    5039  SequenceVarElement* Add(SequenceVar* const var);
    5040  void Add(const std::vector<SequenceVar*>& vars);
    5042  SequenceVarElement* FastAdd(SequenceVar* const var);
    5043  const std::vector<int>& ForwardSequence(const SequenceVar* const var) const;
    5044  const std::vector<int>& BackwardSequence(const SequenceVar* const var) const;
    5045  const std::vector<int>& Unperformed(const SequenceVar* const var) const;
    5046  void SetSequence(const SequenceVar* const var,
    5047  const std::vector<int>& forward_sequence,
    5048  const std::vector<int>& backward_sequence,
    5049  const std::vector<int>& unperformed);
    5050  void SetForwardSequence(const SequenceVar* const var,
    5051  const std::vector<int>& forward_sequence);
    5052  void SetBackwardSequence(const SequenceVar* const var,
    5053  const std::vector<int>& backward_sequence);
    5054  void SetUnperformed(const SequenceVar* const var,
    5055  const std::vector<int>& unperformed);
    5056 
    5057  void Activate(const IntVar* const var);
    5058  void Deactivate(const IntVar* const var);
    5059  bool Activated(const IntVar* const var) const;
    5060 
    5061  void Activate(const IntervalVar* const var);
    5062  void Deactivate(const IntervalVar* const var);
    5063  bool Activated(const IntervalVar* const var) const;
    5064 
    5065  void Activate(const SequenceVar* const var);
    5066  void Deactivate(const SequenceVar* const var);
    5067  bool Activated(const SequenceVar* const var) const;
    5068 
    5069  void ActivateObjective();
    5070  void DeactivateObjective();
    5071  bool ActivatedObjective() const;
    5072 
    5073  std::string DebugString() const override;
    5074 
    5075  bool AreAllElementsBound() const {
    5076  return int_var_container_.AreAllElementsBound() &&
    5077  interval_var_container_.AreAllElementsBound() &&
    5078  sequence_var_container_.AreAllElementsBound();
    5079  }
    5080 
    5081  bool Contains(const IntVar* const var) const;
    5082  bool Contains(const IntervalVar* const var) const;
    5083  bool Contains(const SequenceVar* const var) const;
    5085  void CopyIntersection(const Assignment* assignment);
    5088  void Copy(const Assignment* assignment);
    5089 
    5090  // TODO(user): Add element iterators to avoid exposing container class.
    5091  const IntContainer& IntVarContainer() const { return int_var_container_; }
    5092  IntContainer* MutableIntVarContainer() { return &int_var_container_; }
    5094  return interval_var_container_;
    5095  }
    5097  return &interval_var_container_;
    5098  }
    5100  return sequence_var_container_;
    5101  }
    5103  return &sequence_var_container_;
    5104  }
    5105  bool operator==(const Assignment& assignment) const {
    5106  return int_var_container_ == assignment.int_var_container_ &&
    5107  interval_var_container_ == assignment.interval_var_container_ &&
    5108  sequence_var_container_ == assignment.sequence_var_container_ &&
    5109  objective_element_ == assignment.objective_element_;
    5110  }
    5111  bool operator!=(const Assignment& assignment) const {
    5112  return !(*this == assignment);
    5113  }
    5114 
    5115  private:
    5116  IntContainer int_var_container_;
    5117  IntervalContainer interval_var_container_;
    5118  SequenceContainer sequence_var_container_;
    5119  IntVarElement objective_element_;
    5120  DISALLOW_COPY_AND_ASSIGN(Assignment);
    5121 };
    5122 
    5123 std::ostream& operator<<(std::ostream& out,
    5124  const Assignment& assignment);
    5125 
    5131 void SetAssignmentFromAssignment(Assignment* target_assignment,
    5132  const std::vector<IntVar*>& target_vars,
    5133  const Assignment* source_assignment,
    5134  const std::vector<IntVar*>& source_vars);
    5135 
    5136 class Pack : public Constraint {
    5137  public:
    5138  Pack(Solver* const s, const std::vector<IntVar*>& vars, int number_of_bins);
    5139 
    5140  ~Pack() override;
    5141 
    5146 
    5151  const std::vector<int64>& weights, const std::vector<int64>& bounds);
    5152 
    5158  Solver::IndexEvaluator1 weights, const std::vector<int64>& bounds);
    5159 
    5165  Solver::IndexEvaluator2 weights, const std::vector<int64>& bounds);
    5166 
    5169  void AddWeightedSumEqualVarDimension(const std::vector<int64>& weights,
    5170  const std::vector<IntVar*>& loads);
    5171 
    5176  const std::vector<IntVar*>& loads);
    5177 
    5188  const std::vector<IntVar*>& usage, const std::vector<int64>& capacity);
    5189 
    5192  void AddWeightedSumOfAssignedDimension(const std::vector<int64>& weights,
    5193  IntVar* const cost_var);
    5194 
    5197  void AddCountUsedBinDimension(IntVar* const count_var);
    5198 
    5201  void AddCountAssignedItemsDimension(IntVar* const count_var);
    5202 
    5203  void Post() override;
    5204  void ClearAll();
    5205  void PropagateDelayed();
    5206  void InitialPropagate() override;
    5207  void Propagate();
    5208  void OneDomain(int var_index);
    5209  std::string DebugString() const override;
    5210  bool IsUndecided(int var_index, int bin_index) const;
    5211  void SetImpossible(int var_index, int bin_index);
    5212  void Assign(int var_index, int bin_index);
    5213  bool IsAssignedStatusKnown(int var_index) const;
    5214  bool IsPossible(int var_index, int bin_index) const;
    5215  IntVar* AssignVar(int var_index, int bin_index) const;
    5216  void SetAssigned(int var_index);
    5217  void SetUnassigned(int var_index);
    5218  void RemoveAllPossibleFromBin(int bin_index);
    5219  void AssignAllPossibleToBin(int bin_index);
    5220  void AssignFirstPossibleToBin(int bin_index);
    5221  void AssignAllRemainingItems();
    5223  void Accept(ModelVisitor* const visitor) const override;
    5224 
    5225  private:
    5226  bool IsInProcess() const;
    5227  const std::vector<IntVar*> vars_;
    5228  const int bins_;
    5229  std::vector<Dimension*> dims_;
    5230  std::unique_ptr<RevBitMatrix> unprocessed_;
    5231  std::vector<std::vector<int>> forced_;
    5232  std::vector<std::vector<int>> removed_;
    5233  std::vector<IntVarIterator*> holes_;
    5234  uint64 stamp_;
    5235  Demon* demon_;
    5236  std::vector<std::pair<int, int>> to_set_;
    5237  std::vector<std::pair<int, int>> to_unset_;
    5238  bool in_process_;
    5239 };
    5240 
    5242  public:
    5243  DisjunctiveConstraint(Solver* const s,
    5244  const std::vector<IntervalVar*>& intervals,
    5245  const std::string& name);
    5246  ~DisjunctiveConstraint() override;
    5247 
    5249  virtual SequenceVar* MakeSequenceVar() = 0;
    5250 
    5255  void SetTransitionTime(Solver::IndexEvaluator2 transition_time);
    5256 
    5257  int64 TransitionTime(int before_index, int after_index) {
    5258  DCHECK(transition_time_);
    5259  return transition_time_(before_index, after_index);
    5260  }
    5261 
    5262 #if !defined(SWIG)
    5263  virtual const std::vector<IntVar*>& nexts() const = 0;
    5264  virtual const std::vector<IntVar*>& actives() const = 0;
    5265  virtual const std::vector<IntVar*>& time_cumuls() const = 0;
    5266  virtual const std::vector<IntVar*>& time_slacks() const = 0;
    5267 #endif // !defined(SWIG)
    5268 
    5269  protected:
    5270  const std::vector<IntervalVar*> intervals_;
    5272 
    5273  private:
    5274  DISALLOW_COPY_AND_ASSIGN(DisjunctiveConstraint);
    5275 };
    5276 
    5279 class SolutionPool : public BaseObject {
    5280  public:
    5282  ~SolutionPool() override {}
    5283 
    5286  virtual void Initialize(Assignment* const assignment) = 0;
    5287 
    5290  virtual void RegisterNewSolution(Assignment* const assignment) = 0;
    5291 
    5294  virtual void GetNextSolution(Assignment* const assignment) = 0;
    5295 
    5298  virtual bool SyncNeeded(Assignment* const local_assignment) = 0;
    5299 };
    5300 } // namespace operations_research
    5301 
    5302 #endif // OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVER_H_
    Implements a complete cache for model elements: expressions and constraints.
    +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 
    62 
    63 #ifndef OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVER_H_
    64 #define OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVER_H_
    65 
    66 #include <functional>
    67 #include <iosfwd>
    68 #include <memory>
    69 #include <string>
    70 #include <utility>
    71 #include <vector>
    72 
    73 #include "absl/container/flat_hash_map.h"
    74 #include "absl/container/flat_hash_set.h"
    75 #include "absl/strings/str_format.h"
    76 #include "ortools/base/commandlineflags.h"
    77 #include "ortools/base/hash.h"
    78 #include "ortools/base/integral_types.h"
    79 #include "ortools/base/logging.h"
    80 #include "ortools/base/macros.h"
    81 #include "ortools/base/map_util.h"
    82 #include "ortools/base/random.h"
    83 #include "ortools/base/sysinfo.h"
    84 #include "ortools/base/timer.h"
    85 #include "ortools/constraint_solver/solver_parameters.pb.h"
    86 #include "ortools/util/piecewise_linear_function.h"
    87 #include "ortools/util/sorted_interval_list.h"
    88 #include "ortools/util/tuple_set.h"
    89 
    90 class File;
    91 
    93 
    94 class Assignment;
    95 class AssignmentProto;
    96 class BaseObject;
    97 class CpArgument;
    98 class CpConstraint;
    99 class CpIntegerExpression;
    100 class CpIntervalVariable;
    101 class CpSequenceVariable;
    102 class CastConstraint;
    103 class Constraint;
    104 class Decision;
    105 class DecisionBuilder;
    106 class DecisionVisitor;
    107 class Demon;
    108 class DemonProfiler;
    109 class LocalSearchProfiler;
    110 class Dimension;
    112 class ExpressionCache;
    113 class IntExpr;
    114 class IntTupleSet;
    115 class IntVar;
    116 class IntVarAssignment;
    117 class IntVarElement;
    118 class IntervalVar;
    119 class IntervalVarAssignment;
    120 class IntervalVarElement;
    122 class LocalSearchFilter;
    123 class LocalSearchOperator;
    124 class LocalSearchPhaseParameters;
    125 class ModelCache;
    126 class ModelVisitor;
    127 class OptimizeVar;
    128 class Pack;
    130 class PropagationMonitor;
    131 class LocalSearchMonitor;
    132 class Queue;
    133 class RevBitMatrix;
    134 class RevBitSet;
    135 class RegularLimit;
    136 class RegularLimitParameters;
    137 class Search;
    138 class SearchLimit;
    139 class SearchMonitor;
    140 class SequenceVar;
    141 class SequenceVarAssignment;
    142 class SolutionCollector;
    143 class SolutionPool;
    144 class Solver;
    145 class ConstraintSolverParameters;
    146 class SymmetryBreaker;
    147 struct StateInfo;
    148 struct Trail;
    149 template <class T>
    151 
    156  public:
    161  };
    162 
    166  };
    167 
    168  enum DisplayLevel { NONE = 0, NORMAL = 1, VERBOSE = 2 };
    169 
    173 
    176 
    180 
    185 
    190 
    193 
    197 
    200 
    204 
    207 
    210 
    212 };
    213 
    231 class Solver {
    232  public:
    239  : variable(nullptr), expression(nullptr), maintainer(nullptr) {}
    240  IntegerCastInfo(IntVar* const v, IntExpr* const e, Constraint* const c)
    241  : variable(v), expression(e), maintainer(c) {}
    245  };
    246 
    248  static const int kNumPriorities = 3;
    249 
    255 
    258 
    263 
    266 
    274 
    282 
    290 
    298 
    304 
    310 
    315 
    320 
    324 
    328  };
    329  // TODO(user): add HIGHEST_MIN and LOWEST_MAX.
    330 
    336 
    339 
    342 
    345 
    348 
    353 
    357 
    361  };
    362 
    379 
    385  };
    386 
    393  };
    394 
    408  };
    409 
    423 
    439 
    442 
    451 
    462 
    470 
    477 
    485 
    492 
    504 
    513 
    517 
    522 
    532 
    537 
    546  };
    547 
    555  LK,
    556 
    564 
    572  };
    573 
    580  GE,
    582  LE,
    586  };
    587 
    595 
    598 
    601  };
    602 
    608 
    611 
    614 
    617 
    620 
    623 
    626 
    629 
    634  };
    635 
    641 
    644 
    647 
    650 
    653 
    656 
    661 
    666  };
    667 
    677 
    682 
    687 
    691 
    695  };
    696 
    700 
    702  enum SolverState {
    715  };
    716 
    719 
    721  typedef std::function<int64(int64)> IndexEvaluator1;
    722  typedef std::function<int64(int64, int64)> IndexEvaluator2;
    723  typedef std::function<int64(int64, int64, int64)> IndexEvaluator3;
    724 
    725  typedef std::function<bool(int64)> IndexFilter1;
    726 
    727  typedef std::function<IntVar*(int64)> Int64ToIntVar;
    728 
    729  typedef std::function<int64(Solver* solver, const std::vector<IntVar*>& vars,
    730  int64 first_unbound, int64 last_unbound)>
    732 
    733  typedef std::function<int64(const IntVar* v, int64 id)> VariableValueSelector;
    734  typedef std::function<bool(int64, int64, int64)> VariableValueComparator;
    735  typedef std::function<DecisionModification()> BranchSelector;
    736  // TODO(user): wrap in swig.
    737  typedef std::function<void(Solver*)> Action;
    738  typedef std::function<void()> Closure;
    739 
    741  explicit Solver(const std::string& name);
    742  Solver(const std::string& name, const ConstraintSolverParameters& parameters);
    743  ~Solver();
    744 
    746  ConstraintSolverParameters parameters() const { return parameters_; }
    748  // TODO(user): Move to constraint_solver_parameters.h.
    749  static ConstraintSolverParameters DefaultSolverParameters();
    750 
    752 
    756  template <class T>
    757  void SaveValue(T* o) {
    758  InternalSaveValue(o);
    759  }
    760 
    773  template <typename T>
    774  T* RevAlloc(T* object) {
    775  return reinterpret_cast<T*>(SafeRevAlloc(object));
    776  }
    777 
    784  template <typename T>
    785  T* RevAllocArray(T* object) {
    786  return reinterpret_cast<T*>(SafeRevAllocArray(object));
    787  }
    788 
    822  void AddConstraint(Constraint* const c);
    826  void AddCastConstraint(CastConstraint* const constraint,
    827  IntVar* const target_var, IntExpr* const expr);
    828 
    870  bool Solve(DecisionBuilder* const db,
    871  const std::vector<SearchMonitor*>& monitors);
    872  bool Solve(DecisionBuilder* const db);
    873  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1);
    874  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1,
    875  SearchMonitor* const m2);
    876  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1,
    877  SearchMonitor* const m2, SearchMonitor* const m3);
    878  bool Solve(DecisionBuilder* const db, SearchMonitor* const m1,
    879  SearchMonitor* const m2, SearchMonitor* const m3,
    880  SearchMonitor* const m4);
    882 
    891 
    892  void NewSearch(DecisionBuilder* const db,
    893  const std::vector<SearchMonitor*>& monitors);
    894  void NewSearch(DecisionBuilder* const db);
    895  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1);
    896  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1,
    897  SearchMonitor* const m2);
    898  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1,
    899  SearchMonitor* const m2, SearchMonitor* const m3);
    900  void NewSearch(DecisionBuilder* const db, SearchMonitor* const m1,
    901  SearchMonitor* const m2, SearchMonitor* const m3,
    902  SearchMonitor* const m4);
    903 
    904  bool NextSolution();
    905  void RestartSearch();
    906  void EndSearch();
    908 
    917  bool SolveAndCommit(DecisionBuilder* const db,
    918  const std::vector<SearchMonitor*>& monitors);
    919  bool SolveAndCommit(DecisionBuilder* const db);
    920  bool SolveAndCommit(DecisionBuilder* const db, SearchMonitor* const m1);
    921  bool SolveAndCommit(DecisionBuilder* const db, SearchMonitor* const m1,
    922  SearchMonitor* const m2);
    923  bool SolveAndCommit(DecisionBuilder* const db, SearchMonitor* const m1,
    924  SearchMonitor* const m2, SearchMonitor* const m3);
    925 
    927  bool CheckAssignment(Assignment* const solution);
    928 
    932  bool CheckConstraint(Constraint* const ct);
    933 
    935  SolverState state() const { return state_; }
    936 
    938  void Fail();
    939 
    940 #if !defined(SWIG)
    941  void AddBacktrackAction(Action a, bool fast);
    946 #endif
    947 
    948  std::string DebugString() const;
    950 
    952  static int64 MemoryUsage();
    953 
    958  absl::Time Now() const;
    959 
    962  int64 wall_time() const;
    963 
    965  int64 branches() const { return branches_; }
    966 
    968  int64 solutions() const;
    969 
    971  int64 unchecked_solutions() const;
    972 
    974  int64 demon_runs(DemonPriority p) const { return demon_runs_[p]; }
    975 
    977  int64 failures() const { return fails_; }
    978 
    980  int64 neighbors() const { return neighbors_; }
    981 
    983  int64 filtered_neighbors() const { return filtered_neighbors_; }
    984 
    986  int64 accepted_neighbors() const { return accepted_neighbors_; }
    987 
    990  uint64 stamp() const;
    991 
    993  uint64 fail_stamp() const;
    994 
    997  return optimization_direction_;
    998  }
    1000  optimization_direction_ = direction;
    1001  }
    1002 
    1003  // All factories (MakeXXX methods) encapsulate creation of objects
    1004  // through RevAlloc(). Hence, the Solver used for allocating the
    1005  // returned object will retain ownership of the allocated memory.
    1006  // Destructors are called upon backtrack, or when the Solver is
    1007  // itself destructed.
    1008 
    1009  // ----- Int Variables and Constants -----
    1010 
    1012  IntVar* MakeIntVar(int64 min, int64 max, const std::string& name);
    1013 
    1015  IntVar* MakeIntVar(const std::vector<int64>& values, const std::string& name);
    1016 
    1018  IntVar* MakeIntVar(const std::vector<int>& values, const std::string& name);
    1019 
    1021  IntVar* MakeIntVar(int64 min, int64 max);
    1022 
    1024  IntVar* MakeIntVar(const std::vector<int64>& values);
    1025 
    1027  IntVar* MakeIntVar(const std::vector<int>& values);
    1028 
    1030  IntVar* MakeBoolVar(const std::string& name);
    1031 
    1033  IntVar* MakeBoolVar();
    1034 
    1036  IntVar* MakeIntConst(int64 val, const std::string& name);
    1037 
    1039  IntVar* MakeIntConst(int64 val);
    1040 
    1044  void MakeIntVarArray(int var_count, int64 vmin, int64 vmax,
    1045  const std::string& name, std::vector<IntVar*>* vars);
    1048  void MakeIntVarArray(int var_count, int64 vmin, int64 vmax,
    1049  std::vector<IntVar*>* vars);
    1051  IntVar** MakeIntVarArray(int var_count, int64 vmin, int64 vmax,
    1052  const std::string& name);
    1053 
    1057  void MakeBoolVarArray(int var_count, const std::string& name,
    1058  std::vector<IntVar*>* vars);
    1061  void MakeBoolVarArray(int var_count, std::vector<IntVar*>* vars);
    1063  IntVar** MakeBoolVarArray(int var_count, const std::string& name);
    1064 
    1065  // ----- Integer Expressions -----
    1066 
    1068  IntExpr* MakeSum(IntExpr* const left, IntExpr* const right);
    1070  IntExpr* MakeSum(IntExpr* const expr, int64 value);
    1072  IntExpr* MakeSum(const std::vector<IntVar*>& vars);
    1073 
    1075  IntExpr* MakeScalProd(const std::vector<IntVar*>& vars,
    1076  const std::vector<int64>& coefs);
    1078  IntExpr* MakeScalProd(const std::vector<IntVar*>& vars,
    1079  const std::vector<int>& coefs);
    1080 
    1082  IntExpr* MakeDifference(IntExpr* const left, IntExpr* const right);
    1084  IntExpr* MakeDifference(int64 value, IntExpr* const expr);
    1086  IntExpr* MakeOpposite(IntExpr* const expr);
    1087 
    1089  IntExpr* MakeProd(IntExpr* const left, IntExpr* const right);
    1091  IntExpr* MakeProd(IntExpr* const expr, int64 value);
    1092 
    1094  IntExpr* MakeDiv(IntExpr* const expr, int64 value);
    1096  IntExpr* MakeDiv(IntExpr* const numerator, IntExpr* const denominator);
    1097 
    1099  IntExpr* MakeAbs(IntExpr* const expr);
    1101  IntExpr* MakeSquare(IntExpr* const expr);
    1103  IntExpr* MakePower(IntExpr* const expr, int64 n);
    1104 
    1106  IntExpr* MakeElement(const std::vector<int64>& values, IntVar* const index);
    1108  IntExpr* MakeElement(const std::vector<int>& values, IntVar* const index);
    1109 
    1113  IntExpr* MakeElement(IndexEvaluator1 values, IntVar* const index);
    1120  IntExpr* MakeMonotonicElement(IndexEvaluator1 values, bool increasing,
    1121  IntVar* const index);
    1123  IntExpr* MakeElement(IndexEvaluator2 values, IntVar* const index1,
    1124  IntVar* const index2);
    1125 
    1127  IntExpr* MakeElement(const std::vector<IntVar*>& vars, IntVar* const index);
    1128 
    1129 #if !defined(SWIG)
    1130  IntExpr* MakeElement(Int64ToIntVar vars, int64 range_start, int64 range_end,
    1132  IntVar* argument);
    1133 #endif // SWIG
    1134 
    1137  IntExpr* MakeIndexExpression(const std::vector<IntVar*>& vars, int64 value);
    1138 
    1140  Constraint* MakeIfThenElseCt(IntVar* const condition,
    1141  IntExpr* const then_expr,
    1142  IntExpr* const else_expr,
    1143  IntVar* const target_var);
    1144 
    1146  IntExpr* MakeMin(const std::vector<IntVar*>& vars);
    1148  IntExpr* MakeMin(IntExpr* const left, IntExpr* const right);
    1150  IntExpr* MakeMin(IntExpr* const expr, int64 value);
    1152  IntExpr* MakeMin(IntExpr* const expr, int value);
    1153 
    1155  IntExpr* MakeMax(const std::vector<IntVar*>& vars);
    1157  IntExpr* MakeMax(IntExpr* const left, IntExpr* const right);
    1159  IntExpr* MakeMax(IntExpr* const expr, int64 value);
    1161  IntExpr* MakeMax(IntExpr* const expr, int value);
    1162 
    1164  IntExpr* MakeConvexPiecewiseExpr(IntExpr* expr, int64 early_cost,
    1165  int64 early_date, int64 late_date,
    1166  int64 late_cost);
    1167 
    1170  IntExpr* MakeSemiContinuousExpr(IntExpr* const expr, int64 fixed_charge,
    1171  int64 step);
    1172 
    1175  // TODO(user): Investigate if we can merge all three piecewise linear
    1177 #ifndef SWIG
    1179  const PiecewiseLinearFunction& f);
    1180 #endif
    1181 
    1183  IntExpr* MakeModulo(IntExpr* const x, int64 mod);
    1184 
    1186  IntExpr* MakeModulo(IntExpr* const x, IntExpr* const mod);
    1187 
    1189  IntExpr* MakeConditionalExpression(IntVar* const condition,
    1190  IntExpr* const expr,
    1191  int64 unperformed_value);
    1192 
    1197  Constraint* MakeFalseConstraint(const std::string& explanation);
    1198 
    1200  Constraint* MakeIsEqualCstCt(IntExpr* const var, int64 value,
    1201  IntVar* const boolvar);
    1203  IntVar* MakeIsEqualCstVar(IntExpr* const var, int64 value);
    1205  Constraint* MakeIsEqualCt(IntExpr* const v1, IntExpr* v2, IntVar* const b);
    1207  IntVar* MakeIsEqualVar(IntExpr* const v1, IntExpr* v2);
    1209  Constraint* MakeEquality(IntExpr* const left, IntExpr* const right);
    1211  Constraint* MakeEquality(IntExpr* const expr, int64 value);
    1213  Constraint* MakeEquality(IntExpr* const expr, int value);
    1214 
    1216  Constraint* MakeIsDifferentCstCt(IntExpr* const var, int64 value,
    1217  IntVar* const boolvar);
    1219  IntVar* MakeIsDifferentCstVar(IntExpr* const var, int64 value);
    1221  IntVar* MakeIsDifferentVar(IntExpr* const v1, IntExpr* const v2);
    1223  Constraint* MakeIsDifferentCt(IntExpr* const v1, IntExpr* const v2,
    1224  IntVar* const b);
    1226  Constraint* MakeNonEquality(IntExpr* const left, IntExpr* const right);
    1228  Constraint* MakeNonEquality(IntExpr* const expr, int64 value);
    1230  Constraint* MakeNonEquality(IntExpr* const expr, int value);
    1231 
    1233  Constraint* MakeIsLessOrEqualCstCt(IntExpr* const var, int64 value,
    1234  IntVar* const boolvar);
    1236  IntVar* MakeIsLessOrEqualCstVar(IntExpr* const var, int64 value);
    1238  IntVar* MakeIsLessOrEqualVar(IntExpr* const left, IntExpr* const right);
    1240  Constraint* MakeIsLessOrEqualCt(IntExpr* const left, IntExpr* const right,
    1241  IntVar* const b);
    1243  Constraint* MakeLessOrEqual(IntExpr* const left, IntExpr* const right);
    1245  Constraint* MakeLessOrEqual(IntExpr* const expr, int64 value);
    1247  Constraint* MakeLessOrEqual(IntExpr* const expr, int value);
    1248 
    1250  Constraint* MakeIsGreaterOrEqualCstCt(IntExpr* const var, int64 value,
    1251  IntVar* const boolvar);
    1253  IntVar* MakeIsGreaterOrEqualCstVar(IntExpr* const var, int64 value);
    1255  IntVar* MakeIsGreaterOrEqualVar(IntExpr* const left, IntExpr* const right);
    1257  Constraint* MakeIsGreaterOrEqualCt(IntExpr* const left, IntExpr* const right,
    1258  IntVar* const b);
    1260  Constraint* MakeGreaterOrEqual(IntExpr* const left, IntExpr* const right);
    1262  Constraint* MakeGreaterOrEqual(IntExpr* const expr, int64 value);
    1264  Constraint* MakeGreaterOrEqual(IntExpr* const expr, int value);
    1265 
    1267  Constraint* MakeIsGreaterCstCt(IntExpr* const v, int64 c, IntVar* const b);
    1269  IntVar* MakeIsGreaterCstVar(IntExpr* const var, int64 value);
    1271  IntVar* MakeIsGreaterVar(IntExpr* const left, IntExpr* const right);
    1273  Constraint* MakeIsGreaterCt(IntExpr* const left, IntExpr* const right,
    1274  IntVar* const b);
    1276  Constraint* MakeGreater(IntExpr* const left, IntExpr* const right);
    1278  Constraint* MakeGreater(IntExpr* const expr, int64 value);
    1280  Constraint* MakeGreater(IntExpr* const expr, int value);
    1281 
    1283  Constraint* MakeIsLessCstCt(IntExpr* const v, int64 c, IntVar* const b);
    1285  IntVar* MakeIsLessCstVar(IntExpr* const var, int64 value);
    1287  IntVar* MakeIsLessVar(IntExpr* const left, IntExpr* const right);
    1289  Constraint* MakeIsLessCt(IntExpr* const left, IntExpr* const right,
    1290  IntVar* const b);
    1292  Constraint* MakeLess(IntExpr* const left, IntExpr* const right);
    1294  Constraint* MakeLess(IntExpr* const expr, int64 value);
    1296  Constraint* MakeLess(IntExpr* const expr, int value);
    1297 
    1299  Constraint* MakeSumLessOrEqual(const std::vector<IntVar*>& vars, int64 cst);
    1300  Constraint* MakeSumGreaterOrEqual(const std::vector<IntVar*>& vars,
    1301  int64 cst);
    1302  Constraint* MakeSumEquality(const std::vector<IntVar*>& vars, int64 cst);
    1303  Constraint* MakeSumEquality(const std::vector<IntVar*>& vars,
    1304  IntVar* const var);
    1305  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1306  const std::vector<int64>& coefficients,
    1307  int64 cst);
    1308  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1309  const std::vector<int>& coefficients,
    1310  int64 cst);
    1311  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1312  const std::vector<int64>& coefficients,
    1313  IntVar* const target);
    1314  Constraint* MakeScalProdEquality(const std::vector<IntVar*>& vars,
    1315  const std::vector<int>& coefficients,
    1316  IntVar* const target);
    1317  Constraint* MakeScalProdGreaterOrEqual(const std::vector<IntVar*>& vars,
    1318  const std::vector<int64>& coeffs,
    1319  int64 cst);
    1320  Constraint* MakeScalProdGreaterOrEqual(const std::vector<IntVar*>& vars,
    1321  const std::vector<int>& coeffs,
    1322  int64 cst);
    1323  Constraint* MakeScalProdLessOrEqual(const std::vector<IntVar*>& vars,
    1324  const std::vector<int64>& coefficients,
    1325  int64 cst);
    1326  Constraint* MakeScalProdLessOrEqual(const std::vector<IntVar*>& vars,
    1327  const std::vector<int>& coefficients,
    1328  int64 cst);
    1329 
    1330  Constraint* MakeMinEquality(const std::vector<IntVar*>& vars,
    1331  IntVar* const min_var);
    1332  Constraint* MakeMaxEquality(const std::vector<IntVar*>& vars,
    1333  IntVar* const max_var);
    1334 
    1335  Constraint* MakeElementEquality(const std::vector<int64>& vals,
    1336  IntVar* const index, IntVar* const target);
    1337  Constraint* MakeElementEquality(const std::vector<int>& vals,
    1338  IntVar* const index, IntVar* const target);
    1339  Constraint* MakeElementEquality(const std::vector<IntVar*>& vars,
    1340  IntVar* const index, IntVar* const target);
    1341  Constraint* MakeElementEquality(const std::vector<IntVar*>& vars,
    1342  IntVar* const index, int64 target);
    1344  Constraint* MakeAbsEquality(IntVar* const var, IntVar* const abs_var);
    1349  Constraint* MakeIndexOfConstraint(const std::vector<IntVar*>& vars,
    1350  IntVar* const index, int64 target);
    1351 
    1359 #if !defined(SWIG)
    1360  Demon* MakeActionDemon(Action action);
    1362 #endif
    1363  Demon* MakeClosureDemon(Closure closure);
    1365 
    1366  // ----- Between and related constraints -----
    1367 
    1369  Constraint* MakeBetweenCt(IntExpr* const expr, int64 l, int64 u);
    1370 
    1375  Constraint* MakeNotBetweenCt(IntExpr* const expr, int64 l, int64 u);
    1376 
    1378  Constraint* MakeIsBetweenCt(IntExpr* const expr, int64 l, int64 u,
    1379  IntVar* const b);
    1380  IntVar* MakeIsBetweenVar(IntExpr* const v, int64 l, int64 u);
    1381 
    1382  // ----- Member and related constraints -----
    1383 
    1386  Constraint* MakeMemberCt(IntExpr* const expr,
    1387  const std::vector<int64>& values);
    1388  Constraint* MakeMemberCt(IntExpr* const expr, const std::vector<int>& values);
    1389 
    1391  Constraint* MakeNotMemberCt(IntExpr* const expr,
    1392  const std::vector<int64>& values);
    1393  Constraint* MakeNotMemberCt(IntExpr* const expr,
    1394  const std::vector<int>& values);
    1395 
    1397  Constraint* MakeNotMemberCt(IntExpr* const expr, std::vector<int64> starts,
    1398  std::vector<int64> ends);
    1400  Constraint* MakeNotMemberCt(IntExpr* const expr, std::vector<int> starts,
    1401  std::vector<int> ends);
    1402 #if !defined(SWIG)
    1405  SortedDisjointIntervalList intervals);
    1406 #endif // !defined(SWIG)
    1407 
    1409  Constraint* MakeIsMemberCt(IntExpr* const expr,
    1410  const std::vector<int64>& values,
    1411  IntVar* const boolvar);
    1412  Constraint* MakeIsMemberCt(IntExpr* const expr,
    1413  const std::vector<int>& values,
    1414  IntVar* const boolvar);
    1415  IntVar* MakeIsMemberVar(IntExpr* const expr,
    1416  const std::vector<int64>& values);
    1417  IntVar* MakeIsMemberVar(IntExpr* const expr, const std::vector<int>& values);
    1418 
    1420  Constraint* MakeAtMost(std::vector<IntVar*> vars, int64 value,
    1421  int64 max_count);
    1423  Constraint* MakeCount(const std::vector<IntVar*>& vars, int64 value,
    1424  int64 max_count);
    1426  Constraint* MakeCount(const std::vector<IntVar*>& vars, int64 value,
    1427  IntVar* const max_count);
    1428 
    1430  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1431  const std::vector<int64>& values,
    1432  const std::vector<IntVar*>& cards);
    1434  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1435  const std::vector<int>& values,
    1436  const std::vector<IntVar*>& cards);
    1438  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1439  const std::vector<IntVar*>& cards);
    1442  Constraint* MakeDistribute(const std::vector<IntVar*>& vars, int64 card_min,
    1443  int64 card_max, int64 card_size);
    1447  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1448  const std::vector<int64>& card_min,
    1449  const std::vector<int64>& card_max);
    1453  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1454  const std::vector<int>& card_min,
    1455  const std::vector<int>& card_max);
    1459  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1460  const std::vector<int64>& values,
    1461  const std::vector<int64>& card_min,
    1462  const std::vector<int64>& card_max);
    1466  Constraint* MakeDistribute(const std::vector<IntVar*>& vars,
    1467  const std::vector<int>& values,
    1468  const std::vector<int>& card_min,
    1469  const std::vector<int>& card_max);
    1470 
    1475  Constraint* MakeDeviation(const std::vector<IntVar*>& vars,
    1476  IntVar* const deviation_var, int64 total_sum);
    1477 
    1480  Constraint* MakeAllDifferent(const std::vector<IntVar*>& vars);
    1481 
    1485  Constraint* MakeAllDifferent(const std::vector<IntVar*>& vars,
    1486  bool stronger_propagation);
    1487 
    1490  Constraint* MakeAllDifferentExcept(const std::vector<IntVar*>& vars,
    1491  int64 escape_value);
    1492  // TODO(user): Do we need a version with an array of escape values.
    1493 
    1509  Constraint* MakeSortingConstraint(const std::vector<IntVar*>& vars,
    1510  const std::vector<IntVar*>& sorted);
    1511  // TODO(user): Add void MakeSortedArray(const std::vector<IntVar*>& vars,
    1514 
    1517  Constraint* MakeLexicalLess(const std::vector<IntVar*>& left,
    1518  const std::vector<IntVar*>& right);
    1519 
    1522  Constraint* MakeLexicalLessOrEqual(const std::vector<IntVar*>& left,
    1523  const std::vector<IntVar*>& right);
    1524 
    1530  const std::vector<IntVar*>& left, const std::vector<IntVar*>& right);
    1531 
    1535  IntVar* index, const std::vector<IntVar*>& vars);
    1536 
    1540  IntVar* index, const std::vector<IntVar*>& vars);
    1541 
    1546  Constraint* MakeNullIntersect(const std::vector<IntVar*>& first_vars,
    1547  const std::vector<IntVar*>& second_vars);
    1548 
    1554  Constraint* MakeNullIntersectExcept(const std::vector<IntVar*>& first_vars,
    1555  const std::vector<IntVar*>& second_vars,
    1556  int64 escape_value);
    1557 
    1558  // TODO(user): Implement MakeAllNullIntersect taking an array of
    1559  // variable vectors.
    1560 
    1570  Constraint* MakeNoCycle(const std::vector<IntVar*>& nexts,
    1571  const std::vector<IntVar*>& active,
    1572  IndexFilter1 sink_handler = nullptr);
    1573  Constraint* MakeNoCycle(const std::vector<IntVar*>& nexts,
    1574  const std::vector<IntVar*>& active,
    1575  IndexFilter1 sink_handler, bool assume_paths);
    1576 
    1578  Constraint* MakeCircuit(const std::vector<IntVar*>& nexts);
    1579 
    1582  Constraint* MakeSubCircuit(const std::vector<IntVar*>& nexts);
    1583 
    1588  Constraint* MakePathCumul(const std::vector<IntVar*>& nexts,
    1589  const std::vector<IntVar*>& active,
    1590  const std::vector<IntVar*>& cumuls,
    1591  const std::vector<IntVar*>& transits);
    1594  // TODO(user): Merge with other path-cumuls constraints.
    1595  Constraint* MakeDelayedPathCumul(const std::vector<IntVar*>& nexts,
    1596  const std::vector<IntVar*>& active,
    1597  const std::vector<IntVar*>& cumuls,
    1598  const std::vector<IntVar*>& transits);
    1605  Constraint* MakePathCumul(const std::vector<IntVar*>& nexts,
    1606  const std::vector<IntVar*>& active,
    1607  const std::vector<IntVar*>& cumuls,
    1608  IndexEvaluator2 transit_evaluator);
    1609 
    1616  Constraint* MakePathCumul(const std::vector<IntVar*>& nexts,
    1617  const std::vector<IntVar*>& active,
    1618  const std::vector<IntVar*>& cumuls,
    1619  const std::vector<IntVar*>& slacks,
    1620  IndexEvaluator2 transit_evaluator);
    1623  // TODO(user): Only does checking on WhenBound events on next variables.
    1625  Constraint* MakePathConnected(std::vector<IntVar*> nexts,
    1626  std::vector<int64> sources,
    1627  std::vector<int64> sinks,
    1628  std::vector<IntVar*> status);
    1629 #ifndef SWIG
    1630  // TODO(user): This constraint does not make holes in variable domains;
    1636  std::vector<IntVar*> nexts,
    1637  const std::vector<std::pair<int, int>>& precedences);
    1647  std::vector<IntVar*> nexts,
    1648  const std::vector<std::pair<int, int>>& precedences,
    1649  const std::vector<int>& lifo_path_starts,
    1650  const std::vector<int>& fifo_path_starts);
    1654  std::vector<IntVar*> nexts, std::vector<IntVar*> transits,
    1655  const std::vector<std::pair<int, int>>& precedences);
    1656 #endif
    1657  Constraint* MakeMapDomain(IntVar* const var,
    1661  const std::vector<IntVar*>& actives);
    1662 
    1667  Constraint* MakeAllowedAssignments(const std::vector<IntVar*>& vars,
    1668  const IntTupleSet& tuples);
    1669 
    1677  Constraint* MakeTransitionConstraint(const std::vector<IntVar*>& vars,
    1678  const IntTupleSet& transition_table,
    1679  int64 initial_state,
    1680  const std::vector<int64>& final_states);
    1681 
    1689  Constraint* MakeTransitionConstraint(const std::vector<IntVar*>& vars,
    1690  const IntTupleSet& transition_table,
    1691  int64 initial_state,
    1692  const std::vector<int>& final_states);
    1693 
    1694 #if defined(SWIGPYTHON)
    1697  const std::vector<IntVar*>& vars,
    1698  const std::vector<std::vector<int64>>& raw_tuples) {
    1699  IntTupleSet tuples(vars.size());
    1700  tuples.InsertAll(raw_tuples);
    1701  return MakeAllowedAssignments(vars, tuples);
    1702  }
    1703 
    1705  const std::vector<IntVar*>& vars,
    1706  const std::vector<std::vector<int64>>& raw_transitions,
    1707  int64 initial_state, const std::vector<int>& final_states) {
    1708  IntTupleSet transitions(3);
    1709  transitions.InsertAll(raw_transitions);
    1710  return MakeTransitionConstraint(vars, transitions, initial_state,
    1711  final_states);
    1712  }
    1713 #endif
    1714 
    1724  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1725  const std::vector<IntVar*>& x_size, const std::vector<IntVar*>& y_size);
    1727  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1728  const std::vector<int64>& x_size, const std::vector<int64>& y_size);
    1730  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1731  const std::vector<int>& x_size, const std::vector<int>& y_size);
    1732 
    1742  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1743  const std::vector<IntVar*>& x_size, const std::vector<IntVar*>& y_size);
    1745  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1746  const std::vector<int64>& x_size, const std::vector<int64>& y_size);
    1748  const std::vector<IntVar*>& x_vars, const std::vector<IntVar*>& y_vars,
    1749  const std::vector<int>& x_size, const std::vector<int>& y_size);
    1750 
    1756  Pack* MakePack(const std::vector<IntVar*>& vars, int number_of_bins);
    1757 
    1762  IntervalVar* MakeFixedDurationIntervalVar(int64 start_min, int64 start_max,
    1763  int64 duration, bool optional,
    1764  const std::string& name);
    1765 
    1769  int count, int64 start_min, int64 start_max, int64 duration,
    1770  bool optional, const std::string& name,
    1771  std::vector<IntervalVar*>* const array);
    1772 
    1775  IntervalVar* MakeFixedDurationIntervalVar(IntVar* const start_variable,
    1776  int64 duration,
    1777  const std::string& name);
    1778 
    1781  IntervalVar* MakeFixedDurationIntervalVar(IntVar* const start_variable,
    1782  int64 duration,
    1783  IntVar* const performed_variable,
    1784  const std::string& name);
    1785 
    1789  const std::vector<IntVar*>& start_variables, int64 duration,
    1790  const std::string& name, std::vector<IntervalVar*>* const array);
    1791 
    1795  const std::vector<IntVar*>& start_variables,
    1796  const std::vector<int64>& durations, const std::string& name,
    1797  std::vector<IntervalVar*>* const array);
    1801  const std::vector<IntVar*>& start_variables,
    1802  const std::vector<int>& durations, const std::string& name,
    1803  std::vector<IntervalVar*>* const array);
    1804 
    1808  const std::vector<IntVar*>& start_variables,
    1809  const std::vector<int64>& durations,
    1810  const std::vector<IntVar*>& performed_variables, const std::string& name,
    1811  std::vector<IntervalVar*>* const array);
    1812 
    1816  const std::vector<IntVar*>& start_variables,
    1817  const std::vector<int>& durations,
    1818  const std::vector<IntVar*>& performed_variables, const std::string& name,
    1819  std::vector<IntervalVar*>* const array);
    1820 
    1822  IntervalVar* MakeFixedInterval(int64 start, int64 duration,
    1823  const std::string& name);
    1824 
    1827  IntervalVar* MakeIntervalVar(int64 start_min, int64 start_max,
    1828  int64 duration_min, int64 duration_max,
    1829  int64 end_min, int64 end_max, bool optional,
    1830  const std::string& name);
    1831 
    1834  void MakeIntervalVarArray(int count, int64 start_min, int64 start_max,
    1835  int64 duration_min, int64 duration_max,
    1836  int64 end_min, int64 end_max, bool optional,
    1837  const std::string& name,
    1838  std::vector<IntervalVar*>* const array);
    1839 
    1842  IntervalVar* MakeMirrorInterval(IntervalVar* const interval_var);
    1843 
    1849  IntervalVar* const interval_var, int64 duration, int64 offset);
    1850 
    1856  IntervalVar* const interval_var, int64 duration, int64 offset);
    1857 
    1863  IntervalVar* const interval_var, int64 duration, int64 offset);
    1864 
    1870  IntervalVar* const interval_var, int64 duration, int64 offset);
    1871 
    1889  IntervalVar* MakeIntervalRelaxedMin(IntervalVar* const interval_var);
    1890 
    1908  IntervalVar* MakeIntervalRelaxedMax(IntervalVar* const interval_var);
    1909 
    1912  Constraint* MakeIntervalVarRelation(IntervalVar* const t,
    1913  UnaryIntervalRelation r, int64 d);
    1914 
    1916  Constraint* MakeIntervalVarRelation(IntervalVar* const t1,
    1918  IntervalVar* const t2);
    1919 
    1924  Constraint* MakeIntervalVarRelationWithDelay(IntervalVar* const t1,
    1926  IntervalVar* const t2,
    1927  int64 delay);
    1928 
    1932  Constraint* MakeTemporalDisjunction(IntervalVar* const t1,
    1933  IntervalVar* const t2, IntVar* const alt);
    1934 
    1937  Constraint* MakeTemporalDisjunction(IntervalVar* const t1,
    1938  IntervalVar* const t2);
    1939 
    1942  DisjunctiveConstraint* MakeDisjunctiveConstraint(
    1943  const std::vector<IntervalVar*>& intervals, const std::string& name);
    1944 
    1948  DisjunctiveConstraint* MakeStrictDisjunctiveConstraint(
    1949  const std::vector<IntervalVar*>& intervals, const std::string& name);
    1950 
    1960  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    1961  const std::vector<int64>& demands, int64 capacity,
    1962  const std::string& name);
    1963 
    1973  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    1974  const std::vector<int>& demands, int64 capacity,
    1975  const std::string& name);
    1976 
    1986  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    1987  const std::vector<int64>& demands,
    1988  IntVar* const capacity, const std::string& name);
    1989 
    1999  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    2000  const std::vector<int>& demands,
    2001  IntVar* const capacity, const std::string& name);
    2002 
    2010  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    2011  const std::vector<IntVar*>& demands,
    2012  int64 capacity, const std::string& name);
    2013 
    2021  Constraint* MakeCumulative(const std::vector<IntervalVar*>& intervals,
    2022  const std::vector<IntVar*>& demands,
    2023  IntVar* const capacity, const std::string& name);
    2024 
    2030  Constraint* MakeCover(const std::vector<IntervalVar*>& vars,
    2031  IntervalVar* const target_var);
    2032 
    2034  Constraint* MakeEquality(IntervalVar* const var1, IntervalVar* const var2);
    2035 
    2037  Assignment* MakeAssignment();
    2038 
    2040  Assignment* MakeAssignment(const Assignment* const a);
    2041 
    2043  SolutionCollector* MakeFirstSolutionCollector(
    2044  const Assignment* const assignment);
    2047  SolutionCollector* MakeFirstSolutionCollector();
    2048 
    2050  SolutionCollector* MakeLastSolutionCollector(
    2051  const Assignment* const assignment);
    2054  SolutionCollector* MakeLastSolutionCollector();
    2055 
    2060  SolutionCollector* MakeBestValueSolutionCollector(
    2061  const Assignment* const assignment, bool maximize);
    2067  SolutionCollector* MakeBestValueSolutionCollector(bool maximize);
    2068 
    2072  SolutionCollector* MakeNBestValueSolutionCollector(
    2073  const Assignment* const assignment, int solution_count, bool maximize);
    2074  SolutionCollector* MakeNBestValueSolutionCollector(int solution_count,
    2075  bool maximize);
    2076 
    2078  SolutionCollector* MakeAllSolutionCollector(
    2079  const Assignment* const assignment);
    2082  SolutionCollector* MakeAllSolutionCollector();
    2083 
    2085  OptimizeVar* MakeMinimize(IntVar* const v, int64 step);
    2086 
    2088  OptimizeVar* MakeMaximize(IntVar* const v, int64 step);
    2089 
    2091  OptimizeVar* MakeOptimize(bool maximize, IntVar* const v, int64 step);
    2092 
    2095  OptimizeVar* MakeWeightedMinimize(const std::vector<IntVar*>& sub_objectives,
    2096  const std::vector<int64>& weights,
    2097  int64 step);
    2098 
    2101  OptimizeVar* MakeWeightedMinimize(const std::vector<IntVar*>& sub_objectives,
    2102  const std::vector<int>& weights,
    2103  int64 step);
    2104 
    2106  OptimizeVar* MakeWeightedMaximize(const std::vector<IntVar*>& sub_objectives,
    2107  const std::vector<int64>& weights,
    2108  int64 step);
    2109 
    2111  OptimizeVar* MakeWeightedMaximize(const std::vector<IntVar*>& sub_objectives,
    2112  const std::vector<int>& weights,
    2113  int64 step);
    2114 
    2116  OptimizeVar* MakeWeightedOptimize(bool maximize,
    2117  const std::vector<IntVar*>& sub_objectives,
    2118  const std::vector<int64>& weights,
    2119  int64 step);
    2120 
    2122  OptimizeVar* MakeWeightedOptimize(bool maximize,
    2123  const std::vector<IntVar*>& sub_objectives,
    2124  const std::vector<int>& weights,
    2125  int64 step);
    2126 
    2128 
    2144 
    2145  SearchMonitor* MakeTabuSearch(bool maximize, IntVar* const v, int64 step,
    2146  const std::vector<IntVar*>& vars,
    2147  int64 keep_tenure, int64 forbid_tenure,
    2148  double tabu_factor);
    2149 
    2152  SearchMonitor* MakeGenericTabuSearch(bool maximize, IntVar* const v,
    2153  int64 step,
    2154  const std::vector<IntVar*>& tabu_vars,
    2155  int64 forbid_tenure);
    2156 
    2158  // TODO(user): document behavior
    2159  SearchMonitor* MakeSimulatedAnnealing(bool maximize, IntVar* const v,
    2160  int64 step, int64 initial_temperature);
    2161 
    2164  SearchMonitor* MakeGuidedLocalSearch(bool maximize, IntVar* const objective,
    2165  IndexEvaluator2 objective_function,
    2166  int64 step,
    2167  const std::vector<IntVar*>& vars,
    2168  double penalty_factor);
    2170  bool maximize, IntVar* const objective,
    2171  IndexEvaluator3 objective_function, int64 step,
    2172  const std::vector<IntVar*>& vars,
    2173  const std::vector<IntVar*>& secondary_vars, double penalty_factor);
    2174 
    2178  SearchMonitor* MakeLubyRestart(int scale_factor);
    2179 
    2182  SearchMonitor* MakeConstantRestart(int frequency);
    2183 
    2186  RegularLimit* MakeTimeLimit(int64 time_in_ms);
    2187 
    2190  RegularLimit* MakeBranchesLimit(int64 branches);
    2191 
    2194  RegularLimit* MakeFailuresLimit(int64 failures);
    2195 
    2198  RegularLimit* MakeSolutionsLimit(int64 solutions);
    2199 
    2202  RegularLimit* MakeLimit(int64 time, int64 branches, int64 failures,
    2203  int64 solutions);
    2206  RegularLimit* MakeLimit(int64 time, int64 branches, int64 failures,
    2207  int64 solutions, bool smart_time_check);
    2210  RegularLimit* MakeLimit(int64 time, int64 branches, int64 failures,
    2211  int64 solutions, bool smart_time_check,
    2212  bool cumulative);
    2214  RegularLimit* MakeLimit(const RegularLimitParameters& proto);
    2215 
    2217  RegularLimitParameters MakeDefaultRegularLimitParameters() const;
    2218 
    2222  SearchLimit* MakeLimit(SearchLimit* const limit_1,
    2223  SearchLimit* const limit_2);
    2224 
    2227  SearchLimit* MakeCustomLimit(std::function<bool()> limiter);
    2228 
    2229  // TODO(user): DEPRECATE API of MakeSearchLog(.., IntVar* var,..).
    2230 
    2233  SearchMonitor* MakeSearchLog(int branch_period);
    2234 
    2236  SearchMonitor* MakeSearchLog(int branch_period, IntVar* const var);
    2237 
    2240  SearchMonitor* MakeSearchLog(int branch_period,
    2241  std::function<std::string()> display_callback);
    2242 
    2245  SearchMonitor* MakeSearchLog(int branch_period, IntVar* var,
    2246  std::function<std::string()> display_callback);
    2247 
    2250  SearchMonitor* MakeSearchLog(int branch_period, OptimizeVar* const opt_var);
    2251 
    2254  SearchMonitor* MakeSearchLog(int branch_period, OptimizeVar* const opt_var,
    2255  std::function<std::string()> display_callback);
    2256 
    2261  int branch_period = 1;
    2265  IntVar* variable = nullptr;
    2269  double scaling_factor = 1.0;
    2270  double offset = 0;
    2273  std::function<std::string()> display_callback;
    2274  };
    2276 
    2279  SearchMonitor* MakeSearchTrace(const std::string& prefix);
    2280 
    2282  SearchMonitor* MakeEnterSearchCallback(std::function<void()> callback);
    2283  SearchMonitor* MakeExitSearchCallback(std::function<void()> callback);
    2284  SearchMonitor* MakeAtSolutionCallback(std::function<void()> callback);
    2285 
    2290 #if !defined(SWIG)
    2293  absl::flat_hash_map<const IntVar*, int>* const map);
    2294 #endif // !defined(SWIG)
    2295 
    2298  const std::vector<SymmetryBreaker*>& visitors);
    2301  SymmetryBreaker* const v2);
    2303  SymmetryBreaker* const v2,
    2304  SymmetryBreaker* const v3);
    2306  SymmetryBreaker* const v2,
    2307  SymmetryBreaker* const v3,
    2308  SymmetryBreaker* const v4);
    2309 
    2311  Decision* MakeAssignVariableValue(IntVar* const var, int64 val);
    2312  Decision* MakeVariableLessOrEqualValue(IntVar* const var, int64 value);
    2313  Decision* MakeVariableGreaterOrEqualValue(IntVar* const var, int64 value);
    2314  Decision* MakeSplitVariableDomain(IntVar* const var, int64 val,
    2315  bool start_with_lower_half);
    2316  Decision* MakeAssignVariableValueOrFail(IntVar* const var, int64 value);
    2317  Decision* MakeAssignVariableValueOrDoNothing(IntVar* const var, int64 value);
    2318  Decision* MakeAssignVariablesValues(const std::vector<IntVar*>& vars,
    2319  const std::vector<int64>& values);
    2321  Decision* MakeDecision(Action apply, Action refute);
    2322 
    2332  DecisionBuilder* const db2);
    2334  DecisionBuilder* const db2,
    2335  DecisionBuilder* const db3);
    2337  DecisionBuilder* const db2,
    2338  DecisionBuilder* const db3,
    2339  DecisionBuilder* const db4);
    2340  DecisionBuilder* Compose(const std::vector<DecisionBuilder*>& dbs);
    2341 
    2353  // TODO(user): The search tree can be balanced by using binary
    2358  DecisionBuilder* Try(DecisionBuilder* const db1, DecisionBuilder* const db2);
    2359  DecisionBuilder* Try(DecisionBuilder* const db1, DecisionBuilder* const db2,
    2360  DecisionBuilder* const db3);
    2361  DecisionBuilder* Try(DecisionBuilder* const db1, DecisionBuilder* const db2,
    2362  DecisionBuilder* const db3, DecisionBuilder* const db4);
    2363  DecisionBuilder* Try(const std::vector<DecisionBuilder*>& dbs);
    2364 
    2366  // TODO(user): name each of them differently, and document them (and do that
    2368  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2369  IntVarStrategy var_str, IntValueStrategy val_str);
    2370  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2371  IndexEvaluator1 var_evaluator,
    2372  IntValueStrategy val_str);
    2373 
    2374  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2375  IntVarStrategy var_str,
    2376  IndexEvaluator2 value_evaluator);
    2377 
    2380  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2381  IntVarStrategy var_str,
    2382  VariableValueComparator var_val1_val2_comparator);
    2383 
    2384  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2385  IndexEvaluator1 var_evaluator,
    2386  IndexEvaluator2 value_evaluator);
    2387 
    2388  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2389  IntVarStrategy var_str,
    2390  IndexEvaluator2 value_evaluator,
    2391  IndexEvaluator1 tie_breaker);
    2392 
    2393  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2394  IndexEvaluator1 var_evaluator,
    2395  IndexEvaluator2 value_evaluator,
    2396  IndexEvaluator1 tie_breaker);
    2397 
    2398  DecisionBuilder* MakeDefaultPhase(const std::vector<IntVar*>& vars);
    2399  DecisionBuilder* MakeDefaultPhase(const std::vector<IntVar*>& vars,
    2401 
    2403  DecisionBuilder* MakePhase(IntVar* const v0, IntVarStrategy var_str,
    2404  IntValueStrategy val_str);
    2405  DecisionBuilder* MakePhase(IntVar* const v0, IntVar* const v1,
    2406  IntVarStrategy var_str, IntValueStrategy val_str);
    2407  DecisionBuilder* MakePhase(IntVar* const v0, IntVar* const v1,
    2408  IntVar* const v2, IntVarStrategy var_str,
    2409  IntValueStrategy val_str);
    2410  DecisionBuilder* MakePhase(IntVar* const v0, IntVar* const v1,
    2411  IntVar* const v2, IntVar* const v3,
    2412  IntVarStrategy var_str, IntValueStrategy val_str);
    2413 
    2419  Decision* MakeScheduleOrPostpone(IntervalVar* const var, int64 est,
    2420  int64* const marker);
    2421 
    2427  Decision* MakeScheduleOrExpedite(IntervalVar* const var, int64 est,
    2428  int64* const marker);
    2429 
    2432  Decision* MakeRankFirstInterval(SequenceVar* const sequence, int index);
    2433 
    2436  Decision* MakeRankLastInterval(SequenceVar* const sequence, int index);
    2437 
    2443  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2445 
    2453  DecisionBuilder* MakePhase(const std::vector<IntVar*>& vars,
    2454  IndexEvaluator2 eval, IndexEvaluator1 tie_breaker,
    2455  EvaluatorStrategy str);
    2456 
    2458  DecisionBuilder* MakePhase(const std::vector<IntervalVar*>& intervals,
    2459  IntervalStrategy str);
    2460 
    2461  DecisionBuilder* MakePhase(const std::vector<SequenceVar*>& sequences,
    2462  SequenceStrategy str);
    2463 
    2467  Assignment* const assignment, DecisionBuilder* const db,
    2468  const std::vector<IntVar*>& vars);
    2469 
    2473 
    2480  SearchMonitor* const monitor1);
    2482  SearchMonitor* const monitor1,
    2483  SearchMonitor* const monitor2);
    2485  SearchMonitor* const monitor1,
    2486  SearchMonitor* const monitor2,
    2487  SearchMonitor* const monitor3);
    2489  SearchMonitor* const monitor1,
    2490  SearchMonitor* const monitor2,
    2491  SearchMonitor* const monitor3,
    2492  SearchMonitor* const monitor4);
    2494  const std::vector<SearchMonitor*>& monitors);
    2495 
    2504  Assignment* const solution, bool maximize,
    2505  int64 step);
    2507  Assignment* const solution, bool maximize,
    2508  int64 step,
    2509  SearchMonitor* const monitor1);
    2511  Assignment* const solution, bool maximize,
    2512  int64 step, SearchMonitor* const monitor1,
    2513  SearchMonitor* const monitor2);
    2515  Assignment* const solution, bool maximize,
    2516  int64 step, SearchMonitor* const monitor1,
    2517  SearchMonitor* const monitor2,
    2518  SearchMonitor* const monitor3);
    2520  Assignment* const solution, bool maximize,
    2521  int64 step, SearchMonitor* const monitor1,
    2522  SearchMonitor* const monitor2,
    2523  SearchMonitor* const monitor3,
    2524  SearchMonitor* const monitor4);
    2526  DecisionBuilder* const db, Assignment* const solution, bool maximize,
    2527  int64 step, const std::vector<SearchMonitor*>& monitors);
    2528 
    2532 
    2536 
    2538  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2540  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2541  const std::vector<IntVar*>& secondary_vars,
    2543  // TODO(user): Make the callback an IndexEvaluator2 when there are no
    2544  // secondary variables.
    2545  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2546  IndexEvaluator3 evaluator,
    2548  LocalSearchOperator* MakeOperator(const std::vector<IntVar*>& vars,
    2549  const std::vector<IntVar*>& secondary_vars,
    2550  IndexEvaluator3 evaluator,
    2552 
    2560  LocalSearchOperator* MakeRandomLnsOperator(const std::vector<IntVar*>& vars,
    2561  int number_of_variables);
    2562  LocalSearchOperator* MakeRandomLnsOperator(const std::vector<IntVar*>& vars,
    2563  int number_of_variables,
    2564  int32 seed);
    2565 
    2572 
    2580  const std::vector<IntVar*>& variables,
    2581  const std::vector<int64>& target_values);
    2582 
    2614  const std::vector<LocalSearchOperator*>& ops);
    2616  const std::vector<LocalSearchOperator*>& ops, bool restart);
    2618  const std::vector<LocalSearchOperator*>& ops,
    2619  std::function<int64(int, int)> evaluator);
    2623  const std::vector<LocalSearchOperator*>& ops);
    2624 
    2629  const std::vector<LocalSearchOperator*>& ops, int32 seed);
    2630 
    2637  int64 limit);
    2638 
    2663  // TODO(user): Make a variant which runs a local search after each
    2664  // solution found in a DFS.
    2665 
    2667  Assignment* const assignment,
    2668  LocalSearchPhaseParameters* const parameters);
    2670  const std::vector<IntVar*>& vars, DecisionBuilder* const first_solution,
    2671  LocalSearchPhaseParameters* const parameters);
    2674  const std::vector<IntVar*>& vars, DecisionBuilder* const first_solution,
    2675  DecisionBuilder* const first_solution_sub_decision_builder,
    2676  LocalSearchPhaseParameters* const parameters);
    2678  const std::vector<SequenceVar*>& vars,
    2679  DecisionBuilder* const first_solution,
    2680  LocalSearchPhaseParameters* const parameters);
    2681 
    2684 
    2686  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2687  IntVar* objective, LocalSearchOperator* const ls_operator,
    2688  DecisionBuilder* const sub_decision_builder);
    2689  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2690  IntVar* objective, LocalSearchOperator* const ls_operator,
    2691  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit);
    2692  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2693  IntVar* objective, LocalSearchOperator* const ls_operator,
    2694  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit,
    2695  const std::vector<LocalSearchFilter*>& filters);
    2696 
    2697  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2698  IntVar* objective, SolutionPool* const pool,
    2699  LocalSearchOperator* const ls_operator,
    2700  DecisionBuilder* const sub_decision_builder);
    2701  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2702  IntVar* objective, SolutionPool* const pool,
    2703  LocalSearchOperator* const ls_operator,
    2704  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit);
    2705  LocalSearchPhaseParameters* MakeLocalSearchPhaseParameters(
    2706  IntVar* objective, SolutionPool* const pool,
    2707  LocalSearchOperator* const ls_operator,
    2708  DecisionBuilder* const sub_decision_builder, RegularLimit* const limit,
    2709  const std::vector<LocalSearchFilter*>& filters);
    2710 
    2714  const std::vector<IntVar*>& vars, IndexEvaluator2 values,
    2715  Solver::LocalSearchFilterBound filter_enum);
    2717  const std::vector<IntVar*>& vars,
    2718  const std::vector<IntVar*>& secondary_vars, IndexEvaluator3 values,
    2719  Solver::LocalSearchFilterBound filter_enum);
    2720 
    2723  void TopPeriodicCheck();
    2727  int TopProgressPercent();
    2728 
    2732  void PushState();
    2733  void PopState();
    2734 
    2737  int SearchDepth() const;
    2738 
    2741  int SearchLeftDepth() const;
    2742 
    2745  int SolveDepth() const;
    2746 
    2749 
    2752 
    2754  template <class T>
    2755  void SaveAndSetValue(T* adr, T val) {
    2756  if (*adr != val) {
    2757  InternalSaveValue(adr);
    2758  *adr = val;
    2759  }
    2760  }
    2761 
    2763  template <class T>
    2764  void SaveAndAdd(T* adr, T val) {
    2765  if (val != 0) {
    2766  InternalSaveValue(adr);
    2767  (*adr) += val;
    2768  }
    2769  }
    2770 
    2772  int64 Rand64(int64 size) { return random_.Next64() % size; }
    2773 
    2775  int32 Rand32(int32 size) { return random_.Next() % size; }
    2776 
    2778  void ReSeed(int32 seed) { random_.Reset(seed); }
    2779 
    2783  void ExportProfilingOverview(const std::string& filename);
    2784 
    2786  // TODO(user): Add a profiling protocol buffer and merge demon and local
    2788  std::string LocalSearchProfile() const;
    2789 
    2793  bool CurrentlyInSolve() const;
    2794 
    2797  int constraints() const { return constraints_list_.size(); }
    2798 
    2800  void Accept(ModelVisitor* const visitor) const;
    2801 
    2802  Decision* balancing_decision() const { return balancing_decision_.get(); }
    2803 
    2805 #if !defined(SWIG)
    2806  void set_fail_intercept(std::function<void()> fail_intercept) {
    2807  fail_intercept_ = std::move(fail_intercept);
    2808  }
    2809 #endif // !defined(SWIG)
    2810  void clear_fail_intercept() { fail_intercept_ = nullptr; }
    2812  DemonProfiler* demon_profiler() const { return demon_profiler_; }
    2813  // TODO(user): Get rid of the following methods once fast local search is
    2816  void SetUseFastLocalSearch(bool use_fast_local_search) {
    2817  use_fast_local_search_ = use_fast_local_search;
    2818  }
    2820  bool UseFastLocalSearch() const { return use_fast_local_search_; }
    2822  bool HasName(const PropagationBaseObject* object) const;
    2824  Demon* RegisterDemon(Demon* const demon);
    2826  IntExpr* RegisterIntExpr(IntExpr* const expr);
    2828  IntVar* RegisterIntVar(IntVar* const var);
    2832 
    2834  Search* ActiveSearch() const;
    2836  ModelCache* Cache() const;
    2838  bool InstrumentsDemons() const;
    2840  bool IsProfilingEnabled() const;
    2842  bool IsLocalSearchProfilingEnabled() const;
    2844  bool InstrumentsVariables() const;
    2846  bool NameAllVariables() const;
    2848  std::string model_name() const;
    2853  void AddPropagationMonitor(PropagationMonitor* const monitor);
    2859  void SetSearchContext(Search* search, const std::string& search_context);
    2860  std::string SearchContext() const;
    2861  std::string SearchContext(const Search* search) const;
    2863  // TODO(user): Investigate if this should be moved to Search.
    2866  void ClearLocalSearchState() { local_search_state_.reset(nullptr); }
    2867 
    2872  std::vector<int64> tmp_vector_;
    2873 
    2874  friend class BaseIntExpr;
    2875  friend class Constraint;
    2876  friend class DemonProfiler;
    2877  friend class FindOneNeighbor;
    2878  friend class IntVar;
    2880  friend class Queue;
    2881  friend class SearchMonitor;
    2882  friend class SearchLimit;
    2883  friend class RoutingModel;
    2884  friend class LocalSearchProfiler;
    2885 
    2886 #if !defined(SWIG)
    2887  friend void InternalSaveBooleanVarValue(Solver* const, IntVar* const);
    2888  template <class>
    2889  friend class SimpleRevFIFO;
    2890  template <class K, class V>
    2891  friend class RevImmutableMultiMap;
    2892 
    2897  bool IsBooleanVar(IntExpr* const expr, IntVar** inner_var,
    2898  bool* is_negated) const;
    2899 
    2904  bool IsProduct(IntExpr* const expr, IntExpr** inner_expr, int64* coefficient);
    2905 #endif
    2906 
    2907  IntExpr* CastExpression(const IntVar* const var) const;
    2910 
    2912  void FinishCurrentSearch();
    2913  void RestartCurrentSearch();
    2914 
    2917  void ShouldFail() { should_fail_ = true; }
    2918  void CheckFail() {
    2919  if (!should_fail_) return;
    2920  should_fail_ = false;
    2921  Fail();
    2922  }
    2923 
    2924  private:
    2925  void Init();
    2926  void PushState(MarkerType t, const StateInfo& info);
    2927  MarkerType PopState(StateInfo* info);
    2928  void PushSentinel(int magic_code);
    2929  void BacktrackToSentinel(int magic_code);
    2930  void ProcessConstraints();
    2931  bool BacktrackOneLevel(Decision** fail_decision);
    2932  void JumpToSentinelWhenNested();
    2933  void JumpToSentinel();
    2934  void check_alloc_state();
    2935  void FreezeQueue();
    2936  void EnqueueVar(Demon* const d);
    2937  void EnqueueDelayedDemon(Demon* const d);
    2938  void ExecuteAll(const SimpleRevFIFO<Demon*>& demons);
    2939  void EnqueueAll(const SimpleRevFIFO<Demon*>& demons);
    2940  void UnfreezeQueue();
    2941  void reset_action_on_fail();
    2942  void set_action_on_fail(Action a);
    2943  void set_variable_to_clean_on_fail(IntVar* v);
    2944  void IncrementUncheckedSolutionCounter();
    2945  bool IsUncheckedSolutionLimitReached();
    2946 
    2947  void InternalSaveValue(int* valptr);
    2948  void InternalSaveValue(int64* valptr);
    2949  void InternalSaveValue(uint64* valptr);
    2950  void InternalSaveValue(double* valptr);
    2951  void InternalSaveValue(bool* valptr);
    2952  void InternalSaveValue(void** valptr);
    2953  void InternalSaveValue(int64** valptr) {
    2954  InternalSaveValue(reinterpret_cast<void**>(valptr));
    2955  }
    2956 
    2957  BaseObject* SafeRevAlloc(BaseObject* ptr);
    2958 
    2959  int* SafeRevAllocArray(int* ptr);
    2960  int64* SafeRevAllocArray(int64* ptr);
    2961  uint64* SafeRevAllocArray(uint64* ptr);
    2962  double* SafeRevAllocArray(double* ptr);
    2963  BaseObject** SafeRevAllocArray(BaseObject** ptr);
    2964  IntVar** SafeRevAllocArray(IntVar** ptr);
    2965  IntExpr** SafeRevAllocArray(IntExpr** ptr);
    2966  Constraint** SafeRevAllocArray(Constraint** ptr);
    2969  void* UnsafeRevAllocAux(void* ptr);
    2970  template <class T>
    2971  T* UnsafeRevAlloc(T* ptr) {
    2972  return reinterpret_cast<T*>(
    2973  UnsafeRevAllocAux(reinterpret_cast<void*>(ptr)));
    2974  }
    2975  void** UnsafeRevAllocArrayAux(void** ptr);
    2976  template <class T>
    2977  T** UnsafeRevAllocArray(T** ptr) {
    2978  return reinterpret_cast<T**>(
    2979  UnsafeRevAllocArrayAux(reinterpret_cast<void**>(ptr)));
    2980  }
    2981 
    2982  void InitCachedIntConstants();
    2983  void InitCachedConstraint();
    2984 
    2988  Search* TopLevelSearch() const { return searches_.at(1); }
    2992  Search* ParentSearch() const {
    2993  const size_t search_size = searches_.size();
    2994  DCHECK_GT(search_size, 1);
    2995  return searches_[search_size - 2];
    2996  }
    2997 
    2999  std::string GetName(const PropagationBaseObject* object);
    3000  void SetName(const PropagationBaseObject* object, const std::string& name);
    3001 
    3004  int GetNewIntVarIndex() { return num_int_vars_++; }
    3005 
    3007  bool IsADifference(IntExpr* expr, IntExpr** const left,
    3008  IntExpr** const right);
    3009 
    3010  const std::string name_;
    3011  const ConstraintSolverParameters parameters_;
    3012  absl::flat_hash_map<const PropagationBaseObject*, std::string>
    3013  propagation_object_names_;
    3014  absl::flat_hash_map<const PropagationBaseObject*, IntegerCastInfo>
    3015  cast_information_;
    3016  absl::flat_hash_set<const Constraint*> cast_constraints_;
    3017  const std::string empty_name_;
    3018  std::unique_ptr<Queue> queue_;
    3019  std::unique_ptr<Trail> trail_;
    3020  std::vector<Constraint*> constraints_list_;
    3021  std::vector<Constraint*> additional_constraints_list_;
    3022  std::vector<int> additional_constraints_parent_list_;
    3023  SolverState state_;
    3024  int64 branches_;
    3025  int64 fails_;
    3026  int64 decisions_;
    3027  int64 demon_runs_[kNumPriorities];
    3028  int64 neighbors_;
    3029  int64 filtered_neighbors_;
    3030  int64 accepted_neighbors_;
    3031  OptimizationDirection optimization_direction_;
    3032  std::unique_ptr<ClockTimer> timer_;
    3033  std::vector<Search*> searches_;
    3034  ACMRandom random_;
    3035  uint64 fail_stamp_;
    3036  std::unique_ptr<Decision> balancing_decision_;
    3038  std::function<void()> fail_intercept_;
    3040  DemonProfiler* const demon_profiler_;
    3042  bool use_fast_local_search_;
    3044  LocalSearchProfiler* const local_search_profiler_;
    3046  std::unique_ptr<Assignment> local_search_state_;
    3047 
    3049  enum { MIN_CACHED_INT_CONST = -8, MAX_CACHED_INT_CONST = 8 };
    3050  IntVar* cached_constants_[MAX_CACHED_INT_CONST + 1 - MIN_CACHED_INT_CONST];
    3051 
    3053  Constraint* true_constraint_;
    3054  Constraint* false_constraint_;
    3055 
    3056  std::unique_ptr<Decision> fail_decision_;
    3057  int constraint_index_;
    3058  int additional_constraint_index_;
    3059  int num_int_vars_;
    3060 
    3061  std::unique_ptr<ModelCache> model_cache_;
    3062  std::unique_ptr<PropagationMonitor> propagation_monitor_;
    3063  PropagationMonitor* print_trace_;
    3064  std::unique_ptr<LocalSearchMonitor> local_search_monitor_;
    3065  int anonymous_variable_index_;
    3066  bool should_fail_;
    3067 
    3068  DISALLOW_COPY_AND_ASSIGN(Solver);
    3069 };
    3070 
    3071 std::ostream& operator<<(std::ostream& out, const Solver* const s);
    3072 
    3076 inline int64 Zero() { return 0; }
    3077 
    3079 inline int64 One() { return 1; }
    3080 
    3084 class BaseObject {
    3085  public:
    3087  virtual ~BaseObject() {}
    3088  virtual std::string DebugString() const { return "BaseObject"; }
    3089 
    3090  private:
    3091  DISALLOW_COPY_AND_ASSIGN(BaseObject);
    3092 };
    3093 
    3094 std::ostream& operator<<(std::ostream& out, const BaseObject* o);
    3095 
    3100  public:
    3101  explicit PropagationBaseObject(Solver* const s) : solver_(s) {}
    3103 
    3104  std::string DebugString() const override {
    3105  if (name().empty()) {
    3106  return "PropagationBaseObject";
    3107  } else {
    3108  return absl::StrFormat("PropagationBaseObject: %s", name());
    3109  }
    3110  }
    3111  Solver* solver() const { return solver_; }
    3112 
    3115  void FreezeQueue() { solver_->FreezeQueue(); }
    3116 
    3119  void UnfreezeQueue() { solver_->UnfreezeQueue(); }
    3120 
    3124  void EnqueueDelayedDemon(Demon* const d) { solver_->EnqueueDelayedDemon(d); }
    3125  void EnqueueVar(Demon* const d) { solver_->EnqueueVar(d); }
    3126  void ExecuteAll(const SimpleRevFIFO<Demon*>& demons);
    3127  void EnqueueAll(const SimpleRevFIFO<Demon*>& demons);
    3128 
    3129 #if !defined(SWIG)
    3130  // This method sets a callback that will be called if a failure
    3131  // happens during the propagation of the queue.
    3133  solver_->set_action_on_fail(std::move(a));
    3134  }
    3135 #endif // !defined(SWIG)
    3136 
    3138  void reset_action_on_fail() { solver_->reset_action_on_fail(); }
    3139 
    3142  solver_->set_variable_to_clean_on_fail(v);
    3143  }
    3144 
    3146  virtual std::string name() const;
    3147  void set_name(const std::string& name);
    3149  bool HasName() const;
    3151  virtual std::string BaseName() const;
    3152 
    3153  private:
    3154  Solver* const solver_;
    3155  DISALLOW_COPY_AND_ASSIGN(PropagationBaseObject);
    3156 };
    3157 
    3160 class Decision : public BaseObject {
    3161  public:
    3163  ~Decision() override {}
    3164 
    3166  virtual void Apply(Solver* const s) = 0;
    3167 
    3169  virtual void Refute(Solver* const s) = 0;
    3170 
    3171  std::string DebugString() const override { return "Decision"; }
    3173  virtual void Accept(DecisionVisitor* const visitor) const;
    3174 
    3175  private:
    3176  DISALLOW_COPY_AND_ASSIGN(Decision);
    3177 };
    3178 
    3181 class DecisionVisitor : public BaseObject {
    3182  public:
    3184  ~DecisionVisitor() override {}
    3185  virtual void VisitSetVariableValue(IntVar* const var, int64 value);
    3186  virtual void VisitSplitVariableDomain(IntVar* const var, int64 value,
    3187  bool start_with_lower_half);
    3188  virtual void VisitScheduleOrPostpone(IntervalVar* const var, int64 est);
    3189  virtual void VisitScheduleOrExpedite(IntervalVar* const var, int64 est);
    3190  virtual void VisitRankFirstInterval(SequenceVar* const sequence, int index);
    3191  virtual void VisitRankLastInterval(SequenceVar* const sequence, int index);
    3192  virtual void VisitUnknownDecision();
    3193 
    3194  private:
    3195  DISALLOW_COPY_AND_ASSIGN(DecisionVisitor);
    3196 };
    3197 
    3200 class DecisionBuilder : public BaseObject {
    3201  public:
    3203  ~DecisionBuilder() override {}
    3208  virtual Decision* Next(Solver* const s) = 0;
    3209  std::string DebugString() const override;
    3210 #if !defined(SWIG)
    3211  virtual void AppendMonitors(Solver* const solver,
    3216  std::vector<SearchMonitor*>* const extras);
    3217  virtual void Accept(ModelVisitor* const visitor) const;
    3218 #endif
    3219 
    3220  private:
    3221  DISALLOW_COPY_AND_ASSIGN(DecisionBuilder);
    3222 };
    3223 
    3233 class Demon : public BaseObject {
    3234  public:
    3237  Demon() : stamp_(GG_ULONGLONG(0)) {}
    3238  ~Demon() override {}
    3239 
    3241  virtual void Run(Solver* const s) = 0;
    3242 
    3246  virtual Solver::DemonPriority priority() const;
    3247 
    3248  std::string DebugString() const override;
    3249 
    3252  void inhibit(Solver* const s);
    3253 
    3255  void desinhibit(Solver* const s);
    3256 
    3257  private:
    3258  friend class Queue;
    3259  void set_stamp(int64 stamp) { stamp_ = stamp; }
    3260  uint64 stamp() const { return stamp_; }
    3261  uint64 stamp_;
    3262  DISALLOW_COPY_AND_ASSIGN(Demon);
    3263 };
    3264 
    3266 class ModelVisitor : public BaseObject {
    3267  public:
    3269  static const char kAbs[];
    3270  static const char kAbsEqual[];
    3271  static const char kAllDifferent[];
    3272  static const char kAllowedAssignments[];
    3273  static const char kAtMost[];
    3274  static const char kIndexOf[];
    3275  static const char kBetween[];
    3276  static const char kConditionalExpr[];
    3277  static const char kCircuit[];
    3278  static const char kConvexPiecewise[];
    3279  static const char kCountEqual[];
    3280  static const char kCover[];
    3281  static const char kCumulative[];
    3282  static const char kDeviation[];
    3283  static const char kDifference[];
    3284  static const char kDisjunctive[];
    3285  static const char kDistribute[];
    3286  static const char kDivide[];
    3287  static const char kDurationExpr[];
    3288  static const char kElement[];
    3289  static const char kElementEqual[];
    3290  static const char kEndExpr[];
    3291  static const char kEquality[];
    3292  static const char kFalseConstraint[];
    3293  static const char kGlobalCardinality[];
    3294  static const char kGreater[];
    3295  static const char kGreaterOrEqual[];
    3296  static const char kIntegerVariable[];
    3297  static const char kIntervalBinaryRelation[];
    3298  static const char kIntervalDisjunction[];
    3299  static const char kIntervalUnaryRelation[];
    3300  static const char kIntervalVariable[];
    3301  static const char kInversePermutation[];
    3302  static const char kIsBetween[];
    3303  static const char kIsDifferent[];
    3304  static const char kIsEqual[];
    3305  static const char kIsGreater[];
    3306  static const char kIsGreaterOrEqual[];
    3307  static const char kIsLess[];
    3308  static const char kIsLessOrEqual[];
    3309  static const char kIsMember[];
    3310  static const char kLess[];
    3311  static const char kLessOrEqual[];
    3312  static const char kLexLess[];
    3313  static const char kLinkExprVar[];
    3314  static const char kMapDomain[];
    3315  static const char kMax[];
    3316  static const char kMaxEqual[];
    3317  static const char kMember[];
    3318  static const char kMin[];
    3319  static const char kMinEqual[];
    3320  static const char kModulo[];
    3321  static const char kNoCycle[];
    3322  static const char kNonEqual[];
    3323  static const char kNotBetween[];
    3324  static const char kNotMember[];
    3325  static const char kNullIntersect[];
    3326  static const char kOpposite[];
    3327  static const char kPack[];
    3328  static const char kPathCumul[];
    3329  static const char kDelayedPathCumul[];
    3330  static const char kPerformedExpr[];
    3331  static const char kPower[];
    3332  static const char kProduct[];
    3333  static const char kScalProd[];
    3334  static const char kScalProdEqual[];
    3335  static const char kScalProdGreaterOrEqual[];
    3336  static const char kScalProdLessOrEqual[];
    3337  static const char kSemiContinuous[];
    3338  static const char kSequenceVariable[];
    3339  static const char kSortingConstraint[];
    3340  static const char kSquare[];
    3341  static const char kStartExpr[];
    3342  static const char kSum[];
    3343  static const char kSumEqual[];
    3344  static const char kSumGreaterOrEqual[];
    3345  static const char kSumLessOrEqual[];
    3346  static const char kTrace[];
    3347  static const char kTransition[];
    3348  static const char kTrueConstraint[];
    3349  static const char kVarBoundWatcher[];
    3350  static const char kVarValueWatcher[];
    3351 
    3353  static const char kCountAssignedItemsExtension[];
    3354  static const char kCountUsedBinsExtension[];
    3355  static const char kInt64ToBoolExtension[];
    3356  static const char kInt64ToInt64Extension[];
    3357  static const char kObjectiveExtension[];
    3358  static const char kSearchLimitExtension[];
    3359  static const char kUsageEqualVariableExtension[];
    3360 
    3361  static const char kUsageLessConstantExtension[];
    3362  static const char kVariableGroupExtension[];
    3365 
    3367  static const char kActiveArgument[];
    3368  static const char kAssumePathsArgument[];
    3369  static const char kBranchesLimitArgument[];
    3370  static const char kCapacityArgument[];
    3371  static const char kCardsArgument[];
    3372  static const char kCoefficientsArgument[];
    3373  static const char kCountArgument[];
    3374  static const char kCumulativeArgument[];
    3375  static const char kCumulsArgument[];
    3376  static const char kDemandsArgument[];
    3377  static const char kDurationMaxArgument[];
    3378  static const char kDurationMinArgument[];
    3379  static const char kEarlyCostArgument[];
    3380  static const char kEarlyDateArgument[];
    3381  static const char kEndMaxArgument[];
    3382  static const char kEndMinArgument[];
    3383  static const char kEndsArgument[];
    3384  static const char kExpressionArgument[];
    3385  static const char kFailuresLimitArgument[];
    3386  static const char kFinalStatesArgument[];
    3387  static const char kFixedChargeArgument[];
    3388  static const char kIndex2Argument[];
    3389  static const char kIndexArgument[];
    3390  static const char kInitialState[];
    3391  static const char kIntervalArgument[];
    3392  static const char kIntervalsArgument[];
    3393  static const char kLateCostArgument[];
    3394  static const char kLateDateArgument[];
    3395  static const char kLeftArgument[];
    3396  static const char kMaxArgument[];
    3397  static const char kMaximizeArgument[];
    3398  static const char kMinArgument[];
    3399  static const char kModuloArgument[];
    3400  static const char kNextsArgument[];
    3401  static const char kOptionalArgument[];
    3402  static const char kPartialArgument[];
    3403  static const char kPositionXArgument[];
    3404  static const char kPositionYArgument[];
    3405  static const char kRangeArgument[];
    3406  static const char kRelationArgument[];
    3407  static const char kRightArgument[];
    3408  static const char kSequenceArgument[];
    3409  static const char kSequencesArgument[];
    3410  static const char kSizeArgument[];
    3411  static const char kSizeXArgument[];
    3412  static const char kSizeYArgument[];
    3413  static const char kSmartTimeCheckArgument[];
    3414  static const char kSolutionLimitArgument[];
    3415  static const char kStartMaxArgument[];
    3416  static const char kStartMinArgument[];
    3417  static const char kStartsArgument[];
    3418  static const char kStepArgument[];
    3419  static const char kTargetArgument[];
    3420  static const char kTimeLimitArgument[];
    3421  static const char kTransitsArgument[];
    3422  static const char kTuplesArgument[];
    3423  static const char kValueArgument[];
    3424  static const char kValuesArgument[];
    3425  static const char kVariableArgument[];
    3426  static const char kVarsArgument[];
    3427  static const char kEvaluatorArgument[];
    3428 
    3430  static const char kMirrorOperation[];
    3431  static const char kRelaxedMaxOperation[];
    3432  static const char kRelaxedMinOperation[];
    3433  static const char kSumOperation[];
    3434  static const char kDifferenceOperation[];
    3435  static const char kProductOperation[];
    3436  static const char kStartSyncOnStartOperation[];
    3437  static const char kStartSyncOnEndOperation[];
    3438  static const char kTraceOperation[];
    3439 
    3440  ~ModelVisitor() override;
    3441 
    3443 
    3445  virtual void BeginVisitModel(const std::string& solver_name);
    3446  virtual void EndVisitModel(const std::string& solver_name);
    3447  virtual void BeginVisitConstraint(const std::string& type_name,
    3448  const Constraint* const constraint);
    3449  virtual void EndVisitConstraint(const std::string& type_name,
    3450  const Constraint* const constraint);
    3451  virtual void BeginVisitExtension(const std::string& type);
    3452  virtual void EndVisitExtension(const std::string& type);
    3453  virtual void BeginVisitIntegerExpression(const std::string& type_name,
    3454  const IntExpr* const expr);
    3455  virtual void EndVisitIntegerExpression(const std::string& type_name,
    3456  const IntExpr* const expr);
    3457  virtual void VisitIntegerVariable(const IntVar* const variable,
    3458  IntExpr* const delegate);
    3459  virtual void VisitIntegerVariable(const IntVar* const variable,
    3460  const std::string& operation, int64 value,
    3461  IntVar* const delegate);
    3462  virtual void VisitIntervalVariable(const IntervalVar* const variable,
    3463  const std::string& operation, int64 value,
    3464  IntervalVar* const delegate);
    3465  virtual void VisitSequenceVariable(const SequenceVar* const variable);
    3466 
    3468  virtual void VisitIntegerArgument(const std::string& arg_name, int64 value);
    3469  virtual void VisitIntegerArrayArgument(const std::string& arg_name,
    3470  const std::vector<int64>& values);
    3471  virtual void VisitIntegerMatrixArgument(const std::string& arg_name,
    3472  const IntTupleSet& tuples);
    3473 
    3475  virtual void VisitIntegerExpressionArgument(const std::string& arg_name,
    3476  IntExpr* const argument);
    3477 
    3478  virtual void VisitIntegerVariableArrayArgument(
    3479  const std::string& arg_name, const std::vector<IntVar*>& arguments);
    3480 
    3482  virtual void VisitIntervalArgument(const std::string& arg_name,
    3483  IntervalVar* const argument);
    3484 
    3485  virtual void VisitIntervalArrayArgument(
    3486  const std::string& arg_name, const std::vector<IntervalVar*>& arguments);
    3488  virtual void VisitSequenceArgument(const std::string& arg_name,
    3489  SequenceVar* const argument);
    3490 
    3491  virtual void VisitSequenceArrayArgument(
    3492  const std::string& arg_name, const std::vector<SequenceVar*>& arguments);
    3493 #if !defined(SWIG)
    3496  const std::string& arg_name, const Solver::Int64ToIntVar& arguments);
    3497 
    3500  void VisitInt64ToBoolExtension(Solver::IndexFilter1 filter, int64 index_min,
    3501  int64 index_max);
    3503  int64 index_min, int64 index_max);
    3506  const std::string& arg_name, int64 index_max);
    3507 #endif // #if !defined(SWIG)
    3508 };
    3509 
    3517  public:
    3519  ~Constraint() override {}
    3520 
    3523  virtual void Post() = 0;
    3524 
    3527  virtual void InitialPropagate() = 0;
    3528  std::string DebugString() const override;
    3529 
    3532  void PostAndPropagate();
    3533 
    3535  virtual void Accept(ModelVisitor* const visitor) const;
    3536 
    3538  bool IsCastConstraint() const;
    3539 
    3543  virtual IntVar* Var();
    3544 
    3545  private:
    3546  DISALLOW_COPY_AND_ASSIGN(Constraint);
    3547 };
    3548 
    3552 class CastConstraint : public Constraint {
    3553  public:
    3556  CHECK(target_var != nullptr);
    3557  }
    3558  ~CastConstraint() override {}
    3559 
    3560  IntVar* target_var() const { return target_var_; }
    3561 
    3562  protected:
    3564 };
    3565 
    3567 class SearchMonitor : public BaseObject {
    3568  public:
    3569  static const int kNoProgress = -1;
    3570 
    3571  explicit SearchMonitor(Solver* const s) : solver_(s) {}
    3572  ~SearchMonitor() override {}
    3574  virtual void EnterSearch();
    3575 
    3577  virtual void RestartSearch();
    3578 
    3580  virtual void ExitSearch();
    3581 
    3583  virtual void BeginNextDecision(DecisionBuilder* const b);
    3584 
    3586  virtual void EndNextDecision(DecisionBuilder* const b, Decision* const d);
    3587 
    3589  virtual void ApplyDecision(Decision* const d);
    3590 
    3592  virtual void RefuteDecision(Decision* const d);
    3593 
    3596  virtual void AfterDecision(Decision* const d, bool apply);
    3597 
    3599  virtual void BeginFail();
    3600 
    3602  virtual void EndFail();
    3603 
    3605  virtual void BeginInitialPropagation();
    3606 
    3608  virtual void EndInitialPropagation();
    3609 
    3613  virtual bool AcceptSolution();
    3614 
    3618  virtual bool AtSolution();
    3619 
    3621  virtual void NoMoreSolutions();
    3622 
    3625  virtual bool LocalOptimum();
    3626 
    3628  virtual bool AcceptDelta(Assignment* delta, Assignment* deltadelta);
    3629 
    3631  virtual void AcceptNeighbor();
    3632 
    3634  virtual void AcceptUncheckedNeighbor();
    3635 
    3638  virtual bool IsUncheckedSolutionLimitReached() { return false; }
    3639 
    3640  Solver* solver() const { return solver_; }
    3641 
    3643  virtual void PeriodicCheck();
    3644 
    3647  virtual int ProgressPercent() { return kNoProgress; }
    3648 
    3650  virtual void Accept(ModelVisitor* const visitor) const;
    3651 
    3654  virtual void Install();
    3655 
    3656  private:
    3657  Solver* const solver_;
    3658  DISALLOW_COPY_AND_ASSIGN(SearchMonitor);
    3659 };
    3660 
    3666 template <class T>
    3667 class Rev {
    3668  public:
    3669  explicit Rev(const T& val) : stamp_(0), value_(val) {}
    3670 
    3671  const T& Value() const { return value_; }
    3672 
    3673  void SetValue(Solver* const s, const T& val) {
    3674  if (val != value_) {
    3675  if (stamp_ < s->stamp()) {
    3676  s->SaveValue(&value_);
    3677  stamp_ = s->stamp();
    3678  }
    3679  value_ = val;
    3680  }
    3681  }
    3682 
    3683  private:
    3684  uint64 stamp_;
    3685  T value_;
    3686 };
    3687 
    3689 template <class T>
    3690 class NumericalRev : public Rev<T> {
    3691  public:
    3692  explicit NumericalRev(const T& val) : Rev<T>(val) {}
    3693 
    3694  void Add(Solver* const s, const T& to_add) {
    3695  this->SetValue(s, this->Value() + to_add);
    3696  }
    3697 
    3698  void Incr(Solver* const s) { Add(s, 1); }
    3699 
    3700  void Decr(Solver* const s) { Add(s, -1); }
    3701 };
    3702 
    3708 template <class T>
    3709 class RevArray {
    3710  public:
    3711  RevArray(int size, const T& val)
    3712  : stamps_(new uint64[size]), values_(new T[size]), size_(size) {
    3713  for (int i = 0; i < size; ++i) {
    3714  stamps_[i] = 0;
    3715  values_[i] = val;
    3716  }
    3717  }
    3718 
    3720 
    3721  int64 size() const { return size_; }
    3722 
    3723  const T& Value(int index) const { return values_[index]; }
    3724 
    3725 #if !defined(SWIG)
    3726  const T& operator[](int index) const { return values_[index]; }
    3727 #endif
    3728 
    3729  void SetValue(Solver* const s, int index, const T& val) {
    3730  DCHECK_LT(index, size_);
    3731  if (val != values_[index]) {
    3732  if (stamps_[index] < s->stamp()) {
    3733  s->SaveValue(&values_[index]);
    3734  stamps_[index] = s->stamp();
    3735  }
    3736  values_[index] = val;
    3737  }
    3738  }
    3739 
    3740  private:
    3741  std::unique_ptr<uint64[]> stamps_;
    3742  std::unique_ptr<T[]> values_;
    3743  const int size_;
    3744 };
    3745 
    3747 template <class T>
    3748 class NumericalRevArray : public RevArray<T> {
    3749  public:
    3750  NumericalRevArray(int size, const T& val) : RevArray<T>(size, val) {}
    3751 
    3752  void Add(Solver* const s, int index, const T& to_add) {
    3753  this->SetValue(s, index, this->Value(index) + to_add);
    3754  }
    3755 
    3756  void Incr(Solver* const s, int index) { Add(s, index, 1); }
    3757 
    3758  void Decr(Solver* const s, int index) { Add(s, index, -1); }
    3759 };
    3760 
    3769  public:
    3770  explicit IntExpr(Solver* const s) : PropagationBaseObject(s) {}
    3771  ~IntExpr() override {}
    3772 
    3773  virtual int64 Min() const = 0;
    3774  virtual void SetMin(int64 m) = 0;
    3775  virtual int64 Max() const = 0;
    3776  virtual void SetMax(int64 m) = 0;
    3777 
    3780  virtual void Range(int64* l, int64* u) {
    3781  *l = Min();
    3782  *u = Max();
    3783  }
    3785  virtual void SetRange(int64 l, int64 u) {
    3786  SetMin(l);
    3787  SetMax(u);
    3788  }
    3789 
    3791  virtual void SetValue(int64 v) { SetRange(v, v); }
    3792 
    3794  virtual bool Bound() const { return (Min() == Max()); }
    3795 
    3797  virtual bool IsVar() const { return false; }
    3798 
    3800  virtual IntVar* Var() = 0;
    3801 
    3806  IntVar* VarWithName(const std::string& name);
    3807 
    3809  virtual void WhenRange(Demon* d) = 0;
    3811  void WhenRange(Solver::Closure closure) {
    3812  WhenRange(solver()->MakeClosureDemon(std::move(closure)));
    3813  }
    3814 
    3815 #if !defined(SWIG)
    3816  void WhenRange(Solver::Action action) {
    3818  WhenRange(solver()->MakeActionDemon(std::move(action)));
    3819  }
    3820 #endif // SWIG
    3821 
    3823  virtual void Accept(ModelVisitor* const visitor) const;
    3824 
    3825  private:
    3826  DISALLOW_COPY_AND_ASSIGN(IntExpr);
    3827 };
    3828 
    3836 
    3839 
    3845 
    3846 class IntVarIterator : public BaseObject {
    3847  public:
    3848  ~IntVarIterator() override {}
    3849 
    3851  virtual void Init() = 0;
    3852 
    3854  virtual bool Ok() const = 0;
    3855 
    3857  virtual int64 Value() const = 0;
    3858 
    3860  virtual void Next() = 0;
    3861 
    3863  std::string DebugString() const override { return "IntVar::Iterator"; }
    3864 };
    3865 
    3866 #ifndef SWIG
    3867 class InitAndGetValues {
    3874  public:
    3876  : it_(it), begin_was_called_(false) {
    3877  it_->Init();
    3878  }
    3879  struct Iterator;
    3881  if (DEBUG_MODE) {
    3882  DCHECK(!begin_was_called_);
    3883  begin_was_called_ = true;
    3884  }
    3885  return Iterator::Begin(it_);
    3886  }
    3887  Iterator end() { return Iterator::End(it_); }
    3888 
    3889  struct Iterator {
    3892  return Iterator(it, /*is_end=*/false);
    3893  }
    3895  return Iterator(it, /*is_end=*/true);
    3896  }
    3897 
    3898  int64 operator*() const {
    3899  DCHECK(it_->Ok());
    3900  return it_->Value();
    3901  }
    3903  DCHECK(it_->Ok());
    3904  it_->Next();
    3905  return *this;
    3906  }
    3907  bool operator!=(const Iterator& other) const {
    3908  DCHECK(other.it_ == it_);
    3909  DCHECK(other.is_end_);
    3910  return it_->Ok();
    3911  }
    3912 
    3913  private:
    3914  Iterator(IntVarIterator* it, bool is_end) : it_(it), is_end_(is_end) {}
    3915 
    3916  IntVarIterator* const it_;
    3917  const bool is_end_;
    3918  };
    3919 
    3920  private:
    3921  IntVarIterator* const it_;
    3922  bool begin_was_called_;
    3923 };
    3924 #endif // SWIG
    3925 
    3929 class IntVar : public IntExpr {
    3930  public:
    3931  explicit IntVar(Solver* const s);
    3932  IntVar(Solver* const s, const std::string& name);
    3933  ~IntVar() override {}
    3934 
    3935  bool IsVar() const override { return true; }
    3936  IntVar* Var() override { return this; }
    3937 
    3940  virtual int64 Value() const = 0;
    3941 
    3943  virtual void RemoveValue(int64 v) = 0;
    3944 
    3947  virtual void RemoveInterval(int64 l, int64 u) = 0;
    3948 
    3950  virtual void RemoveValues(const std::vector<int64>& values);
    3951 
    3953  virtual void SetValues(const std::vector<int64>& values);
    3954 
    3957  virtual void WhenBound(Demon* d) = 0;
    3960  void WhenBound(Solver::Closure closure) {
    3961  WhenBound(solver()->MakeClosureDemon(std::move(closure)));
    3962  }
    3963 
    3964 #if !defined(SWIG)
    3965  void WhenBound(Solver::Action action) {
    3968  WhenBound(solver()->MakeActionDemon(std::move(action)));
    3969  }
    3970 #endif // SWIG
    3971 
    3974  virtual void WhenDomain(Demon* d) = 0;
    3977  void WhenDomain(Solver::Closure closure) {
    3978  WhenDomain(solver()->MakeClosureDemon(std::move(closure)));
    3979  }
    3980 #if !defined(SWIG)
    3981  void WhenDomain(Solver::Action action) {
    3984  WhenDomain(solver()->MakeActionDemon(std::move(action)));
    3985  }
    3986 #endif // SWIG
    3987 
    3989  virtual uint64 Size() const = 0;
    3990 
    3993  virtual bool Contains(int64 v) const = 0;
    3994 
    3998  virtual IntVarIterator* MakeHoleIterator(bool reversible) const = 0;
    3999 
    4003  virtual IntVarIterator* MakeDomainIterator(bool reversible) const = 0;
    4004 
    4006  virtual int64 OldMin() const = 0;
    4007 
    4009  virtual int64 OldMax() const = 0;
    4010 
    4011  virtual int VarType() const;
    4012 
    4014  void Accept(ModelVisitor* const visitor) const override;
    4015 
    4017  virtual IntVar* IsEqual(int64 constant) = 0;
    4018  virtual IntVar* IsDifferent(int64 constant) = 0;
    4019  virtual IntVar* IsGreaterOrEqual(int64 constant) = 0;
    4020  virtual IntVar* IsLessOrEqual(int64 constant) = 0;
    4021 
    4023  int index() const { return index_; }
    4024 
    4025  private:
    4026  const int index_;
    4027  DISALLOW_COPY_AND_ASSIGN(IntVar);
    4028 };
    4029 
    4034  public:
    4035  SolutionCollector(Solver* const solver, const Assignment* assignment);
    4036  explicit SolutionCollector(Solver* const solver);
    4037  ~SolutionCollector() override;
    4038  std::string DebugString() const override { return "SolutionCollector"; }
    4039 
    4041  void Add(IntVar* const var);
    4042  void Add(const std::vector<IntVar*>& vars);
    4043  void Add(IntervalVar* const var);
    4044  void Add(const std::vector<IntervalVar*>& vars);
    4045  void Add(SequenceVar* const var);
    4046  void Add(const std::vector<SequenceVar*>& vars);
    4047  void AddObjective(IntVar* const objective);
    4048 
    4050  void EnterSearch() override;
    4051 
    4053  int solution_count() const;
    4054 
    4056  Assignment* solution(int n) const;
    4057 
    4059  int64 wall_time(int n) const;
    4060 
    4062  int64 branches(int n) const;
    4063 
    4066  int64 failures(int n) const;
    4067 
    4069  int64 objective_value(int n) const;
    4070 
    4072  int64 Value(int n, IntVar* const var) const;
    4073 
    4075  int64 StartValue(int n, IntervalVar* const var) const;
    4076 
    4078  int64 EndValue(int n, IntervalVar* const var) const;
    4079 
    4081  int64 DurationValue(int n, IntervalVar* const var) const;
    4082 
    4084  int64 PerformedValue(int n, IntervalVar* const var) const;
    4085 
    4089  const std::vector<int>& ForwardSequence(int n, SequenceVar* const var) const;
    4093  const std::vector<int>& BackwardSequence(int n, SequenceVar* const var) const;
    4096  const std::vector<int>& Unperformed(int n, SequenceVar* const var) const;
    4097 
    4098  protected:
    4099  struct SolutionData {
    4101  int64 time;
    4102  int64 branches;
    4103  int64 failures;
    4105  bool operator<(const SolutionData& other) const {
    4106  return std::tie(solution, time, branches, failures, objective_value) <
    4107  std::tie(other.solution, other.time, other.branches,
    4108  other.failures, other.objective_value);
    4109  }
    4110  };
    4111 
    4113  void PushSolution();
    4114  void Push(const SolutionData& data) { solution_data_.push_back(data); }
    4116  void PopSolution();
    4117  SolutionData BuildSolutionDataForCurrentState();
    4119  void check_index(int n) const;
    4120 
    4121  std::unique_ptr<Assignment> prototype_;
    4122  std::vector<SolutionData> solution_data_;
    4123  std::vector<Assignment*> recycle_solutions_;
    4124 
    4125  private:
    4126  DISALLOW_COPY_AND_ASSIGN(SolutionCollector);
    4127 };
    4128 
    4129 // TODO(user): Refactor this into an Objective class:
    4130 // - print methods for AtNode and AtSolution.
    4131 // - support for weighted objective and lexicographical objective.
    4132 
    4136 class OptimizeVar : public SearchMonitor {
    4137  public:
    4138  OptimizeVar(Solver* const s, bool maximize, IntVar* const a, int64 step);
    4139  ~OptimizeVar() override;
    4140 
    4142  int64 best() const { return best_; }
    4143 
    4145  IntVar* Var() const { return var_; }
    4147  bool AcceptDelta(Assignment* delta, Assignment* deltadelta) override;
    4148  void EnterSearch() override;
    4149  void BeginNextDecision(DecisionBuilder* const db) override;
    4150  void RefuteDecision(Decision* const d) override;
    4151  bool AtSolution() override;
    4152  bool AcceptSolution() override;
    4153  virtual std::string Print() const;
    4154  std::string DebugString() const override;
    4155  void Accept(ModelVisitor* const visitor) const override;
    4156 
    4157  void ApplyBound();
    4158 
    4159  protected:
    4160  IntVar* const var_;
    4161  int64 step_;
    4162  int64 best_;
    4165 
    4166  private:
    4167  DISALLOW_COPY_AND_ASSIGN(OptimizeVar);
    4168 };
    4169 
    4171 class SearchLimit : public SearchMonitor {
    4172  public:
    4173  explicit SearchLimit(Solver* const s) : SearchMonitor(s), crossed_(false) {}
    4174  ~SearchLimit() override;
    4175 
    4177  bool crossed() const { return crossed_; }
    4178 
    4183  virtual bool Check() = 0;
    4184 
    4186  virtual void Init() = 0;
    4187 
    4190  virtual void Copy(const SearchLimit* const limit) = 0;
    4191 
    4193  virtual SearchLimit* MakeClone() const = 0;
    4194 
    4196  void EnterSearch() override;
    4197  void BeginNextDecision(DecisionBuilder* const b) override;
    4198  void PeriodicCheck() override;
    4199  void RefuteDecision(Decision* const d) override;
    4200  std::string DebugString() const override {
    4201  return absl::StrFormat("SearchLimit(crossed = %i)", crossed_);
    4202  }
    4203 
    4204  private:
    4205  void TopPeriodicCheck();
    4206 
    4207  bool crossed_;
    4208  DISALLOW_COPY_AND_ASSIGN(SearchLimit);
    4209 };
    4210 
    4213 class RegularLimit : public SearchLimit {
    4214  public:
    4215  RegularLimit(Solver* const s, int64 time, int64 branches, int64 failures,
    4216  int64 solutions, bool smart_time_check, bool cumulative);
    4217  ~RegularLimit() override;
    4218  void Copy(const SearchLimit* const limit) override;
    4219  SearchLimit* MakeClone() const override;
    4221  bool Check() override;
    4222  void Init() override;
    4223  void ExitSearch() override;
    4224  void UpdateLimits(int64 time, int64 branches, int64 failures,
    4225  int64 solutions);
    4226  absl::Duration duration_limit() const { return duration_limit_; }
    4227  int64 wall_time() const {
    4228  return duration_limit_ == absl::InfiniteDuration()
    4229  ? kint64max
    4230  : absl::ToInt64Milliseconds(duration_limit());
    4231  }
    4232  int64 branches() const { return branches_; }
    4233  int64 failures() const { return failures_; }
    4234  int64 solutions() const { return solutions_; }
    4235  bool IsUncheckedSolutionLimitReached() override;
    4236  int ProgressPercent() override;
    4237  std::string DebugString() const override;
    4238 
    4239  absl::Time AbsoluteSolverDeadline() const {
    4240  return solver_time_at_limit_start_ + duration_limit_;
    4241  }
    4242 
    4243  void Accept(ModelVisitor* const visitor) const override;
    4244 
    4245  private:
    4246  bool CheckTime();
    4247  absl::Duration TimeElapsed();
    4248  static int64 GetPercent(int64 value, int64 offset, int64 total) {
    4249  return (total > 0 && total < kint64max) ? 100 * (value - offset) / total
    4250  : -1;
    4251  }
    4252 
    4253  absl::Duration duration_limit_;
    4254  absl::Time solver_time_at_limit_start_;
    4255  absl::Duration last_time_elapsed_;
    4256  int64 check_count_;
    4257  int64 next_check_;
    4258  bool smart_time_check_;
    4259  int64 branches_;
    4260  int64 branches_offset_;
    4261  int64 failures_;
    4262  int64 failures_offset_;
    4263  int64 solutions_;
    4264  int64 solutions_offset_;
    4272  bool cumulative_;
    4273 };
    4274 
    4286  public:
    4288  static const int64 kMinValidValue;
    4290  static const int64 kMaxValidValue;
    4291  IntervalVar(Solver* const solver, const std::string& name)
    4293  set_name(name);
    4294  }
    4295  ~IntervalVar() override {}
    4296 
    4299  virtual int64 StartMin() const = 0;
    4300  virtual int64 StartMax() const = 0;
    4301  virtual void SetStartMin(int64 m) = 0;
    4302  virtual void SetStartMax(int64 m) = 0;
    4303  virtual void SetStartRange(int64 mi, int64 ma) = 0;
    4304  virtual int64 OldStartMin() const = 0;
    4305  virtual int64 OldStartMax() const = 0;
    4306  virtual void WhenStartRange(Demon* const d) = 0;
    4308  WhenStartRange(solver()->MakeClosureDemon(std::move(closure)));
    4309  }
    4310 #if !defined(SWIG)
    4312  WhenStartRange(solver()->MakeActionDemon(std::move(action)));
    4313  }
    4314 #endif // SWIG
    4315  virtual void WhenStartBound(Demon* const d) = 0;
    4317  WhenStartBound(solver()->MakeClosureDemon(std::move(closure)));
    4318  }
    4319 #if !defined(SWIG)
    4321  WhenStartBound(solver()->MakeActionDemon(std::move(action)));
    4322  }
    4323 #endif // SWIG
    4324 
    4326  virtual int64 DurationMin() const = 0;
    4327  virtual int64 DurationMax() const = 0;
    4328  virtual void SetDurationMin(int64 m) = 0;
    4329  virtual void SetDurationMax(int64 m) = 0;
    4330  virtual void SetDurationRange(int64 mi, int64 ma) = 0;
    4331  virtual int64 OldDurationMin() const = 0;
    4332  virtual int64 OldDurationMax() const = 0;
    4333  virtual void WhenDurationRange(Demon* const d) = 0;
    4335  WhenDurationRange(solver()->MakeClosureDemon(std::move(closure)));
    4336  }
    4337 #if !defined(SWIG)
    4339  WhenDurationRange(solver()->MakeActionDemon(std::move(action)));
    4340  }
    4341 #endif // SWIG
    4342  virtual void WhenDurationBound(Demon* const d) = 0;
    4344  WhenDurationBound(solver()->MakeClosureDemon(std::move(closure)));
    4345  }
    4346 #if !defined(SWIG)
    4348  WhenDurationBound(solver()->MakeActionDemon(std::move(action)));
    4349  }
    4350 #endif // SWIG
    4351 
    4353  virtual int64 EndMin() const = 0;
    4354  virtual int64 EndMax() const = 0;
    4355  virtual void SetEndMin(int64 m) = 0;
    4356  virtual void SetEndMax(int64 m) = 0;
    4357  virtual void SetEndRange(int64 mi, int64 ma) = 0;
    4358  virtual int64 OldEndMin() const = 0;
    4359  virtual int64 OldEndMax() const = 0;
    4360  virtual void WhenEndRange(Demon* const d) = 0;
    4362  WhenEndRange(solver()->MakeClosureDemon(std::move(closure)));
    4363  }
    4364 #if !defined(SWIG)
    4366  WhenEndRange(solver()->MakeActionDemon(std::move(action)));
    4367  }
    4368 #endif // SWIG
    4369  virtual void WhenEndBound(Demon* const d) = 0;
    4371  WhenEndBound(solver()->MakeClosureDemon(std::move(closure)));
    4372  }
    4373 #if !defined(SWIG)
    4375  WhenEndBound(solver()->MakeActionDemon(std::move(action)));
    4376  }
    4377 #endif // SWIG
    4378 
    4381  virtual bool MustBePerformed() const = 0;
    4382  virtual bool MayBePerformed() const = 0;
    4383  bool CannotBePerformed() const { return !MayBePerformed(); }
    4384  bool IsPerformedBound() const {
    4385  return MustBePerformed() || !MayBePerformed();
    4386  }
    4387  virtual void SetPerformed(bool val) = 0;
    4388  virtual bool WasPerformedBound() const = 0;
    4389  virtual void WhenPerformedBound(Demon* const d) = 0;
    4391  WhenPerformedBound(solver()->MakeClosureDemon(std::move(closure)));
    4392  }
    4393 #if !defined(SWIG)
    4395  WhenPerformedBound(solver()->MakeActionDemon(std::move(action)));
    4396  }
    4397 #endif // SWIG
    4398 
    4400  void WhenAnything(Demon* const d);
    4403  WhenAnything(solver()->MakeClosureDemon(std::move(closure)));
    4404  }
    4405 #if !defined(SWIG)
    4406  void WhenAnything(Solver::Action action) {
    4408  WhenAnything(solver()->MakeActionDemon(std::move(action)));
    4409  }
    4410 #endif // SWIG
    4411 
    4415  virtual IntExpr* StartExpr() = 0;
    4416  virtual IntExpr* DurationExpr() = 0;
    4417  virtual IntExpr* EndExpr() = 0;
    4418  virtual IntExpr* PerformedExpr() = 0;
    4422  virtual IntExpr* SafeStartExpr(int64 unperformed_value) = 0;
    4423  virtual IntExpr* SafeDurationExpr(int64 unperformed_value) = 0;
    4424  virtual IntExpr* SafeEndExpr(int64 unperformed_value) = 0;
    4425 
    4427  virtual void Accept(ModelVisitor* const visitor) const = 0;
    4428 
    4429  private:
    4430  DISALLOW_COPY_AND_ASSIGN(IntervalVar);
    4431 };
    4432 
    4440  public:
    4441  SequenceVar(Solver* const s, const std::vector<IntervalVar*>& intervals,
    4442  const std::vector<IntVar*>& nexts, const std::string& name);
    4443 
    4444  ~SequenceVar() override;
    4445 
    4446  std::string DebugString() const override;
    4447 
    4448 #if !defined(SWIG)
    4449  void DurationRange(int64* const dmin, int64* const dmax) const;
    4452 
    4455  void HorizonRange(int64* const hmin, int64* const hmax) const;
    4456 
    4459  void ActiveHorizonRange(int64* const hmin, int64* const hmax) const;
    4460 
    4462  void ComputeStatistics(int* const ranked, int* const not_ranked,
    4463  int* const unperformed) const;
    4464 #endif // !defined(SWIG)
    4465 
    4468  void RankFirst(int index);
    4469 
    4472  void RankNotFirst(int index);
    4473 
    4476  void RankLast(int index);
    4477 
    4480  void RankNotLast(int index);
    4481 
    4484  void ComputePossibleFirstsAndLasts(std::vector<int>* const possible_firsts,
    4485  std::vector<int>* const possible_lasts);
    4486 
    4492  void RankSequence(const std::vector<int>& rank_first,
    4493  const std::vector<int>& rank_last,
    4494  const std::vector<int>& unperformed);
    4495 
    4504  void FillSequence(std::vector<int>* const rank_first,
    4505  std::vector<int>* const rank_last,
    4506  std::vector<int>* const unperformed) const;
    4507 
    4509  IntervalVar* Interval(int index) const;
    4510 
    4512  IntVar* Next(int index) const;
    4513 
    4515  int64 size() const { return intervals_.size(); }
    4516 
    4518  virtual void Accept(ModelVisitor* const visitor) const;
    4519 
    4520  private:
    4521  int ComputeForwardFrontier();
    4522  int ComputeBackwardFrontier();
    4523  void UpdatePrevious() const;
    4524 
    4525  const std::vector<IntervalVar*> intervals_;
    4526  const std::vector<IntVar*> nexts_;
    4527  mutable std::vector<int> previous_;
    4528 };
    4529 
    4531  public:
    4532  AssignmentElement() : activated_(true) {}
    4533 
    4534  void Activate() { activated_ = true; }
    4535  void Deactivate() { activated_ = false; }
    4536  bool Activated() const { return activated_; }
    4537 
    4538  private:
    4539  bool activated_;
    4540 };
    4541 
    4543  public:
    4544  IntVarElement();
    4545  explicit IntVarElement(IntVar* const var);
    4546  void Reset(IntVar* const var);
    4547  IntVarElement* Clone();
    4548  void Copy(const IntVarElement& element);
    4549  IntVar* Var() const { return var_; }
    4550  void Store() {
    4551  min_ = var_->Min();
    4552  max_ = var_->Max();
    4553  }
    4554  void Restore() {
    4555  if (var_ != nullptr) {
    4556  var_->SetRange(min_, max_);
    4557  }
    4558  }
    4559  void LoadFromProto(const IntVarAssignment& int_var_assignment_proto);
    4560  void WriteToProto(IntVarAssignment* int_var_assignment_proto) const;
    4561 
    4562  int64 Min() const { return min_; }
    4563  void SetMin(int64 m) { min_ = m; }
    4564  int64 Max() const { return max_; }
    4565  void SetMax(int64 m) { max_ = m; }
    4566  int64 Value() const {
    4567  DCHECK_EQ(min_, max_);
    4568  // Get the value from an unbound int var assignment element.
    4569  return min_;
    4570  }
    4571  bool Bound() const { return (max_ == min_); }
    4572  void SetRange(int64 l, int64 u) {
    4573  min_ = l;
    4574  max_ = u;
    4575  }
    4576  void SetValue(int64 v) {
    4577  min_ = v;
    4578  max_ = v;
    4579  }
    4580  std::string DebugString() const;
    4581 
    4582  bool operator==(const IntVarElement& element) const;
    4583  bool operator!=(const IntVarElement& element) const {
    4584  return !(*this == element);
    4585  }
    4586 
    4587  private:
    4588  IntVar* var_;
    4589  int64 min_;
    4590  int64 max_;
    4591 };
    4592 
    4594  public:
    4596  explicit IntervalVarElement(IntervalVar* const var);
    4597  void Reset(IntervalVar* const var);
    4599  void Copy(const IntervalVarElement& element);
    4600  IntervalVar* Var() const { return var_; }
    4601  void Store();
    4602  void Restore();
    4603  void LoadFromProto(
    4604  const IntervalVarAssignment& interval_var_assignment_proto);
    4605  void WriteToProto(IntervalVarAssignment* interval_var_assignment_proto) const;
    4606 
    4607  int64 StartMin() const { return start_min_; }
    4608  int64 StartMax() const { return start_max_; }
    4609  int64 StartValue() const {
    4610  CHECK_EQ(start_max_, start_min_);
    4611  return start_max_;
    4612  }
    4613  int64 DurationMin() const { return duration_min_; }
    4614  int64 DurationMax() const { return duration_max_; }
    4615  int64 DurationValue() const {
    4616  CHECK_EQ(duration_max_, duration_min_);
    4617  return duration_max_;
    4618  }
    4619  int64 EndMin() const { return end_min_; }
    4620  int64 EndMax() const { return end_max_; }
    4621  int64 EndValue() const {
    4622  CHECK_EQ(end_max_, end_min_);
    4623  return end_max_;
    4624  }
    4625  int64 PerformedMin() const { return performed_min_; }
    4626  int64 PerformedMax() const { return performed_max_; }
    4627  int64 PerformedValue() const {
    4628  CHECK_EQ(performed_max_, performed_min_);
    4629  return performed_max_;
    4630  }
    4631  void SetStartMin(int64 m) { start_min_ = m; }
    4632  void SetStartMax(int64 m) { start_max_ = m; }
    4633  void SetStartRange(int64 mi, int64 ma) {
    4634  start_min_ = mi;
    4635  start_max_ = ma;
    4636  }
    4637  void SetStartValue(int64 v) {
    4638  start_min_ = v;
    4639  start_max_ = v;
    4640  }
    4641  void SetDurationMin(int64 m) { duration_min_ = m; }
    4642  void SetDurationMax(int64 m) { duration_max_ = m; }
    4643  void SetDurationRange(int64 mi, int64 ma) {
    4644  duration_min_ = mi;
    4645  duration_max_ = ma;
    4646  }
    4647  void SetDurationValue(int64 v) {
    4648  duration_min_ = v;
    4649  duration_max_ = v;
    4650  }
    4651  void SetEndMin(int64 m) { end_min_ = m; }
    4652  void SetEndMax(int64 m) { end_max_ = m; }
    4653  void SetEndRange(int64 mi, int64 ma) {
    4654  end_min_ = mi;
    4655  end_max_ = ma;
    4656  }
    4657  void SetEndValue(int64 v) {
    4658  end_min_ = v;
    4659  end_max_ = v;
    4660  }
    4661  void SetPerformedMin(int64 m) { performed_min_ = m; }
    4662  void SetPerformedMax(int64 m) { performed_max_ = m; }
    4663  void SetPerformedRange(int64 mi, int64 ma) {
    4664  performed_min_ = mi;
    4665  performed_max_ = ma;
    4666  }
    4667  void SetPerformedValue(int64 v) {
    4668  performed_min_ = v;
    4669  performed_max_ = v;
    4670  }
    4671  bool Bound() const {
    4672  return (start_min_ == start_max_ && duration_min_ == duration_max_ &&
    4673  end_min_ == end_max_ && performed_min_ == performed_max_);
    4674  }
    4675  std::string DebugString() const;
    4676  bool operator==(const IntervalVarElement& element) const;
    4677  bool operator!=(const IntervalVarElement& element) const {
    4678  return !(*this == element);
    4679  }
    4680 
    4681  private:
    4682  int64 start_min_;
    4683  int64 start_max_;
    4684  int64 duration_min_;
    4685  int64 duration_max_;
    4686  int64 end_min_;
    4687  int64 end_max_;
    4688  int64 performed_min_;
    4689  int64 performed_max_;
    4690  IntervalVar* var_;
    4691 };
    4692 
    4707  public:
    4709  explicit SequenceVarElement(SequenceVar* const var);
    4710  void Reset(SequenceVar* const var);
    4712  void Copy(const SequenceVarElement& element);
    4713  SequenceVar* Var() const { return var_; }
    4714  void Store();
    4715  void Restore();
    4716  void LoadFromProto(
    4717  const SequenceVarAssignment& sequence_var_assignment_proto);
    4718  void WriteToProto(SequenceVarAssignment* sequence_var_assignment_proto) const;
    4719 
    4720  const std::vector<int>& ForwardSequence() const;
    4721  const std::vector<int>& BackwardSequence() const;
    4722  const std::vector<int>& Unperformed() const;
    4723  void SetSequence(const std::vector<int>& forward_sequence,
    4724  const std::vector<int>& backward_sequence,
    4725  const std::vector<int>& unperformed);
    4726  void SetForwardSequence(const std::vector<int>& forward_sequence);
    4727  void SetBackwardSequence(const std::vector<int>& backward_sequence);
    4728  void SetUnperformed(const std::vector<int>& unperformed);
    4729  bool Bound() const {
    4730  return forward_sequence_.size() + unperformed_.size() == var_->size();
    4731  }
    4732 
    4733  std::string DebugString() const;
    4734 
    4735  bool operator==(const SequenceVarElement& element) const;
    4736  bool operator!=(const SequenceVarElement& element) const {
    4737  return !(*this == element);
    4738  }
    4739 
    4740  private:
    4741  bool CheckClassInvariants();
    4742 
    4743  SequenceVar* var_;
    4744  std::vector<int> forward_sequence_;
    4745  std::vector<int> backward_sequence_;
    4746  std::vector<int> unperformed_;
    4747 };
    4748 
    4749 template <class V, class E>
    4751  public:
    4753  E* Add(V* var) {
    4754  CHECK(var != nullptr);
    4755  int index = -1;
    4756  if (!Find(var, &index)) {
    4757  return FastAdd(var);
    4758  } else {
    4759  return &elements_[index];
    4760  }
    4761  }
    4763  E* FastAdd(V* var) {
    4764  DCHECK(var != nullptr);
    4765  elements_.emplace_back(var);
    4766  return &elements_.back();
    4767  }
    4770  E* AddAtPosition(V* var, int position) {
    4771  elements_[position].Reset(var);
    4772  return &elements_[position];
    4773  }
    4774  void Clear() {
    4775  elements_.clear();
    4776  if (!elements_map_.empty()) {
    4777  elements_map_.clear();
    4778  }
    4779  }
    4782  void Resize(size_t size) { elements_.resize(size); }
    4783  bool Empty() const { return elements_.empty(); }
    4787  for (int i = 0; i < container.elements_.size(); ++i) {
    4788  const E& element = container.elements_[i];
    4789  const V* const var = element.Var();
    4790  int index = -1;
    4791  if (i < elements_.size() && elements_[i].Var() == var) {
    4792  index = i;
    4793  } else if (!Find(var, &index)) {
    4794  continue;
    4795  }
    4796  DCHECK_GE(index, 0);
    4797  E* const local_element = &elements_[index];
    4798  local_element->Copy(element);
    4799  if (element.Activated()) {
    4800  local_element->Activate();
    4801  } else {
    4802  local_element->Deactivate();
    4803  }
    4804  }
    4805  }
    4808  void Copy(const AssignmentContainer<V, E>& container) {
    4809  Clear();
    4810  for (int i = 0; i < container.elements_.size(); ++i) {
    4811  const E& element = container.elements_[i];
    4812  FastAdd(element.Var())->Copy(element);
    4813  }
    4814  }
    4815  bool Contains(const V* const var) const {
    4816  int index;
    4817  return Find(var, &index);
    4818  }
    4819  E* MutableElement(const V* const var) {
    4820  E* const element = MutableElementOrNull(var);
    4821  DCHECK(element != nullptr)
    4822  << "Unknown variable " << var->DebugString() << " in solution";
    4823  return element;
    4824  }
    4825  E* MutableElementOrNull(const V* const var) {
    4826  int index = -1;
    4827  if (Find(var, &index)) {
    4828  return MutableElement(index);
    4829  }
    4830  return nullptr;
    4831  }
    4832  const E& Element(const V* const var) const {
    4833  const E* const element = ElementPtrOrNull(var);
    4834  DCHECK(element != nullptr)
    4835  << "Unknown variable " << var->DebugString() << " in solution";
    4836  return *element;
    4837  }
    4838  const E* ElementPtrOrNull(const V* const var) const {
    4839  int index = -1;
    4840  if (Find(var, &index)) {
    4841  return &Element(index);
    4842  }
    4843  return nullptr;
    4844  }
    4845  const std::vector<E>& elements() const { return elements_; }
    4846  E* MutableElement(int index) { return &elements_[index]; }
    4847  const E& Element(int index) const { return elements_[index]; }
    4848  int Size() const { return elements_.size(); }
    4849  void Store() {
    4850  for (E& element : elements_) {
    4851  element.Store();
    4852  }
    4853  }
    4854  void Restore() {
    4855  for (E& element : elements_) {
    4856  if (element.Activated()) {
    4857  element.Restore();
    4858  }
    4859  }
    4860  }
    4861  bool AreAllElementsBound() const {
    4862  for (const E& element : elements_) {
    4863  if (!element.Bound()) return false;
    4864  }
    4865  return true;
    4866  }
    4867 
    4871  bool operator==(const AssignmentContainer<V, E>& container) const {
    4873  if (Size() != container.Size()) {
    4874  return false;
    4875  }
    4877  EnsureMapIsUpToDate();
    4881  for (const E& element : container.elements_) {
    4882  const int position =
    4883  gtl::FindWithDefault(elements_map_, element.Var(), -1);
    4884  if (position < 0 || elements_[position] != element) {
    4885  return false;
    4886  }
    4887  }
    4888  return true;
    4889  }
    4890  bool operator!=(const AssignmentContainer<V, E>& container) const {
    4891  return !(*this == container);
    4892  }
    4893 
    4894  private:
    4895  void EnsureMapIsUpToDate() const {
    4896  absl::flat_hash_map<const V*, int>* map =
    4897  const_cast<absl::flat_hash_map<const V*, int>*>(&elements_map_);
    4898  for (int i = map->size(); i < elements_.size(); ++i) {
    4899  (*map)[elements_[i].Var()] = i;
    4900  }
    4901  }
    4902  bool Find(const V* const var, int* index) const {
    4904  const size_t kMaxSizeForLinearAccess = 11;
    4905  if (Size() <= kMaxSizeForLinearAccess) {
    4909  for (int i = 0; i < elements_.size(); ++i) {
    4910  if (var == elements_[i].Var()) {
    4911  *index = i;
    4912  return true;
    4913  }
    4914  }
    4915  return false;
    4916  } else {
    4917  EnsureMapIsUpToDate();
    4918  DCHECK_EQ(elements_map_.size(), elements_.size());
    4919  return gtl::FindCopy(elements_map_, var, index);
    4920  }
    4921  }
    4922 
    4923  std::vector<E> elements_;
    4924  absl::flat_hash_map<const V*, int> elements_map_;
    4925 };
    4926 
    4930  public:
    4936 
    4937  explicit Assignment(Solver* const s);
    4938  explicit Assignment(const Assignment* const copy);
    4939  ~Assignment() override;
    4940 
    4941  void Clear();
    4942  bool Empty() const {
    4943  return int_var_container_.Empty() && interval_var_container_.Empty() &&
    4944  sequence_var_container_.Empty();
    4945  }
    4946  int Size() const {
    4947  return NumIntVars() + NumIntervalVars() + NumSequenceVars();
    4948  }
    4949  int NumIntVars() const { return int_var_container_.Size(); }
    4950  int NumIntervalVars() const { return interval_var_container_.Size(); }
    4951  int NumSequenceVars() const { return sequence_var_container_.Size(); }
    4952  void Store();
    4953  void Restore();
    4954 
    4957  bool Load(const std::string& filename);
    4958 #if !defined(SWIG)
    4959  bool Load(File* file);
    4960 #endif
    4961  void Load(const AssignmentProto& assignment_proto);
    4962  bool Save(const std::string& filename) const;
    4964 #if !defined(SWIG)
    4965  bool Save(File* file) const;
    4966 #endif // #if !defined(SWIG)
    4967  void Save(AssignmentProto* const assignment_proto) const;
    4968 
    4969  void AddObjective(IntVar* const v);
    4970  void ClearObjective() { objective_element_.Reset(nullptr); }
    4971  IntVar* Objective() const;
    4972  bool HasObjective() const { return (objective_element_.Var() != nullptr); }
    4973  int64 ObjectiveMin() const;
    4974  int64 ObjectiveMax() const;
    4975  int64 ObjectiveValue() const;
    4976  bool ObjectiveBound() const;
    4977  void SetObjectiveMin(int64 m);
    4978  void SetObjectiveMax(int64 m);
    4979  void SetObjectiveValue(int64 value);
    4980  void SetObjectiveRange(int64 l, int64 u);
    4981 
    4982  IntVarElement* Add(IntVar* const var);
    4983  void Add(const std::vector<IntVar*>& vars);
    4985  IntVarElement* FastAdd(IntVar* const var);
    4986  int64 Min(const IntVar* const var) const;
    4987  int64 Max(const IntVar* const var) const;
    4988  int64 Value(const IntVar* const var) const;
    4989  bool Bound(const IntVar* const var) const;
    4990  void SetMin(const IntVar* const var, int64 m);
    4991  void SetMax(const IntVar* const var, int64 m);
    4992  void SetRange(const IntVar* const var, int64 l, int64 u);
    4993  void SetValue(const IntVar* const var, int64 value);
    4994 
    4995  IntervalVarElement* Add(IntervalVar* const var);
    4996  void Add(const std::vector<IntervalVar*>& vars);
    4998  IntervalVarElement* FastAdd(IntervalVar* const var);
    4999  int64 StartMin(const IntervalVar* const var) const;
    5000  int64 StartMax(const IntervalVar* const var) const;
    5001  int64 StartValue(const IntervalVar* const var) const;
    5002  int64 DurationMin(const IntervalVar* const var) const;
    5003  int64 DurationMax(const IntervalVar* const var) const;
    5004  int64 DurationValue(const IntervalVar* const var) const;
    5005  int64 EndMin(const IntervalVar* const var) const;
    5006  int64 EndMax(const IntervalVar* const var) const;
    5007  int64 EndValue(const IntervalVar* const var) const;
    5008  int64 PerformedMin(const IntervalVar* const var) const;
    5009  int64 PerformedMax(const IntervalVar* const var) const;
    5010  int64 PerformedValue(const IntervalVar* const var) const;
    5011  void SetStartMin(const IntervalVar* const var, int64 m);
    5012  void SetStartMax(const IntervalVar* const var, int64 m);
    5013  void SetStartRange(const IntervalVar* const var, int64 mi, int64 ma);
    5014  void SetStartValue(const IntervalVar* const var, int64 value);
    5015  void SetDurationMin(const IntervalVar* const var, int64 m);
    5016  void SetDurationMax(const IntervalVar* const var, int64 m);
    5017  void SetDurationRange(const IntervalVar* const var, int64 mi, int64 ma);
    5018  void SetDurationValue(const IntervalVar* const var, int64 value);
    5019  void SetEndMin(const IntervalVar* const var, int64 m);
    5020  void SetEndMax(const IntervalVar* const var, int64 m);
    5021  void SetEndRange(const IntervalVar* const var, int64 mi, int64 ma);
    5022  void SetEndValue(const IntervalVar* const var, int64 value);
    5023  void SetPerformedMin(const IntervalVar* const var, int64 m);
    5024  void SetPerformedMax(const IntervalVar* const var, int64 m);
    5025  void SetPerformedRange(const IntervalVar* const var, int64 mi, int64 ma);
    5026  void SetPerformedValue(const IntervalVar* const var, int64 value);
    5027 
    5028  SequenceVarElement* Add(SequenceVar* const var);
    5029  void Add(const std::vector<SequenceVar*>& vars);
    5031  SequenceVarElement* FastAdd(SequenceVar* const var);
    5032  const std::vector<int>& ForwardSequence(const SequenceVar* const var) const;
    5033  const std::vector<int>& BackwardSequence(const SequenceVar* const var) const;
    5034  const std::vector<int>& Unperformed(const SequenceVar* const var) const;
    5035  void SetSequence(const SequenceVar* const var,
    5036  const std::vector<int>& forward_sequence,
    5037  const std::vector<int>& backward_sequence,
    5038  const std::vector<int>& unperformed);
    5039  void SetForwardSequence(const SequenceVar* const var,
    5040  const std::vector<int>& forward_sequence);
    5041  void SetBackwardSequence(const SequenceVar* const var,
    5042  const std::vector<int>& backward_sequence);
    5043  void SetUnperformed(const SequenceVar* const var,
    5044  const std::vector<int>& unperformed);
    5045 
    5046  void Activate(const IntVar* const var);
    5047  void Deactivate(const IntVar* const var);
    5048  bool Activated(const IntVar* const var) const;
    5049 
    5050  void Activate(const IntervalVar* const var);
    5051  void Deactivate(const IntervalVar* const var);
    5052  bool Activated(const IntervalVar* const var) const;
    5053 
    5054  void Activate(const SequenceVar* const var);
    5055  void Deactivate(const SequenceVar* const var);
    5056  bool Activated(const SequenceVar* const var) const;
    5057 
    5058  void ActivateObjective();
    5059  void DeactivateObjective();
    5060  bool ActivatedObjective() const;
    5061 
    5062  std::string DebugString() const override;
    5063 
    5064  bool AreAllElementsBound() const {
    5065  return int_var_container_.AreAllElementsBound() &&
    5066  interval_var_container_.AreAllElementsBound() &&
    5067  sequence_var_container_.AreAllElementsBound();
    5068  }
    5069 
    5070  bool Contains(const IntVar* const var) const;
    5071  bool Contains(const IntervalVar* const var) const;
    5072  bool Contains(const SequenceVar* const var) const;
    5074  void CopyIntersection(const Assignment* assignment);
    5077  void Copy(const Assignment* assignment);
    5078 
    5079  // TODO(user): Add element iterators to avoid exposing container class.
    5080  const IntContainer& IntVarContainer() const { return int_var_container_; }
    5081  IntContainer* MutableIntVarContainer() { return &int_var_container_; }
    5083  return interval_var_container_;
    5084  }
    5086  return &interval_var_container_;
    5087  }
    5089  return sequence_var_container_;
    5090  }
    5092  return &sequence_var_container_;
    5093  }
    5094  bool operator==(const Assignment& assignment) const {
    5095  return int_var_container_ == assignment.int_var_container_ &&
    5096  interval_var_container_ == assignment.interval_var_container_ &&
    5097  sequence_var_container_ == assignment.sequence_var_container_ &&
    5098  objective_element_ == assignment.objective_element_;
    5099  }
    5100  bool operator!=(const Assignment& assignment) const {
    5101  return !(*this == assignment);
    5102  }
    5103 
    5104  private:
    5105  IntContainer int_var_container_;
    5106  IntervalContainer interval_var_container_;
    5107  SequenceContainer sequence_var_container_;
    5108  IntVarElement objective_element_;
    5109  DISALLOW_COPY_AND_ASSIGN(Assignment);
    5110 };
    5111 
    5112 std::ostream& operator<<(std::ostream& out,
    5113  const Assignment& assignment);
    5114 
    5120 void SetAssignmentFromAssignment(Assignment* target_assignment,
    5121  const std::vector<IntVar*>& target_vars,
    5122  const Assignment* source_assignment,
    5123  const std::vector<IntVar*>& source_vars);
    5124 
    5125 class Pack : public Constraint {
    5126  public:
    5127  Pack(Solver* const s, const std::vector<IntVar*>& vars, int number_of_bins);
    5128 
    5129  ~Pack() override;
    5130 
    5135 
    5140  const std::vector<int64>& weights, const std::vector<int64>& bounds);
    5141 
    5147  Solver::IndexEvaluator1 weights, const std::vector<int64>& bounds);
    5148 
    5154  Solver::IndexEvaluator2 weights, const std::vector<int64>& bounds);
    5155 
    5158  void AddWeightedSumEqualVarDimension(const std::vector<int64>& weights,
    5159  const std::vector<IntVar*>& loads);
    5160 
    5165  const std::vector<IntVar*>& loads);
    5166 
    5177  const std::vector<IntVar*>& usage, const std::vector<int64>& capacity);
    5178 
    5181  void AddWeightedSumOfAssignedDimension(const std::vector<int64>& weights,
    5182  IntVar* const cost_var);
    5183 
    5186  void AddCountUsedBinDimension(IntVar* const count_var);
    5187 
    5190  void AddCountAssignedItemsDimension(IntVar* const count_var);
    5191 
    5192  void Post() override;
    5193  void ClearAll();
    5194  void PropagateDelayed();
    5195  void InitialPropagate() override;
    5196  void Propagate();
    5197  void OneDomain(int var_index);
    5198  std::string DebugString() const override;
    5199  bool IsUndecided(int var_index, int bin_index) const;
    5200  void SetImpossible(int var_index, int bin_index);
    5201  void Assign(int var_index, int bin_index);
    5202  bool IsAssignedStatusKnown(int var_index) const;
    5203  bool IsPossible(int var_index, int bin_index) const;
    5204  IntVar* AssignVar(int var_index, int bin_index) const;
    5205  void SetAssigned(int var_index);
    5206  void SetUnassigned(int var_index);
    5207  void RemoveAllPossibleFromBin(int bin_index);
    5208  void AssignAllPossibleToBin(int bin_index);
    5209  void AssignFirstPossibleToBin(int bin_index);
    5210  void AssignAllRemainingItems();
    5212  void Accept(ModelVisitor* const visitor) const override;
    5213 
    5214  private:
    5215  bool IsInProcess() const;
    5216  const std::vector<IntVar*> vars_;
    5217  const int bins_;
    5218  std::vector<Dimension*> dims_;
    5219  std::unique_ptr<RevBitMatrix> unprocessed_;
    5220  std::vector<std::vector<int>> forced_;
    5221  std::vector<std::vector<int>> removed_;
    5222  std::vector<IntVarIterator*> holes_;
    5223  uint64 stamp_;
    5224  Demon* demon_;
    5225  std::vector<std::pair<int, int>> to_set_;
    5226  std::vector<std::pair<int, int>> to_unset_;
    5227  bool in_process_;
    5228 };
    5229 
    5231  public:
    5232  DisjunctiveConstraint(Solver* const s,
    5233  const std::vector<IntervalVar*>& intervals,
    5234  const std::string& name);
    5235  ~DisjunctiveConstraint() override;
    5236 
    5238  virtual SequenceVar* MakeSequenceVar() = 0;
    5239 
    5244  void SetTransitionTime(Solver::IndexEvaluator2 transition_time);
    5245 
    5246  int64 TransitionTime(int before_index, int after_index) {
    5247  DCHECK(transition_time_);
    5248  return transition_time_(before_index, after_index);
    5249  }
    5250 
    5251 #if !defined(SWIG)
    5252  virtual const std::vector<IntVar*>& nexts() const = 0;
    5253  virtual const std::vector<IntVar*>& actives() const = 0;
    5254  virtual const std::vector<IntVar*>& time_cumuls() const = 0;
    5255  virtual const std::vector<IntVar*>& time_slacks() const = 0;
    5256 #endif // !defined(SWIG)
    5257 
    5258  protected:
    5259  const std::vector<IntervalVar*> intervals_;
    5261 
    5262  private:
    5263  DISALLOW_COPY_AND_ASSIGN(DisjunctiveConstraint);
    5264 };
    5265 
    5268 class SolutionPool : public BaseObject {
    5269  public:
    5271  ~SolutionPool() override {}
    5272 
    5275  virtual void Initialize(Assignment* const assignment) = 0;
    5276 
    5279  virtual void RegisterNewSolution(Assignment* const assignment) = 0;
    5280 
    5283  virtual void GetNextSolution(Assignment* const assignment) = 0;
    5284 
    5287  virtual bool SyncNeeded(Assignment* const local_assignment) = 0;
    5288 };
    5289 } // namespace operations_research
    5290 
    5291 #endif // OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVER_H_
    Implements a complete cache for model elements: expressions and constraints.
    bool IsBooleanVar(IntExpr *const expr, IntVar **inner_var, bool *is_negated) const
    Returns true if expr represents either boolean_var or 1 - boolean_var.
    virtual int64 OldMax() const =0
    Returns the previous max.
    - -
    OptimizationDirection optimization_direction() const
    The direction of optimization, getter and setter.
    + +
    OptimizationDirection optimization_direction() const
    The direction of optimization, getter and setter.
    void InitialPropagate() override
    This method performs the initial propagation of the constraint.
    virtual std::string BaseName() const
    Returns a base name for automatic naming.
    -
    bool operator!=(const AssignmentContainer< V, E > &container) const
    +
    bool operator!=(const AssignmentContainer< V, E > &container) const
    t starts before d, i.e. Start(t) <= d.
    void RankNotLast(int index)
    Indicates that the index_th interval var will not be ranked first of all currently unranked interval ...
    virtual void Next()=0
    This method moves the iterator to the next value.
    - - + +
    Constraint * MakeIntervalVarRelation(IntervalVar *const t, UnaryIntervalRelation r, int64 d)
    This method creates a relation between an interval var and a date.
    - +
    virtual int64 Value() const =0
    This method returns the value of the variable.
    void SetBranchSelector(BranchSelector bs)
    Sets the given branch selector on the current active search.
    RegularLimit * MakeTimeLimit(int64 time_in_ms)
    Creates a search limit that constrains the running time given in milliseconds.
    void SetBackwardSequence(const std::vector< int > &backward_sequence)
    DisjunctiveConstraint * MakeDisjunctiveConstraint(const std::vector< IntervalVar * > &intervals, const std::string &name)
    This constraint forces all interval vars into an non-overlapping sequence.
    - +
    Decision * MakeScheduleOrPostpone(IntervalVar *const var, int64 est, int64 *const marker)
    Returns a decision that tries to schedule a task at a given time.
    virtual bool Ok() const =0
    This method indicates if we can call Value() or not.
    - +
    IntExpr * MakeOpposite(IntExpr *const expr)
    -expr
    - -
    void Add(Solver *const s, const T &to_add)
    + +
    void Add(Solver *const s, const T &to_add)
    void WriteToProto(IntervalVarAssignment *interval_var_assignment_proto) const
    virtual void AcceptUncheckedNeighbor()
    After accepting an unchecked neighbor during local search.
    void SetAssignmentFromAssignment(Assignment *target_assignment, const std::vector< IntVar * > &target_vars, const Assignment *source_assignment, const std::vector< IntVar * > &source_vars)
    NOLINT.
    void AddObjective(IntVar *const objective)
    virtual void RefuteDecision(Decision *const d)
    Before refuting the decision.
    - +
    VAR_PRIORITY is between DELAYED_PRIORITY and NORMAL_PRIORITY.
    -
    OptimizeVar * objective
    SearchMonitors will display values of objective or variable (both cannot be used together).
    +
    OptimizeVar * objective
    SearchMonitors will display values of objective or variable (both cannot be used together).
    Decision * MakeAssignVariablesValues(const std::vector< IntVar * > &vars, const std::vector< int64 > &values)
    -
    virtual bool Bound() const
    Returns true if the min and the max of the expression are equal.
    +
    virtual bool Bound() const
    Returns true if the min and the max of the expression are equal.
    Constraint * MakeAllowedAssignments(const std::vector< IntVar * > &vars, const IntTupleSet &tuples)
    This method creates a constraint where the graph of the relation between the variables is given in ex...
    - +
    std::function< int64(int64, int64, int64)> IndexEvaluator3
    - +
    void inhibit(Solver *const s)
    This method inhibits the demon in the search tree below the current position.
    void SetSearchContext(Search *search, const std::string &search_context)
    IntValueStrategy
    This enum describes the strategy used to select the next variable value to set.
    int SearchLeftDepth() const
    Gets the search left depth of the current active search.
    virtual void WhenDomain(Demon *d)=0
    This method attaches a demon that will watch any domain modification of the domain of the variable.
    virtual void WhenEndBound(Demon *const d)=0
    - +
    DELAYED_PRIORITY is the lowest priority: Demons will be processed after VAR_PRIORITY and NORMAL_PRIOR...
    Constraint * MakeMinEquality(const std::vector< IntVar * > &vars, IntVar *const min_var)
    void BeginNextDecision(DecisionBuilder *const db) override
    Before calling DecisionBuilder::Next.
    IntVar * RegisterIntVar(IntVar *const var)
    Registers a new IntVar and wraps it inside a TraceIntVar if necessary.
    - +
    std::string DebugString() const override
    void MakeBoolVarArray(int var_count, const std::string &name, std::vector< IntVar * > *vars)
    This method will append the vector vars with 'var_count' boolean variables having name "name<i>" wher...
    - +
    void Fail()
    Abandon the current branch in the search tree. A backtrack will follow.
    -
    int64 size() const
    Returns the number of interval vars in the sequence.
    - - +
    int64 size() const
    Returns the number of interval vars in the sequence.
    + +
    void ExecuteAll(const SimpleRevFIFO< Demon * > &demons)
    -
    Subclass of RevArray<T> which adds numerical operations.
    +
    Subclass of RevArray<T> which adds numerical operations.
    void HorizonRange(int64 *const hmin, int64 *const hmax) const
    Returns the minimum start min and the maximum end max of all interval vars in the sequence.
    virtual void WhenDurationBound(Demon *const d)=0
    @@ -156,60 +127,59 @@
    void Post() override
    This method is called when the constraint is processed by the solver.
    virtual int64 OldStartMax() const =0
    LocalSearchOperator * ConcatenateOperators(const std::vector< LocalSearchOperator * > &ops)
    Creates a local search operator which concatenates a vector of operators.
    - - -
    void WhenBound(Solver::Closure closure)
    This method attaches a closure that will be awakened when the variable is bound.
    + + +
    void WhenBound(Solver::Closure closure)
    This method attaches a closure that will be awakened when the variable is bound.
    IntExpr * MakePiecewiseLinearExpr(IntExpr *expr, const PiecewiseLinearFunction &f)
    General piecewise-linear function expression, built from f(x) where f is piecewise-linear.
    bool IsUndecided(int var_index, int bin_index) const
    virtual void SetDurationMin(int64 m)=0
    Among unbound variables, select the variable with the smallest size, i.e., the smallest number of pos...
    virtual IntVar * IsGreaterOrEqual(int64 constant)=0
    - +
    The simple is INTERVAL_SET_TIMES_FORWARD.
    -
    std::function< void(int64)> ObjectiveWatcher
    ValueSelection value_selection_schema
    This parameter describes which value to select for a given var.
    SearchMonitor * MakeEnterSearchCallback(std::function< void()> callback)
    --— Callback-based search monitors --—
    int heuristic_period
    The distance in nodes between each run of the heuristics.
    std::function< bool(int64, int64, int64)> VariableValueComparator
    STARTS_AT_START and ENDS_AT_END at the same time.
    - - + +
    ModelCache * Cache() const
    Returns the cache of the model.
    Constraint * MakeScalProdLessOrEqual(const std::vector< IntVar * > &vars, const std::vector< int64 > &coefficients, int64 cst)
    OptimizeVar * MakeMinimize(IntVar *const v, int64 step)
    Creates a minimization objective.
    t1 starts at t2 end, i.e. Start(t1) == End(t2) + delay.
    void Add(IntVar *const var)
    Add API.
    -
    static const char kUsageLessConstantExtension[]
    +
    static const char kUsageLessConstantExtension[]
    virtual void Accept(ModelVisitor *const visitor) const
    -
    void set_fail_intercept(std::function< void()> fail_intercept)
    Internal.
    +
    void set_fail_intercept(std::function< void()> fail_intercept)
    Internal.
    virtual SearchLimit * MakeClone() const =0
    Allocates a clone of the limit.
    -
    std::string DebugString() const override
    - +
    std::string DebugString() const override
    +
    Pack * MakePack(const std::vector< IntVar * > &vars, int number_of_bins)
    This constraint packs all variables onto 'number_of_bins' variables.
    void SetAssigned(int var_index)
    - +
    This class represent a reversible FIFO structure.
    - +
    Decision * MakeVariableLessOrEqualValue(IntVar *const var, int64 value)
    - +
    The simple selection is CHOOSE_FIRST_UNBOUND.
    -
    int64 neighbors() const
    The number of neighbors created.
    +
    int64 neighbors() const
    The number of neighbors created.
    Constraint * MakeIsDifferentCt(IntExpr *const v1, IntExpr *const v2, IntVar *const b)
    b == (v1 != v2)
    - +
    void SetStartMin(const IntervalVar *const var, int64 m)
    bool operator==(const SequenceVarElement &element) const
    IntVar * AssignVar(int var_index, int bin_index) const
    - -
    bool operator<(const SolutionData &other) const
    + +
    bool operator<(const SolutionData &other) const
    Selects the next unbound variable on a path, the path being defined by the variables: var[i] correspo...
    bool NameAllVariables() const
    Returns whether all variables should be named.
    Matrix version of the RevBitSet class.
    - - - + + +
    Constraint * MakeIsGreaterCt(IntExpr *const left, IntExpr *const right, IntVar *const b)
    b == (left > right)
    Operator which relaxes two sub-chains of three consecutive arcs each.
    Constraint * MakeNullIntersectExcept(const std::vector< IntVar * > &first_vars, const std::vector< IntVar * > &second_vars, int64 escape_value)
    Creates a constraint that states that all variables in the first vector are different from all variab...
    @@ -218,36 +188,36 @@
    SolutionCollector(Solver *const solver, const Assignment *assignment)
    void desinhibit(Solver *const s)
    This method un-inhibits the demon that was previously inhibited.
    Constraint * MakeSumGreaterOrEqual(const std::vector< IntVar * > &vars, int64 cst)
    -
    const T & Value(int index) const
    +
    const T & Value(int index) const
    Selects the min value of the selected variable.
    Operator which inserts an inactive node into a path.
    -
    bool operator!=(const IntVarElement &element) const
    +
    bool operator!=(const IntVarElement &element) const
    Constraint * MakeNonOverlappingNonStrictBoxesConstraint(const std::vector< IntVar * > &x_vars, const std::vector< IntVar * > &y_vars, const std::vector< IntVar * > &x_size, const std::vector< IntVar * > &y_size)
    This constraint states that all the boxes must not overlap.
    OptimizeVar * MakeWeightedMaximize(const std::vector< IntVar * > &sub_objectives, const std::vector< int64 > &weights, int64 step)
    Creates a maximization weigthed objective.
    -
    SolverState state() const
    State of the solver.
    +
    SolverState state() const
    State of the solver.
    void SetUnassigned(int var_index)
    - +
    virtual void VisitScheduleOrExpedite(IntervalVar *const var, int64 est)
    - - + +
    bool Save(const std::string &filename) const
    Saves the assignment to a file.
    int SearchDepth() const
    Gets the search depth of the current active search.
    virtual void SetEndMin(int64 m)=0
    - + - -
    std::string DebugString() const override
    Pretty Print.
    + +
    std::string DebugString() const override
    Pretty Print.
    SearchMonitor * MakeGenericTabuSearch(bool maximize, IntVar *const v, int64 step, const std::vector< IntVar * > &tabu_vars, int64 forbid_tenure)
    Creates a Tabu Search based on the vars |vars|.
    - -
    static const char kActiveArgument[]
    argument names:
    + +
    static const char kActiveArgument[]
    argument names:
    OptimizeVar(Solver *const s, bool maximize, IntVar *const a, int64 step)
    -
    void WhenRange(Solver::Closure closure)
    Attach a demon that will watch the min or the max of the expression.
    +
    void WhenRange(Solver::Closure closure)
    Attach a demon that will watch the min or the max of the expression.
    LocalSearchPhaseParameters * MakeLocalSearchPhaseParameters(IntVar *objective, LocalSearchOperator *const ls_operator, DecisionBuilder *const sub_decision_builder)
    Local Search Phase Parameters.
    std::function< IntVar *(int64)> Int64ToIntVar
    @@ -256,73 +226,73 @@
    DisjunctiveConstraint * MakeStrictDisjunctiveConstraint(const std::vector< IntervalVar * > &intervals, const std::string &name)
    This constraint forces all interval vars into an non-overlapping sequence.
    bool operator==(const IntVarElement &element) const
    - - + +
    std::function< int64(int64)> IndexEvaluator1
    Callback typedefs.
    Constraint * MakeNonEquality(IntExpr *const left, IntExpr *const right)
    left != right
    -
    void ReSeed(int32 seed)
    Reseed the solver random generator.
    +
    void ReSeed(int32 seed)
    Reseed the solver random generator.
    int64 DurationMax(const IntervalVar *const var) const
    Operator which exchanges the positions of two nodes.
    bool IsPossible(int var_index, int bin_index) const
    IntervalVar * MakeIntervalRelaxedMin(IntervalVar *const interval_var)
    Creates and returns an interval variable that wraps around the given one, relaxing the min start and ...
    - - - + + +
    Relocate neighborhood with length of 1 (see OROPT comment).
    void SetUnperformed(const SequenceVar *const var, const std::vector< int > &unperformed)
    - - + +
    bool CheckConstraint(Constraint *const ct)
    Checks whether adding this constraint will lead to an immediate failure.
    - +
    Operator which makes an inactive node active and an active one inactive.
    -
    void SaveAndAdd(T *adr, T val)
    All-in-one SaveAndAdd_value.
    +
    void SaveAndAdd(T *adr, T val)
    All-in-one SaveAndAdd_value.
    Constraint * MakeElementEquality(const std::vector< int64 > &vals, IntVar *const index, IntVar *const target)
    DecisionBuilder * MakeLocalSearchPhase(Assignment *const assignment, LocalSearchPhaseParameters *const parameters)
    Local Search decision builders factories.
    - +
    IntVar * MakeIntConst(int64 val, const std::string &name)
    IntConst will create a constant expression.
    VariableSelection var_selection_schema
    This parameter describes how the next variable to instantiate will be chosen.
    bool HasName() const
    Returns whether the object has been named or not.
    virtual void VisitIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &tuples)
    virtual void RemoveValue(int64 v)=0
    This method removes the value 'v' from the domain of the variable.
    - -
    void SaveAndSetValue(T *adr, T val)
    All-in-one SaveAndSetValue.
    - + +
    void SaveAndSetValue(T *adr, T val)
    All-in-one SaveAndSetValue.
    +
    void AssignFirstPossibleToBin(int bin_index)
    int64 StartMin(const IntervalVar *const var) const
    -
    std::unique_ptr< Assignment > prototype_
    +
    std::unique_ptr< Assignment > prototype_
    void WriteToProto(SequenceVarAssignment *sequence_var_assignment_proto) const
    SolutionCollector * MakeLastSolutionCollector()
    Collect the last solution of the search.
    int64 wall_time(int n) const
    Returns the wall time in ms for the nth solution.
    After successful NextSolution and before EndSearch.
    virtual int64 EndMin() const =0
    These methods query, set, and watch the end position of the interval var.
    Operator which cross exchanges the starting chains of 2 paths, including exchanging the whole paths.
    - +
    Constraint * MakeIsGreaterOrEqualCt(IntExpr *const left, IntExpr *const right, IntVar *const b)
    b == (left >= right)
    Constraint * MakeSortingConstraint(const std::vector< IntVar * > &vars, const std::vector< IntVar * > &sorted)
    Creates a constraint binding the arrays of variables "vars" and "sorted_vars": sorted_vars[0] must be...
    - - + +
    Constraint * MakeIndexOfFirstMaxValueConstraint(IntVar *index, const std::vector< IntVar * > &vars)
    Creates a constraint that binds the index variable to the index of the first variable with the maximu...
    -
    IntervalVar(Solver *const solver, const std::string &name)
    -
    E * AddAtPosition(V *var, int position)
    Advanced usage: Adds element at a given position; position has to have been allocated with Assignment...
    +
    IntervalVar(Solver *const solver, const std::string &name)
    +
    E * AddAtPosition(V *var, int position)
    Advanced usage: Adds element at a given position; position has to have been allocated with Assignment...
    void ComputePossibleFirstsAndLasts(std::vector< int > *const possible_firsts, std::vector< int > *const possible_lasts)
    Computes the set of indices of interval variables that can be ranked first in the set of unranked act...
    - +
    virtual void Run(Solver *const s)=0
    This is the main callback of the demon.
    -
    void Add(Solver *const s, int index, const T &to_add)
    - +
    void Add(Solver *const s, int index, const T &to_add)
    +
    Decision * MakeSplitVariableDomain(IntVar *const var, int64 val, bool start_with_lower_half)
    -
    virtual void SetValue(int64 v)
    This method sets the value of the expression.
    -
    int index() const
    Returns the index of the variable.
    +
    virtual void SetValue(int64 v)
    This method sets the value of the expression.
    +
    int index() const
    Returns the index of the variable.
    Constraint * MakeIsLessCstCt(IntExpr *const v, int64 c, IntVar *const b)
    b == (v < c)
    - - + +
    Search * ActiveSearch() const
    Returns the active search, nullptr outside search.
    - +
    Constraint * MakeIsLessCt(IntExpr *const left, IntExpr *const right, IntVar *const b)
    b == (left < right)
    bool AcceptDelta(Assignment *delta, Assignment *deltadelta) override
    Internal methods.
    virtual void SetMax(int64 m)=0
    @@ -330,131 +300,131 @@
    void RefuteDecision(Decision *const d) override
    Before refuting the decision.
    Constraint * MakeLexicalLess(const std::vector< IntVar * > &left, const std::vector< IntVar * > &right)
    std::vector<IntVar*>* const sorted);
    std::string DebugString() const override
    -
    Cast constraints are special channeling constraints designed to keep a variable in sync with an expre...
    +
    Cast constraints are special channeling constraints designed to keep a variable in sync with an expre...
    IntExpr * MakeSquare(IntExpr *const expr)
    expr * expr
    t ends after d, i.e. End(t) >= d.
    - - + +
    Move is accepted when the current objective value >= objective.Min.
    RegularLimit * MakeLimit(int64 time, int64 branches, int64 failures, int64 solutions)
    Limits the search with the 'time', 'branches', 'failures' and 'solutions' limits.
    Decision * MakeRankFirstInterval(SequenceVar *const sequence, int index)
    Returns a decision that tries to rank first the ith interval var in the sequence variable.
    - -
    void Incr(Solver *const s, int index)
    - + +
    void Incr(Solver *const s, int index)
    +
    virtual void BeginVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr)
    - +
    void Copy(const SearchLimit *const limit) override
    Copy a limit.
    - +
    Constraint * MakeSumLessOrEqual(const std::vector< IntVar * > &vars, int64 cst)
    Variation on arrays.
    -
    void FreezeQueue()
    This method freezes the propagation queue.
    +
    void FreezeQueue()
    This method freezes the propagation queue.
    void Accept(ModelVisitor *const visitor) const override
    Accepts the given model visitor.
    - - -
    const SequenceContainer & SequenceVarContainer() const
    -
    AssignmentContainer< IntervalVar, IntervalVarElement > IntervalContainer
    - + + +
    const SequenceContainer & SequenceVarContainer() const
    +
    AssignmentContainer< IntervalVar, IntervalVarElement > IntervalContainer
    +
    IntVar * MakeIsLessCstVar(IntExpr *const var, int64 value)
    status var of (var < value)
    - +
    void MakeIntervalVarArray(int count, int64 start_min, int64 start_max, int64 duration_min, int64 duration_max, int64 end_min, int64 end_max, bool optional, const std::string &name, std::vector< IntervalVar * > *const array)
    This method fills the vector with 'count' interval var built with the corresponding parameters.
    Constraint * MakeIsDifferentCstCt(IntExpr *const var, int64 value, IntVar *const boolvar)
    boolvar == (var != value)
    - - + + - - + +
    IntVar * MakeIsDifferentCstVar(IntExpr *const var, int64 value)
    status var of (var != value)
    -
    const IntervalContainer & IntervalVarContainer() const
    +
    const IntervalContainer & IntervalVarContainer() const
    virtual int64 Min() const =0
    -
    std::vector< int64 > tmp_vector_
    Unsafe temporary vector.
    - +
    std::vector< int64 > tmp_vector_
    Unsafe temporary vector.
    +
    Constraint * MakeIntervalVarRelationWithDelay(IntervalVar *const t1, BinaryIntervalRelation r, IntervalVar *const t2, int64 delay)
    This method creates a relation between two interval vars.
    virtual IntVar * Var()=0
    Creates a variable from the expression.
    -
    bool operator!=(const Iterator &other) const
    -
    void WhenAnything(Solver::Closure closure)
    Attaches a closure awakened when anything about this interval changes.
    -
    void set_variable_to_clean_on_fail(IntVar *v)
    Shortcut for variable cleaner.
    - +
    bool operator!=(const Iterator &other) const
    +
    void WhenAnything(Solver::Closure closure)
    Attaches a closure awakened when anything about this interval changes.
    +
    void set_variable_to_clean_on_fail(IntVar *v)
    Shortcut for variable cleaner.
    +
    std::string DebugString() const override
    DecisionBuilder * MakeConstraintAdder(Constraint *const ct)
    Returns a decision builder that will add the given constraint to the model.
    IntVar * MakeIsEqualVar(IntExpr *const v1, IntExpr *v2)
    status var of (v1 == v2)
    - - - + + +
    void SetSequence(const SequenceVar *const var, const std::vector< int > &forward_sequence, const std::vector< int > &backward_sequence, const std::vector< int > &unperformed)
    virtual void VisitSplitVariableDomain(IntVar *const var, int64 value, bool start_with_lower_half)
    void DurationRange(int64 *const dmin, int64 *const dmax) const
    Returns the minimum and maximum duration of combined interval vars in the sequence.
    -
    int64 One()
    This method returns 1.
    -
    const std::vector< IntervalVar * > intervals_
    - +
    int64 One()
    This method returns 1.
    +
    const std::vector< IntervalVar * > intervals_
    +
    virtual const std::vector< IntVar * > & time_cumuls() const =0
    - +
    LocalSearchFilter * MakeVariableDomainFilter()
    Local Search Filters.
    - -
    A sequence variable is a variable whose domain is a set of possible orderings of the interval variabl...
    -
    This class encapsulates an objective.
    - - + +
    A sequence variable is a variable whose domain is a set of possible orderings of the interval variabl...
    +
    This class encapsulates an objective.
    + +
    Keeps the default behavior, i.e.
    SequenceVar(Solver *const s, const std::vector< IntervalVar * > &intervals, const std::vector< IntVar * > &nexts, const std::string &name)
    t1 ends at t2 end, i.e. End(t1) == End(t2) + delay.
    - +
    virtual void VisitIntegerExpressionArgument(const std::string &arg_name, IntExpr *const argument)
    Visit integer expression argument.
    virtual bool AtSolution()
    This method is called when a valid solution is found.
    IntExpr * MakeMonotonicElement(IndexEvaluator1 values, bool increasing, IntVar *const index)
    Function based element.
    -
    CastConstraint(Solver *const solver, IntVar *const target_var)
    +
    CastConstraint(Solver *const solver, IntVar *const target_var)
    IntExpr * RegisterIntExpr(IntExpr *const expr)
    Registers a new IntExpr and wraps it inside a TraceIntExpr if necessary.
    void ExportProfilingOverview(const std::string &filename)
    Exports the profiling information in a human readable overview.
    bool HasName(const PropagationBaseObject *object) const
    Returns whether the object has been named or not.
    This is the base class for all expressions that are not variables.
    - - + +
    Assignment * MakeAssignment()
    This method creates an empty assignment.
    Selects the variable with the highest ending time of all variables, and fixes the ending time to this...
    virtual int64 DurationMax() const =0
    IntervalVar * MakeFixedDurationStartSyncedOnEndIntervalVar(IntervalVar *const interval_var, int64 duration, int64 offset)
    Creates an interval var with a fixed duration whose start is synchronized with the end of another int...
    - +
    int64 failures(int n) const
    Returns the number of failures encountered at the time of the nth solution.
    virtual IntExpr * DurationExpr()=0
    - - -
    const std::vector< E > & elements() const
    - -
    virtual bool IsUncheckedSolutionLimitReached()
    Returns true if the limit of solutions has been reached including unchecked solutions.
    - -
    Demon()
    This indicates the priority of a demon.
    - -
    std::function< std::string()> display_callback
    SearchMonitors will display the result of display_callback at each new solution found.
    -
    A Demon is the base element of a propagation queue.
    -
    T * RevAllocArray(T *object)
    Like RevAlloc() above, but for an array of objects: the array must have been allocated with the new[]...
    + + +
    const std::vector< E > & elements() const
    + +
    virtual bool IsUncheckedSolutionLimitReached()
    Returns true if the limit of solutions has been reached including unchecked solutions.
    + +
    Demon()
    This indicates the priority of a demon.
    + +
    std::function< std::string()> display_callback
    SearchMonitors will display the result of display_callback at each new solution found.
    +
    A Demon is the base element of a propagation queue.
    +
    T * RevAllocArray(T *object)
    Like RevAlloc() above, but for an array of objects: the array must have been allocated with the new[]...
    Constraint * MakeGreater(IntExpr *const left, IntExpr *const right)
    left > right
    int64 DurationMin(const IntervalVar *const var) const
    Constraint * MakeIsMemberCt(IntExpr *const expr, const std::vector< int64 > &values, IntVar *const boolvar)
    boolvar == (expr in set)
    -
    static const char kInt64ToInt64Extension[]
    +
    static const char kInt64ToInt64Extension[]
    Constraint * MakeSubCircuit(const std::vector< IntVar * > &nexts)
    Force the "nexts" variable to create a complete Hamiltonian path for those that do not loop upon them...
    - - - -
    int64 TransitionTime(int before_index, int after_index)
    + + + +
    int64 TransitionTime(int before_index, int after_index)
    void ExitSearch() override
    End of the search.
    -
    void WhenDomain(Solver::Closure closure)
    This method attaches a closure that will watch any domain modification of the domain of the variable.
    +
    void WhenDomain(Solver::Closure closure)
    This method attaches a closure that will watch any domain modification of the domain of the variable.
    IntVar * MakeIsEqualCstVar(IntExpr *const var, int64 value)
    status var of (var == value)
    IntVar * MakeIsGreaterOrEqualVar(IntExpr *const left, IntExpr *const right)
    status var of (left >= right)
    void CopyIntersection(const Assignment *assignment)
    Copies the intersection of the two assignments to the current assignment.
    -
    void WhenDurationBound(Solver::Action action)
    +
    void WhenDurationBound(Solver::Action action)
    void BeginNextDecision(DecisionBuilder *const b) override
    Before calling DecisionBuilder::Next.
    -
    int constraints() const
    Counts the number of constraints that have been added to the solver before the search.
    +
    int constraints() const
    Counts the number of constraints that have been added to the solver before the search.
    std::string model_name() const
    Returns the name of the model.
    - +
    std::string SearchContext() const
    virtual void RemoveValues(const std::vector< int64 > &values)
    This method remove the values from the domain of the variable.
    void PeriodicCheck() override
    Periodic call to check limits in long running methods.
    @@ -462,83 +432,83 @@
    IntVar * MakeIsGreaterOrEqualCstVar(IntExpr *const var, int64 value)
    status var of (var >= value)
    void PostAndPropagate()
    Calls Post and then Propagate to initialize the constraints.
    virtual int64 StartMax() const =0
    - - + +
    int64 branches(int n) const
    Returns the number of branches when the nth solution was found.
    Constraint * MakeAllDifferent(const std::vector< IntVar * > &vars)
    All variables are pairwise different.
    IntExpr * MakeMax(const std::vector< IntVar * > &vars)
    std::max(vars)
    - +
    IntervalVar * MakeFixedDurationStartSyncedOnStartIntervalVar(IntervalVar *const interval_var, int64 duration, int64 offset)
    Creates an interval var with a fixed duration whose start is synchronized with the start of another i...
    const std::vector< int > & Unperformed() const
    -
    static const char kAbs[]
    Constraint and Expression types.
    +
    static const char kAbs[]
    Constraint and Expression types.
    OptimizeVar * MakeMaximize(IntVar *const v, int64 step)
    Creates a maximization objective.
    -
    int32 Rand32(int32 size)
    Returns a random value between 0 and 'size' - 1;.
    - -
    int64 branches() const
    The number of branches explored since the creation of the solver.
    +
    int32 Rand32(int32 size)
    Returns a random value between 0 and 'size' - 1;.
    + +
    int64 branches() const
    The number of branches explored since the creation of the solver.
    OptimizeVar * MakeWeightedMinimize(const std::vector< IntVar * > &sub_objectives, const std::vector< int64 > &weights, int64 step)
    Creates a minimization weighted objective.
    - - + +
    int64 PerformedMax(const IntervalVar *const var) const
    - +
    bool use_last_conflict
    Should we use last conflict method. The default is false.
    - + -
    std::vector< SolutionData > solution_data_
    -
    static const int64 kMinValidValue
    The smallest acceptable value to be returned by StartMin()
    - +
    std::vector< SolutionData > solution_data_
    +
    static const int64 kMinValidValue
    The smallest acceptable value to be returned by StartMin()
    +
    virtual void Copy(const SearchLimit *const limit)=0
    Copy a limit.
    bool IsCastConstraint() const
    Is the constraint created by a cast from expression to integer variable?
    - +
    void SetEndRange(const IntervalVar *const var, int64 mi, int64 ma)
    int64 Min(const IntVar *const var) const
    -
    void reset_action_on_fail()
    This method clears the failure callback.
    - +
    void reset_action_on_fail()
    This method clears the failure callback.
    +
    SearchMonitor * MakeGuidedLocalSearch(bool maximize, IntVar *const objective, IndexEvaluator2 objective_function, int64 step, const std::vector< IntVar * > &vars, double penalty_factor)
    Creates a Guided Local Search monitor.
    - +
    virtual bool AcceptDelta(Assignment *delta, Assignment *deltadelta)
    - +
    SearchMonitor * MakeAtSolutionCallback(std::function< void()> callback)
    virtual IntExpr * SafeDurationExpr(int64 unperformed_value)=0
    int64 Max(const IntVar *const var) const
    void AddWeightedSumOfAssignedDimension(const std::vector< int64 > &weights, IntVar *const cost_var)
    This dimension enforces that cost_var == sum of weights[i] for all objects 'i' assigned to a bin.
    Constraint * MakeNonOverlappingBoxesConstraint(const std::vector< IntVar * > &x_vars, const std::vector< IntVar * > &y_vars, const std::vector< IntVar * > &x_size, const std::vector< IntVar * > &y_size)
    This constraint states that all the boxes must not overlap.
    - +
    std::string DebugString() const override
    -
    This class is used to manage a pool of solutions.
    +
    This class is used to manage a pool of solutions.
    int initialization_splits
    Maximum number of intervals that the initialization of impacts will scan per variable.
    SolutionCollector * MakeNBestValueSolutionCollector(const Assignment *const assignment, int solution_count, bool maximize)
    Same as MakeBestValueSolutionCollector but collects the best solution_count solutions.
    - +
    void SetStartMax(const IntervalVar *const var, int64 m)
    void SetTransitionTime(Solver::IndexEvaluator2 transition_time)
    Add a transition time between intervals.
    void LoadFromProto(const IntVarAssignment &int_var_assignment_proto)
    - +
    LocalSearchOperator * MakeMoveTowardTargetOperator(const Assignment &target)
    Creates a local search operator that tries to move the assignment of some variables toward a target.
    - +
    bool operator==(const IntervalVarElement &element) const
    -
    This class adds reversibility to a POD type.
    +
    This class adds reversibility to a POD type.
    virtual int64 DurationMin() const =0
    These methods query, set, and watch the duration of the interval var.
    RegularLimit * MakeBranchesLimit(int64 branches)
    Creates a search limit that constrains the number of branches explored in the search tree.
    Demon * MakeConstraintInitialPropagateCallback(Constraint *const ct)
    This method is a specialized case of the MakeConstraintDemon method to call the InitiatePropagate of ...
    virtual void BeginFail()
    Just when the failure occurs.
    Among unbound variables, select the variable with the highest maximal value.
    -
    bool operator!=(const SequenceVarElement &element) const
    -
    bool crossed() const
    Returns true if the limit has been crossed.
    +
    bool operator!=(const SequenceVarElement &element) const
    +
    bool crossed() const
    Returns true if the limit has been crossed.
    Constraint * MakeGreaterOrEqual(IntExpr *const left, IntExpr *const right)
    left >= right
    Lin–Kernighan local search.
    void RankNotFirst(int index)
    Indicates that the index_th interval var will not be ranked first of all currently unranked interval ...
    - - + +
    virtual void WhenEndRange(Demon *const d)=0
    t1 ends after t2 end, i.e. End(t1) >= End(t2) + delay.
    Demon * MakeActionDemon(Action action)
    Creates a demon from a callback.
    int ProgressPercent() override
    Returns a percentage representing the propress of the search before reaching limits.
    - +
    const std::vector< int > & BackwardSequence(const SequenceVar *const var) const
    std::string DebugString() const override
    - - + +
    SolutionCollector * MakeBestValueSolutionCollector(const Assignment *const assignment, bool maximize)
    Collect the solution corresponding to the optimal value of the objective of 'assignment'; if 'assignm...
    DecisionBuilder * MakeApplyBranchSelector(BranchSelector bs)
    Creates a decision builder that will set the branch selector.
    @@ -548,22 +518,22 @@
    STARTS_AFTER or ENDS_BEFORE, i.e.
    virtual void SetDurationMax(int64 m)=0
    virtual void VisitSequenceArgument(const std::string &arg_name, SequenceVar *const argument)
    Visit sequence argument.
    - -
    bool operator==(const Assignment &assignment) const
    + +
    bool operator==(const Assignment &assignment) const
    void Reset(IntervalVar *const var)
    void Copy(const Assignment *assignment)
    Copies 'assignment' to the current assignment, clearing its previous content.
    - + - +
    virtual bool MayBePerformed() const =0
    virtual int VarType() const
    virtual void Accept(ModelVisitor *const visitor) const
    Accepts the given visitor.
    -
    void set_optimization_direction(OptimizationDirection direction)
    +
    void set_optimization_direction(OptimizationDirection direction)
    Decision * MakeRankLastInterval(SequenceVar *const sequence, int index)
    Returns a decision that tries to rank last the ith interval var in the sequence variable.
    - -
    static const char kWeightedSumOfAssignedEqualVariableExtension[]
    + +
    static const char kWeightedSumOfAssignedEqualVariableExtension[]
    const std::vector< int > & ForwardSequence() const
    void AddPropagationMonitor(PropagationMonitor *const monitor)
    Adds the propagation monitor to the solver.
    virtual bool WasPerformedBound() const =0
    @@ -572,125 +542,125 @@
    int64 EndValue(int n, IntervalVar *const var) const
    This is a shortcut to get the EndValue of 'var' in the nth solution.
    RegularLimit * MakeFailuresLimit(int64 failures)
    Creates a search limit that constrains the number of failures that can happen when exploring the sear...
    bool AtSolution() override
    This method is called when a valid solution is found.
    - +
    virtual int64 OldEndMax() const =0
    DecisionBuilder * Compose(DecisionBuilder *const db1, DecisionBuilder *const db2)
    Creates a decision builder which sequentially composes decision builders.
    void NewSearch(DecisionBuilder *const db, const std::vector< SearchMonitor * > &monitors)
    - +
    void AddWeightedSumLessOrEqualConstantDimension(const std::vector< int64 > &weights, const std::vector< int64 > &bounds)
    Dimensions are additional constraints than can restrict what is possible with the pack constraint.
    Constraint * MakeLessOrEqual(IntExpr *const left, IntExpr *const right)
    left <= right
    - - -
    void Push(const SolutionData &data)
    -
    static const int64 kMaxValidValue
    The largest acceptable value to be returned by EndMax()
    + + +
    void Push(const SolutionData &data)
    +
    static const int64 kMaxValidValue
    The largest acceptable value to be returned by EndMax()
    Constraint * MakePathCumul(const std::vector< IntVar * > &nexts, const std::vector< IntVar * > &active, const std::vector< IntVar * > &cumuls, const std::vector< IntVar * > &transits)
    Creates a constraint which accumulates values along a path such that: cumuls[next[i]] = cumuls[i] + t...
    - +
    bool SolveAndCommit(DecisionBuilder *const db, const std::vector< SearchMonitor * > &monitors)
    SolveAndCommit using a decision builder and up to three search monitors, usually one for the objectiv...
    -
    void WhenPerformedBound(Solver::Action action)
    +
    void WhenPerformedBound(Solver::Action action)
    Operator which reverses a sub-chain of a path.
    virtual int64 OldStartMin() const =0
    - +
    ModelVisitor * MakeStatisticsModelVisitor()
    Displays some nice statistics on the model.
    -
    const E & Element(const V *const var) const
    +
    const E & Element(const V *const var) const
    void TopPeriodicCheck()
    Performs PeriodicCheck on the top-level search; for instance, can be called from a nested solve to ch...
    -
    RevArray(int size, const T &val)
    - -
    static const char kSolutionLimitArgument[]
    +
    RevArray(int size, const T &val)
    + +
    static const char kSolutionLimitArgument[]
    void Accept(ModelVisitor *const visitor) const override
    Accepts the given visitor.
    Decision * MakeDecision(Action apply, Action refute)
    IntVar * MakeBoolVar()
    MakeBoolVar will create a variable with a {0, 1} domain.
    IntervalVar * MakeFixedDurationEndSyncedOnStartIntervalVar(IntervalVar *const interval_var, int64 duration, int64 offset)
    Creates an interval var with a fixed duration whose end is synchronized with the start of another int...
    DecisionBuilder * MakeNestedOptimize(DecisionBuilder *const db, Assignment *const solution, bool maximize, int64 step)
    NestedOptimize will collapse a search tree described by a decision builder 'db' and a set of monitors...
    - +
    IntVar * MakeIsLessOrEqualCstVar(IntExpr *const var, int64 value)
    status var of (var <= value)
    -
    bool IsVar() const override
    Returns true if the expression is indeed a variable.
    - +
    bool IsVar() const override
    Returns true if the expression is indeed a variable.
    +
    Constraint * MakeMaxEquality(const std::vector< IntVar * > &vars, IntVar *const max_var)
    virtual void VisitIntervalVariable(const IntervalVar *const variable, const std::string &operation, int64 value, IntervalVar *const delegate)
    void AddSumVariableWeightsLessOrEqualConstantDimension(const std::vector< IntVar * > &usage, const std::vector< int64 > &capacity)
    This dimension imposes: forall b in bins, sum (i in items: usage[i] * is_assigned(i,...
    - - + +
    void Copy(const SequenceVarElement &element)
    IntVar * MakeIsDifferentVar(IntExpr *const v1, IntExpr *const v2)
    status var of (v1 != v2)
    Constraint * MakeIsLessOrEqualCt(IntExpr *const left, IntExpr *const right, IntVar *const b)
    b == (left <= right)
    - +
    virtual IntExpr * EndExpr()=0
    - -
    void ShouldFail()
    These methods are only useful for the SWIG wrappers, which need a way to externally cause the Solver ...
    - + +
    void ShouldFail()
    These methods are only useful for the SWIG wrappers, which need a way to externally cause the Solver ...
    +
    void SetObjectiveRange(int64 l, int64 u)
    -
    void WhenDurationRange(Solver::Action action)
    +
    void WhenDurationRange(Solver::Action action)
    int64 StartMax(const IntervalVar *const var) const
    Move is accepted when the current objective value is in the interval objective.Min .
    Selects the first possible value which is the closest to the center of the domain of the selected var...
    void SetPerformedRange(const IntervalVar *const var, int64 mi, int64 ma)
    -
    void WhenEndBound(Solver::Closure closure)
    +
    void WhenEndBound(Solver::Closure closure)
    LocalSearchOperators
    This enum is used in Solver::MakeOperator to specify the neighborhood to create.
    virtual void SetEndMax(int64 m)=0
    DecisionBuilder * MakeStoreAssignment(Assignment *assignment)
    Returns a DecisionBuilder which stores an Assignment (calls void Assignment::Store())
    -
    void Resize(size_t size)
    Advanced usage: Resizes the container, potentially adding elements with null variables.
    - +
    void Resize(size_t size)
    Advanced usage: Resizes the container, potentially adding elements with null variables.
    +
    Among unbound variables, select the variable with the smallest size, i.e., the smallest number of pos...
    Constraint * MakeIfThenElseCt(IntVar *const condition, IntExpr *const then_expr, IntExpr *const else_expr, IntVar *const target_var)
    Special cases with arrays of size two.
    - + - +
    Operator which defines a neighborhood to decrement values.
    -
    std::string DebugString() const override
    - - +
    std::string DebugString() const override
    + +
    IntVar * MakeIsGreaterVar(IntExpr *const left, IntExpr *const right)
    status var of (left > right)
    -
    static Iterator Begin(IntVarIterator *it)
    These are the only way to construct an Iterator.
    +
    static Iterator Begin(IntVarIterator *it)
    These are the only way to construct an Iterator.
    const std::vector< int > & ForwardSequence(int n, SequenceVar *const var) const
    This is a shortcut to get the ForwardSequence of 'var' in the nth solution.
    virtual void WhenPerformedBound(Demon *const d)=0
    virtual bool Contains(int64 v) const =0
    This method returns whether the value 'v' is in the domain of the variable.
    -
    static const char kVariableGroupExtension[]
    +
    static const char kVariableGroupExtension[]
    virtual void BeginVisitExtension(const std::string &type)
    -
    Creates a search monitor from logging parameters.
    +
    Creates a search monitor from logging parameters.
    virtual void BeginInitialPropagation()
    Before the initial propagation.
    SolutionCollector * MakeFirstSolutionCollector()
    Collect the first solution of the search.
    - +
    virtual bool MustBePerformed() const =0
    These methods query, set, and watch the performed status of the interval var.
    virtual void VisitIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
    -
    AssignmentContainer< SequenceVar, SequenceVarElement > SequenceContainer
    +
    AssignmentContainer< SequenceVar, SequenceVarElement > SequenceContainer
    bool InstrumentsDemons() const
    Returns whether we are instrumenting demons.
    - -
    void SetValue(Solver *const s, const T &val)
    -
    int64 demon_runs(DemonPriority p) const
    The number of demons executed during search for a given priority.
    + +
    void SetValue(Solver *const s, const T &val)
    +
    int64 demon_runs(DemonPriority p) const
    The number of demons executed during search for a given priority.
    virtual int64 StartMin() const =0
    These methods query, set, and watch the start position of the interval var.
    Constraint * MakeDeviation(const std::vector< IntVar * > &vars, IntVar *const deviation_var, int64 total_sum)
    Deviation constraint: sum_i |n * vars[i] - total_sum| <= deviation_var and sum_i vars[i] == total_sum...
    void AddCastConstraint(CastConstraint *const constraint, IntVar *const target_var, IntExpr *const expr)
    Adds 'constraint' to the solver and marks it as a cast constraint, that is, a constraint created call...
    virtual void VisitRankLastInterval(SequenceVar *const sequence, int index)
    -
    IntervalContainer * MutableIntervalVarContainer()
    +
    IntervalContainer * MutableIntervalVarContainer()
    RegularLimitParameters MakeDefaultRegularLimitParameters() const
    Creates a regular limit proto containing default values.
    Decision * MakeVariableGreaterOrEqualValue(IntVar *const var, int64 value)
    Constraint * MakeIsEqualCt(IntExpr *const v1, IntExpr *v2, IntVar *const b)
    b == (v1 == v2)
    Constraint * MakeSumEquality(const std::vector< IntVar * > &vars, int64 cst)
    Constraint * MakeCount(const std::vector< IntVar * > &vars, int64 value, int64 max_count)
    |{i | vars[i] == value}| == max_count
    - +
    MarkerType
    This enum is used internally in private methods Solver::PushState and Solver::PopState to tag states ...
    - +
    IntervalVar * MakeFixedInterval(int64 start, int64 duration, const std::string &name)
    Creates a fixed and performed interval.
    void SetDurationRange(const IntervalVar *const var, int64 mi, int64 ma)
    - +
    virtual void Install()
    Registers itself on the solver such that it gets notified of the search and propagation events.
    -
    static const char kFailuresLimitArgument[]
    +
    static const char kFailuresLimitArgument[]
    Constraint * MakeIsGreaterCstCt(IntExpr *const v, int64 c, IntVar *const b)
    b == (v > c)
    void SetDurationMin(const IntervalVar *const var, int64 m)
    Pairs are compared at the first call of the selector, and results are cached.
    - +
    void OneDomain(int var_index)
    -
    int64 accepted_neighbors() const
    The number of accepted neighbors.
    - -
    virtual int ProgressPercent()
    Returns a percentage representing the propress of the search before reaching limits.
    +
    int64 accepted_neighbors() const
    The number of accepted neighbors.
    + +
    virtual int ProgressPercent()
    Returns a percentage representing the propress of the search before reaching limits.
    Holds semantic information stating that the 'expression' has been cast into 'variable' using the Var(...
    virtual IntVar * IsDifferent(int64 constant)=0
    @@ -698,66 +668,66 @@
    void SetRange(const IntVar *const var, int64 l, int64 u)
    virtual void EndInitialPropagation()
    After the initial propagation.
    t starts at d, i.e. Start(t) == d.
    - +
    void Init() override
    This method is called when the search limit is initialized.
    -
    void WhenPerformedBound(Solver::Closure closure)
    - - +
    void WhenPerformedBound(Solver::Closure closure)
    + + - -
    int64 failures() const
    The number of failures encountered since the creation of the solver.
    + +
    int64 failures() const
    The number of failures encountered since the creation of the solver.
    void Activate(const IntVar *const var)
    - +
    static const int kNumPriorities
    Number of priorities for demons.
    -
    void WhenStartRange(Solver::Closure closure)
    +
    void WhenStartRange(Solver::Closure closure)
    Constraint * MakeAllDifferentExcept(const std::vector< IntVar * > &vars, int64 escape_value)
    All variables are pairwise different, unless they are assigned to the escape value.
    IntVar * MakeIsGreaterCstVar(IntExpr *const var, int64 value)
    status var of (var > value)
    - +
    virtual int64 OldEndMin() const =0
    Constraint * MakeCircuit(const std::vector< IntVar * > &nexts)
    Force the "nexts" variable to create a complete Hamiltonian path.
    IntVar * Next(int index) const
    Returns the next of the index_th interval of the sequence.
    t starts after d, i.e. Start(t) >= d.
    -
    bool operator!=(const IntervalVarElement &element) const
    +
    bool operator!=(const IntervalVarElement &element) const
    EvaluatorLocalSearchOperators
    This enum is used in Solver::MakeOperator associated with an evaluator to specify the neighborhood to...
    - +
    LocalSearchFilterBound
    This enum is used in Solver::MakeLocalSearchObjectiveFilter.
    Constraint * MakeNoCycle(const std::vector< IntVar * > &nexts, const std::vector< IntVar * > &active, IndexFilter1 sink_handler=nullptr)
    Prevent cycles.
    void SetMax(const IntVar *const var, int64 m)
    -
    bool UseFastLocalSearch() const
    Returns true if fast local search is enabled.
    +
    bool UseFastLocalSearch() const
    Returns true if fast local search is enabled.
    -
    This class is the root class of all solution collectors.
    +
    This class is the root class of all solution collectors.
    Move is accepted when the current objective value <= objective.Max.
    -
    A DecisionBuilder is responsible for creating the search tree.
    +
    A DecisionBuilder is responsible for creating the search tree.
    virtual void ApplyDecision(Decision *const d)
    Before applying the decision.
    virtual void BeginVisitConstraint(const std::string &type_name, const Constraint *const constraint)
    void MakeFixedDurationIntervalVarArray(int count, int64 start_min, int64 start_max, int64 duration, bool optional, const std::string &name, std::vector< IntervalVar * > *const array)
    This method fills the vector with 'count' interval variables built with the corresponding parameters.
    void AddObjective(IntVar *const v)
    - +
    void SetPerformedMin(const IntervalVar *const var, int64 m)
    virtual IntVarIterator * MakeHoleIterator(bool reversible) const =0
    Creates a hole iterator.
    bool AcceptSolution() override
    This method is called when a solution is found.
    - - - - -
    void WhenStartRange(Solver::Action action)
    - - -
    DemonProfiler * demon_profiler() const
    Access to demon profiler.
    + + + + +
    void WhenStartRange(Solver::Action action)
    + + +
    DemonProfiler * demon_profiler() const
    Access to demon profiler.
    virtual void SetValues(const std::vector< int64 > &values)
    This method intersects the current domain with the values in the array.
    IntExpr * MakeAbs(IntExpr *const expr)
    |expr|
    - +
    virtual void VisitSetVariableValue(IntVar *const var, int64 value)
    PropagationMonitor * GetPropagationMonitor() const
    Returns the propagation monitor.
    IntVar * MakeIntVar(int64 min, int64 max, const std::string &name)
    MakeIntVar will create the best range based int var for the bounds given.
    - +
    virtual IntVar * Var()
    Creates a Boolean variable representing the status of the constraint (false = constraint is violated,...
    void AddLocalSearchMonitor(LocalSearchMonitor *monitor)
    Adds the local search monitor to the solver.
    - +
    void Deactivate(const IntVar *const var)
    virtual bool Check()=0
    This method is called to check the status of the limit.
    void SetEndMax(const IntervalVar *const var, int64 m)
    @@ -765,27 +735,27 @@
    void Accept(ModelVisitor *const visitor) const override
    Accepts the given visitor.
    void LoadFromProto(const IntervalVarAssignment &interval_var_assignment_proto)
    void SetPerformedValue(const IntervalVar *const var, int64 value)
    -
    const T & operator[](int index) const
    +
    const T & operator[](int index) const
    std::string DebugString() const
    !defined(SWIG)
    virtual uint64 Size() const =0
    This method returns the number of values in the domain of the variable.
    DecisionBuilder * MakeRestoreAssignment(Assignment *assignment)
    Returns a DecisionBuilder which restores an Assignment (calls void Assignment::Restore())
    - - + +
    virtual void RegisterNewSolution(Assignment *const assignment)=0
    This method is called when a new solution has been accepted by the local search.
    -
    std::vector< Assignment * > recycle_solutions_
    +
    std::vector< Assignment * > recycle_solutions_
    IntExpr * MakeIndexExpression(const std::vector< IntVar * > &vars, int64 value)
    Returns the expression expr such that vars[expr] == value.
    - - -
    int branch_period
    SearchMonitors will display a periodic search log every branch_period branches explored.
    + + +
    int branch_period
    SearchMonitors will display a periodic search log every branch_period branches explored.
    virtual void AfterDecision(Decision *const d, bool apply)
    Just after refuting or applying the decision, apply is true after Apply.
    - -
    absl::Duration duration_limit() const
    + +
    absl::Duration duration_limit() const
    Constraint * MakeNullIntersect(const std::vector< IntVar * > &first_vars, const std::vector< IntVar * > &second_vars)
    Creates a constraint that states that all variables in the first vector are different from all variab...
    -
    static const char kIntervalBinaryRelation[]
    +
    static const char kIntervalBinaryRelation[]
    DecisionBuilder * decision_builder
    When defined, this overrides the default impact based decision builder.
    - - + +
    int64 Value(const IntVar *const var) const
    Constraint * MakeInversePermutationConstraint(const std::vector< IntVar * > &left, const std::vector< IntVar * > &right)
    Creates a constraint that enforces that 'left' and 'right' both represent permutations of [0....
    std::string DebugString() const override
    @@ -793,32 +763,32 @@
    virtual void VisitIntegerVariable(const IntVar *const variable, IntExpr *const delegate)
    IntExpr * MakeProd(IntExpr *const left, IntExpr *const right)
    left * right
    virtual const std::vector< IntVar * > & nexts() const =0
    -
    const IntContainer & IntVarContainer() const
    -
    void Copy(const AssignmentContainer< V, E > &container)
    Copies all the elements of 'container' to this container, clearing its previous content.
    +
    const IntContainer & IntVarContainer() const
    +
    void Copy(const AssignmentContainer< V, E > &container)
    Copies all the elements of 'container' to this container, clearing its previous content.
    virtual void SetStartMax(int64 m)=0
    virtual IntExpr * SafeStartExpr(int64 unperformed_value)=0
    These methods create expressions encapsulating the start, end and duration of the interval var.
    const std::vector< int > & BackwardSequence() const
    void SetImpossible(int var_index, int bin_index)
    - +
    virtual void EndVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr)
    void SetEndMin(const IntervalVar *const var, int64 m)
    bool persistent_impact
    Whether to keep the impact from the first search for other searches, or to recompute the impact for e...
    virtual Solver::DemonPriority priority() const
    This method returns the priority of the demon.
    void FillSequence(std::vector< int > *const rank_first, std::vector< int > *const rank_last, std::vector< int > *const unperformed) const
    Clears 'rank_first' and 'rank_last', and fills them with the intervals in the order of the ranks.
    virtual void VisitIntegerArgument(const std::string &arg_name, int64 value)
    Visit integer arguments.
    - +
    void Copy(const IntVarElement &element)
    t ends before d, i.e. End(t) <= d.
    - -
    void SetValue(Solver *const s, int index, const T &val)
    - + +
    void SetValue(Solver *const s, int index, const T &val)
    +
    virtual const std::vector< IntVar * > & actives() const =0
    - - - + + +
    int random_seed
    Seed used to initialize the random part in some heuristics.
    -
    E * FastAdd(V *var)
    Adds element without checking its presence in the container.
    +
    E * FastAdd(V *var)
    Adds element without checking its presence in the container.
    Constraint * MakeMemberCt(IntExpr *const expr, const std::vector< int64 > &values)
    expr in set.
    void Assign(int var_index, int bin_index)
    @@ -826,31 +796,31 @@
    virtual IntExpr * SafeEndExpr(int64 unperformed_value)=0
    void SetValue(const IntVar *const var, int64 value)
    Local Search Filters are used for fast neighbor pruning.
    - +
    IntervalVar * MakeIntervalRelaxedMax(IntervalVar *const interval_var)
    Creates and returns an interval variable that wraps around the given one, relaxing the max start and ...
    bool IsUncheckedSolutionLimitReached() override
    Returns true if the limit of solutions has been reached including unchecked solutions.
    -
    SequenceContainer * MutableSequenceVarContainer()
    - - +
    SequenceContainer * MutableSequenceVarContainer()
    + +
    virtual void SetPerformed(bool val)=0
    std::ostream & operator<<(std::ostream &out, const Solver *const s)
    -
    void WhenDurationBound(Solver::Closure closure)
    - -
    virtual std::string DebugString() const
    +
    void WhenDurationBound(Solver::Closure closure)
    + +
    virtual std::string DebugString() const
    void WhenAnything(Demon *const d)
    Attaches a demon awakened when anything about this interval changes.
    - +
    int heuristic_num_failures_limit
    The failure limit for each heuristic that we run.
    LocalSearchOperator * MakeOperator(const std::vector< IntVar * > &vars, LocalSearchOperators op)
    Local Search Operators.
    const std::vector< int > & Unperformed(const SequenceVar *const var) const
    - +
    DecisionBuilder * MakeSolveOnce(DecisionBuilder *const db)
    SolveOnce will collapse a search tree described by a decision builder 'db' and a set of monitors and ...
    virtual int64 OldDurationMax() const =0
    - -
    static Iterator End(IntVarIterator *it)
    + +
    static Iterator End(IntVarIterator *it)
    RegularLimit(Solver *const s, int64 time, int64 branches, int64 failures, int64 solutions, bool smart_time_check, bool cumulative)
    - +
    Among unbound variables, select the variable with the smallest size, i.e., the smallest number of pos...
    -
    static const char kBranchesLimitArgument[]
    +
    static const char kBranchesLimitArgument[]
    void RemoveAllPossibleFromBin(int bin_index)
    Pack(Solver *const s, const std::vector< IntVar * > &vars, int number_of_bins)
    void SetDurationValue(const IntervalVar *const var, int64 value)
    @@ -858,28 +828,28 @@
    IntVarElement * Add(IntVar *const var)
    void RankFirst(int index)
    Ranks the index_th interval var first of all unranked interval vars.
    -
    A constraint is the main modeling object.
    +
    A constraint is the main modeling object.
    Operator which defines one neighbor per variable.
    Among unbound variables, select the variable with the smallest size.
    SearchMonitor * MakeLubyRestart(int scale_factor)
    This search monitor will restart the search periodically.
    - +
    std::function< bool(int64)> IndexFilter1
    - - + +
    virtual void WhenBound(Demon *d)=0
    This method attaches a demon that will be awakened when the variable is bound.
    IntVar * MakeIsLessVar(IntExpr *const left, IntExpr *const right)
    status var of (left < right)
    IntVarElement * FastAdd(IntVar *const var)
    Adds without checking if variable has been previously added.
    Constraint * MakeCover(const std::vector< IntervalVar * > &vars, IntervalVar *const target_var)
    This constraint states that the target_var is the convex hull of the intervals.
    - +
    std::function< int64(Solver *solver, const std::vector< IntVar * > &vars, int64 first_unbound, int64 last_unbound)> VariableIndexSelector
    - +
    void set_name(const std::string &name)
    -
    static const char kStartSyncOnEndOperation[]
    +
    static const char kStartSyncOnEndOperation[]
    int64 wall_time() const
    DEPRECATED: Use Now() instead.
    DemonPriority
    This enum represents the three possible priorities for a demon in the Solver queue.
    const std::vector< int > & ForwardSequence(const SequenceVar *const var) const
    Constraint * MakeNotMemberCt(IntExpr *const expr, const std::vector< int64 > &values)
    expr not in set.
    -
    double scaling_factor
    When displayed, objective or var values will be scaled and offset by the given values in the followin...
    +
    double scaling_factor
    When displayed, objective or var values will be scaled and offset by the given values in the followin...
    SearchMonitor * MakeExitSearchCallback(std::function< void()> callback)
    Among unbound variables, select the variable with the smallest minimal value.
    @@ -888,41 +858,41 @@
    IntervalStrategy
    This enum describes the straregy used to select the next interval variable and its value to be fixed.
    Constraint * MakeIndexOfConstraint(const std::vector< IntVar * > &vars, IntVar *const index, int64 target)
    This constraint is a special case of the element constraint with an array of integer variables,...
    ModelVisitor * MakeVariableDegreeVisitor(absl::flat_hash_map< const IntVar *, int > *const map)
    Compute the number of constraints a variable is attached to.
    - - + +
    std::string DebugString() const override
    virtual std::string name() const
    Object naming.
    int64 DurationValue(const IntervalVar *const var) const
    void Reset(IntVar *const var)
    This struct holds all parameters for the default search.
    - +
    virtual void VisitIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &arguments)
    -
    ConstraintSolverParameters parameters() const
    Stored Parameters.
    +
    ConstraintSolverParameters parameters() const
    Stored Parameters.
    void SetStartValue(const IntervalVar *const var, int64 value)
    Constraint * MakeTemporalDisjunction(IntervalVar *const t1, IntervalVar *const t2, IntVar *const alt)
    This constraint implements a temporal disjunction between two interval vars t1 and t2.
    Split the domain in two around the center, and choose the lower part first.
    - -
    A DecisionVisitor is used to inspect a decision.
    + +
    A DecisionVisitor is used to inspect a decision.
    Constraint * MakeEquality(IntExpr *const left, IntExpr *const right)
    left == right
    -
    static const char kIntervalUnaryRelation[]
    +
    static const char kIntervalUnaryRelation[]
    void EnterSearch() override
    Beginning of the search.
    - +
    void MakeIntVarArray(int var_count, int64 vmin, int64 vmax, const std::string &name, std::vector< IntVar * > *vars)
    This method will append the vector vars with 'var_count' variables having bounds vmin and vmax and ha...
    std::string DebugString() const override
    IntExpr * MakeElement(const std::vector< int64 > &values, IntVar *const index)
    values[index]
    t1 starts after t2 end, i.e. Start(t1) >= End(t2) + delay.
    - -
    std::string DebugString() const override
    -
    int64 best() const
    Returns the best value found during search.
    + +
    std::string DebugString() const override
    +
    int64 best() const
    Returns the best value found during search.
    void RefuteDecision(Decision *const d) override
    Before refuting the decision.
    -
    static const char kStartSyncOnStartOperation[]
    - +
    static const char kStartSyncOnStartOperation[]
    +
    virtual void NoMoreSolutions()
    When the search tree is finished.
    - -
    virtual void SetRange(int64 l, int64 u)
    This method sets both the min and the max of the expression.
    + +
    virtual void SetRange(int64 l, int64 u)
    This method sets both the min and the max of the expression.
    virtual void BeginVisitModel(const std::string &solver_name)
    --— Virtual methods for visitors --—
    virtual void Init()=0
    This method is called when the search limit is initialized.
    The default behavior is CHOOSE_FIRST_UNBOUND.
    @@ -934,37 +904,37 @@
    void WriteToProto(IntVarAssignment *int_var_assignment_proto) const
    virtual void VisitIntegerVariableEvaluatorArgument(const std::string &arg_name, const Solver::Int64ToIntVar &arguments)
    Helpers.
    DecisionBuilder * MakeDecisionBuilderFromAssignment(Assignment *const assignment, DecisionBuilder *const db, const std::vector< IntVar * > &vars)
    Returns a decision builder for which the left-most leaf corresponds to assignment,...
    -
    bool operator!=(const Assignment &assignment) const
    -
    void CopyIntersection(const AssignmentContainer< V, E > &container)
    Copies the elements of 'container' which are already in the calling container.
    - +
    bool operator!=(const Assignment &assignment) const
    +
    void CopyIntersection(const AssignmentContainer< V, E > &container)
    Copies the elements of 'container' which are already in the calling container.
    +
    SolutionCollector * MakeAllSolutionCollector()
    Collect all solutions of the search.
    - +
    Constraint * MakePathPrecedenceConstraint(std::vector< IntVar * > nexts, const std::vector< std::pair< int, int >> &precedences)
    Contraint enforcing, for each pair (i,j) in precedences, i to be before j in paths defined by next va...
    static int64 MemoryUsage()
    Current memory usage in bytes.
    - +
    virtual std::string Print() const
    bool Contains(const IntVar *const var) const
    SearchLimit * MakeClone() const override
    Allocates a clone of the limit.
    - - + +
    Constraint * MakeScalProdEquality(const std::vector< IntVar * > &vars, const std::vector< int64 > &coefficients, int64 cst)
    - +
    static ConstraintSolverParameters DefaultSolverParameters()
    Create a ConstraintSolverParameters proto with all the default values.
    virtual void WhenStartBound(Demon *const d)=0
    void Copy(const IntervalVarElement &element)
    int64 objective_value(int n) const
    Returns the objective value of the nth solution.
    virtual void RestartSearch()
    Restart the search.
    Constraint * MakeLess(IntExpr *const left, IntExpr *const right)
    left < right
    - +
    ModelVisitor * MakePrintModelVisitor()
    Prints the model.
    - +
    Constraint * MakeMapDomain(IntVar *const var, const std::vector< IntVar * > &actives)
    This constraint maps the domain of 'var' onto the array of variables 'actives'.
    - +
    bool InstrumentsVariables() const
    Returns whether we are tracing variables.
    NORMAL_PRIORITY is the highest priority: Demons will be processed first.
    void VisitInt64ToInt64Extension(const Solver::IndexEvaluator1 &eval, int64 index_min, int64 index_max)
    - +
    Backtracks to the previous decisions, i.e.
    const std::vector< int > & BackwardSequence(int n, SequenceVar *const var) const
    This is a shortcut to get the BackwardSequence of 'var' in the nth solution.
    @@ -974,159 +944,159 @@
    virtual void VisitIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &arguments)
    Constraint * MakeCumulative(const std::vector< IntervalVar * > &intervals, const std::vector< int64 > &demands, int64 capacity, const std::string &name)
    This constraint forces that, for any integer t, the sum of the demands corresponding to an interval c...
    virtual void Accept(ModelVisitor *const visitor) const =0
    Accepts the given visitor.
    - -
    void WhenEndRange(Solver::Action action)
    + +
    void WhenEndRange(Solver::Action action)
    Among unbound variables, select the variable with the smallest size, i.e., the smallest number of pos...
    - +
    SearchMonitor * MakeSymmetryManager(const std::vector< SymmetryBreaker * > &visitors)
    Symmetry Breaking.
    - +
    virtual IntVarIterator * MakeDomainIterator(bool reversible) const =0
    Creates a domain iterator.
    int64 StartValue(const IntervalVar *const var) const
    void SetForwardSequence(const SequenceVar *const var, const std::vector< int > &forward_sequence)
    - -
    void WhenEndBound(Solver::Action action)
    + +
    void WhenEndBound(Solver::Action action)
    Constraint * MakeAtMost(std::vector< IntVar * > vars, int64 value, int64 max_count)
    |{i | vars[i] == value}| <= max_count
    Assignment * GetOrCreateLocalSearchState()
    Returns (or creates) an assignment representing the state of local search.
    SearchMonitor * MakeConstantRestart(int frequency)
    This search monitor will restart the search periodically after 'frequency' failures.
    Constraint * MakeDelayedPathCumul(const std::vector< IntVar * > &nexts, const std::vector< IntVar * > &active, const std::vector< IntVar * > &cumuls, const std::vector< IntVar * > &transits)
    Delayed version of the same constraint: propagation on the nexts variables is delayed until all const...
    IntExpr * MakeDiv(IntExpr *const expr, int64 value)
    expr / value (integer division)
    -
    static const char kCountUsedBinsExtension[]
    +
    static const char kCountUsedBinsExtension[]
    const std::vector< int > & Unperformed(int n, SequenceVar *const var) const
    This is a shortcut to get the list of unperformed of 'var' in the nth solution.
    - +
    virtual void WhenStartRange(Demon *const d)=0
    IntVarLocalSearchFilter * MakeSumObjectiveFilter(const std::vector< IntVar * > &vars, IndexEvaluator2 values, Solver::LocalSearchFilterBound filter_enum)
    - +
    STARTS_BEFORE and ENDS_AFTER at the same time, i.e.
    bool Check() override
    This method is called to check the status of the limit.
    - +
    virtual IntVar * IsEqual(int64 constant)=0
    IsEqual.
    int TopProgressPercent()
    Returns a percentage representing the propress of the search before reaching the limits of the top-le...
    IntExpr * MakeDifference(IntExpr *const left, IntExpr *const right)
    left - right
    - - + +
    Demon * RegisterDemon(Demon *const demon)
    Adds a new demon and wraps it inside a DemonProfiler if necessary.
    bool IsProfilingEnabled() const
    Returns whether we are profiling the solver.
    -
    void WhenStartBound(Solver::Closure closure)
    - +
    void WhenStartBound(Solver::Closure closure)
    +
    void AddConstraint(Constraint *const c)
    Adds the constraint 'c' to the model.
    - -
    Usual limit based on wall_time, number of explored branches and number of failures in the search tree...
    + +
    Usual limit based on wall_time, number of explored branches and number of failures in the search tree...
    virtual void AppendMonitors(Solver *const solver, std::vector< SearchMonitor * > *const extras)
    This method will be called at the start of the search.
    - +
    SearchLimit * MakeCustomLimit(std::function< bool()> limiter)
    Callback-based search limit.
    IntervalVar * MakeMirrorInterval(IntervalVar *const interval_var)
    Creates an interval var that is the mirror image of the given one, that is, the interval var obtained...
    Solver(const std::string &name)
    Solver API.
    -
    int64 Rand64(int64 size)
    Returns a random value between 0 and 'size' - 1;.
    +
    int64 Rand64(int64 size)
    Returns a random value between 0 and 'size' - 1;.
    bool run_all_heuristics
    The default phase will run heuristics periodically.
    - +
    IntervalVar * RegisterIntervalVar(IntervalVar *const var)
    Registers a new IntervalVar and wraps it inside a TraceIntervalVar if necessary.
    - +
    void FinishCurrentSearch()
    Tells the solver to kill or restart the current search.
    Constraint * MakeBetweenCt(IntExpr *const expr, int64 l, int64 u)
    (l <= expr <= u)
    virtual bool LocalOptimum()
    When a local optimum is reached.
    - - + +
    Constraint * MakeLexicalLessOrEqual(const std::vector< IntVar * > &left, const std::vector< IntVar * > &right)
    Creates a constraint that enforces that left is lexicographically less than or equal to right.
    void AddWeightedSumEqualVarDimension(const std::vector< int64 > &weights, const std::vector< IntVar * > &loads)
    This dimension imposes that for all bins b, the weighted sum (weights[i]) of all objects i assigned t...
    friend void InternalSaveBooleanVarValue(Solver *const, IntVar *const)
    Operator which relaxes all inactive nodes and one sub-chain of six consecutive arcs.
    void SetForwardSequence(const std::vector< int > &forward_sequence)
    Constraint * MakeIsBetweenCt(IntExpr *const expr, int64 l, int64 u, IntVar *const b)
    b == (l <= expr <= u)
    - - -
    A BaseObject is the root of all reversibly allocated objects.
    - + + +
    A BaseObject is the root of all reversibly allocated objects.
    +
    Constraint * MakeDistribute(const std::vector< IntVar * > &vars, const std::vector< int64 > &values, const std::vector< IntVar * > &cards)
    Aggregated version of count: |{i | v[i] == values[j]}| == cards[j].
    -
    The class IntExpr is the base of all integer expressions in constraint programming.
    +
    The class IntExpr is the base of all integer expressions in constraint programming.
    void SetPerformedMax(const IntervalVar *const var, int64 m)
    - +
    virtual void WhenDurationRange(Demon *const d)=0
    - +
    IntExpr * MakePower(IntExpr *const expr, int64 n)
    expr ^ n (n > 0)
    bool Activated(const IntVar *const var) const
    -
    A search monitor is a simple set of callbacks to monitor all search events.
    +
    A search monitor is a simple set of callbacks to monitor all search events.
    - - - + + +
    virtual void Accept(DecisionVisitor *const visitor) const
    Accepts the given visitor.
    -
    Reversible array of POD types.
    +
    Reversible array of POD types.
    virtual void RemoveInterval(int64 l, int64 u)=0
    This method removes the interval 'l' .
    void VisitInt64ToBoolExtension(Solver::IndexFilter1 filter, int64 index_min, int64 index_max)
    Using SWIG on callbacks is troublesome, so we hide these methods during the wrapping.
    virtual void VisitRankFirstInterval(SequenceVar *const sequence, int index)
    LocalSearchOperator * MakeNeighborhoodLimit(LocalSearchOperator *const op, int64 limit)
    Creates a local search operator that wraps another local search operator and limits the number of nei...
    - - + +
    int64 EndValue(const IntervalVar *const var) const
    - +
    Constraint * MakeNotBetweenCt(IntExpr *const expr, int64 l, int64 u)
    (expr < l || expr > u) This constraint is lazy as it will not make holes in the domain of variables.
    t ends at d, i.e. End(t) == d.
    int64 DurationValue(int n, IntervalVar *const var) const
    This is a shortcut to get the DurationValue of 'var' in the nth solution.
    SolverState
    This enum represents the state of the solver w.r.t. the search.
    Constraint * MakeFalseConstraint()
    This constraint always fails.
    void PushSolution()
    Push the current state as a new solution.
    -
    void ClearLocalSearchState()
    Clears the local search state.
    +
    void ClearLocalSearchState()
    Clears the local search state.
    RegularLimit * MakeIdenticalClone() const
    virtual void SetEndRange(int64 mi, int64 ma)=0
    - +
    Constraint * MakePathConnected(std::vector< IntVar * > nexts, std::vector< int64 > sources, std::vector< int64 > sinks, std::vector< IntVar * > status)
    Constraint enforcing that status[i] is true iff there's a path defined on next variables from sources...
    - +
    bool Bound(const IntVar *const var) const
    Decision * MakeAssignVariableValueOrDoNothing(IntVar *const var, int64 value)
    - +
    std::function< int64(const IntVar *v, int64 id)> VariableValueSelector
    - +
    Constraint * MakeTrueConstraint()
    This constraint always succeeds.
    -
    Decision * balancing_decision() const
    +
    Decision * balancing_decision() const
    int64 PerformedMin(const IntervalVar *const var) const
    - - -
    The class IntVar is a subset of IntExpr.
    + + +
    The class IntVar is a subset of IntExpr.
    void Reset(SequenceVar *const var)
    -
    A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
    +
    A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
    UnaryIntervalRelation
    This enum is used in Solver::MakeIntervalVarRelation to specify the temporal relation between an inte...
    bool IsProduct(IntExpr *const expr, IntExpr **inner_expr, int64 *coefficient)
    Returns true if expr represents a product of a expr and a constant.
    int64 EndMax(const IntervalVar *const var) const
    -
    void UnfreezeQueue()
    This method unfreezes the propagation queue.
    -
    static const char kScalProdGreaterOrEqual[]
    +
    void UnfreezeQueue()
    This method unfreezes the propagation queue.
    +
    static const char kScalProdGreaterOrEqual[]
    virtual void InitialPropagate()=0
    This method performs the initial propagation of the constraint.
    Randomly select one of the remaining unbound variables.
    int64 EndMin(const IntervalVar *const var) const
    void ActiveHorizonRange(int64 *const hmin, int64 *const hmax) const
    Returns the minimum start min and the maximum end max of all unranked interval vars in the sequence.
    Operator which replaces an active node by an inactive one.
    int64 PerformedValue(int n, IntervalVar *const var) const
    This is a shortcut to get the PerformedValue of 'var' in the nth solution.
    -
    std::function< DecisionModification()> BranchSelector
    - +
    std::function< DecisionModification()> BranchSelector
    +
    The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
    - -
    void WhenStartBound(Solver::Action action)
    + +
    void WhenStartBound(Solver::Action action)
    void LoadFromProto(const SequenceVarAssignment &sequence_var_assignment_proto)
    void AddBacktrackAction(Action a, bool fast)
    When SaveValue() is not the best way to go, one can create a reversible action that will be called up...
    DecisionModification
    The Solver is responsible for creating the search tree.
    -
    bool Contains(const V *const var) const
    +
    bool Contains(const V *const var) const
    virtual void Refute(Solver *const s)=0
    Refute will be called after a backtrack.
    void UpdateLimits(int64 time, int64 branches, int64 failures, int64 solutions)
    -
    static const char kCountAssignedItemsExtension[]
    Extension names:
    -
    The class Iterator has two direct subclasses.
    - +
    static const char kCountAssignedItemsExtension[]
    Extension names:
    +
    The class Iterator has two direct subclasses.
    +
    virtual int64 Max() const =0
    virtual void EndVisitExtension(const std::string &type)
    virtual void VisitSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &arguments)
    Selects the max value of the selected variable.
    - - + +
    virtual SequenceVar * MakeSequenceVar()=0
    Creates a sequence variable from the constraint.
    - +
    Operator which makes path nodes inactive.
    - - + +
    virtual int64 OldDurationMin() const =0
    IntVar * MakeIsMemberVar(IntExpr *const expr, const std::vector< int64 > &values)
    virtual IntExpr * PerformedExpr()=0
    @@ -1136,31 +1106,31 @@
    void PopSolution()
    Remove and delete the last popped solution.
    bool Solve(DecisionBuilder *const db, const std::vector< SearchMonitor * > &monitors)
    virtual void Post()=0
    This method is called when the constraint is processed by the solver.
    - + - - + +
    DisplayLevel display_level
    This represents the amount of information displayed by the default search.
    bool IsLocalSearchProfilingEnabled() const
    Returns whether we are profiling local search.
    Operator which makes a "chain" of path nodes inactive.
    - +
    virtual void SetMin(int64 m)=0
    - -
    virtual void Range(int64 *l, int64 *u)
    By default calls Min() and Max(), but can be redefined when Min and Max code can be factorized.
    - + +
    virtual void Range(int64 *l, int64 *u)
    By default calls Min() and Max(), but can be redefined when Min and Max code can be factorized.
    +
    virtual void VisitIntervalArgument(const std::string &arg_name, IntervalVar *const argument)
    Visit interval argument.
    - - + +
    void EnterSearch() override
    Beginning of the search.
    DecisionBuilder * MakePhase(const std::vector< IntVar * > &vars, IntVarStrategy var_str, IntValueStrategy val_str)
    Phases on IntVar arrays.
    -
    bool operator==(const AssignmentContainer< V, E > &container) const
    Returns true if this and 'container' both represent the same V* -> E map.
    +
    bool operator==(const AssignmentContainer< V, E > &container) const
    Returns true if this and 'container' both represent the same V* -> E map.
    Among unbound variables, select the variable with the highest size.
    OptimizeVar * MakeOptimize(bool maximize, IntVar *const v, int64 step)
    Creates a objective with a given sense (true = maximization).
    - - - + + +
    Assignment * solution(int n) const
    Returns the nth solution.
    IntExpr * MakeModulo(IntExpr *const x, int64 mod)
    Modulo expression x % mod (with the python convention for modulo).
    void ComputeStatistics(int *const ranked, int *const not_ranked, int *const unperformed) const
    Compute statistics on the sequence.
    @@ -1168,7 +1138,7 @@
    bool CheckAssignment(Assignment *const solution)
    Checks whether the given assignment satisfies all relevant constraints.
    void AddCountAssignedItemsDimension(IntVar *const count_var)
    This dimension links 'count_var' to the actual number of items assigned to a bin in the pack.
    IntExpr * MakeMin(const std::vector< IntVar * > &vars)
    std::min(vars)
    - +
    After failed NextSolution and before EndSearch.
    LocalSearchOperator * MakeRandomLnsOperator(const std::vector< IntVar * > &vars, int number_of_variables)
    Creates a large neighborhood search operator which creates fragments (set of relaxed variables) with ...
    int64 unchecked_solutions() const
    The number of unchecked solutions found by local search.
    @@ -1176,76 +1146,76 @@
    virtual void EndVisitConstraint(const std::string &type_name, const Constraint *const constraint)
    IntVar * VarWithName(const std::string &name)
    Creates a variable from the expression and set the name of the resulting var.
    - +
    void AssignAllPossibleToBin(int bin_index)
    This class represents a reversible bitset.
    virtual void BeginNextDecision(DecisionBuilder *const b)
    Before calling DecisionBuilder::Next.
    t1 starts after t2 start, i.e. Start(t1) >= Start(t2) + delay.
    t1 ends after t2 start, i.e. End(t1) >= Start(t2) + delay.
    -
    A Decision represents a choice point in the search tree.
    +
    A Decision represents a choice point in the search tree.
    OptimizeVar * MakeWeightedOptimize(bool maximize, const std::vector< IntVar * > &sub_objectives, const std::vector< int64 > &weights, int64 step)
    Creates a weighted objective with a given sense (true = maximization).
    virtual void Apply(Solver *const s)=0
    Apply will be called first when the decision is executed.
    Pairs are compared each time a variable is selected.
    - - + +
    void VisitInt64ToInt64AsArray(const Solver::IndexEvaluator1 &eval, const std::string &arg_name, int64 index_max)
    Expands function as array when index min is 0.
    -
    std::function< void()> Closure
    +
    std::function< void()> Closure
    void EnterSearch() override
    Internal methods.
    Constraint * MakeIsGreaterOrEqualCstCt(IntExpr *const var, int64 value, IntVar *const boolvar)
    boolvar == (var >= value)
    -
    Interval variables are often used in scheduling.
    -
    void WhenEndRange(Solver::Closure closure)
    +
    Interval variables are often used in scheduling.
    +
    void WhenEndRange(Solver::Closure closure)
    bool Load(const std::string &filename)
    Loads an assignment from a file; does not add variables to the assignment (only the variables contain...
    -
    std::function< void(Solver *)> Action
    - - +
    std::function< void(Solver *)> Action
    + +
    virtual void EnterSearch()
    Beginning of the search.
    IntExpr * MakeConditionalExpression(IntVar *const condition, IntExpr *const expr, int64 unperformed_value)
    Conditional Expr condition ? expr : unperformed_value.
    void SetSequence(const std::vector< int > &forward_sequence, const std::vector< int > &backward_sequence, const std::vector< int > &unperformed)
    uint64 fail_stamp() const
    The fail_stamp() is incremented after each backtrack.
    - - + +
    virtual int64 Value() const =0
    This method returns the current value of the iterator.
    -
    const E * ElementPtrOrNull(const V *const var) const
    +
    const E * ElementPtrOrNull(const V *const var) const
    -
    void Decr(Solver *const s, int index)
    +
    void Decr(Solver *const s, int index)
    IntervalVar * MakeIntervalVar(int64 start_min, int64 start_max, int64 duration_min, int64 duration_max, int64 end_min, int64 end_max, bool optional, const std::string &name)
    Creates an interval var by specifying the bounds on start, duration, and end.
    -
    Subclass of Rev<T> which adds numerical operations.
    +
    Subclass of Rev<T> which adds numerical operations.
    void PushState()
    The PushState and PopState methods manipulates the states of the reversible objects.
    - -
    void WhenDurationRange(Solver::Closure closure)
    + +
    void WhenDurationRange(Solver::Closure closure)
    void SetDurationMax(const IntervalVar *const var, int64 m)
    IntervalVar * Interval(int index) const
    Returns the index_th interval of the sequence.
    SearchMonitor * MakeTabuSearch(bool maximize, IntVar *const v, int64 step, const std::vector< IntVar * > &vars, int64 keep_tenure, int64 forbid_tenure, double tabu_factor)
    MetaHeuristics which try to get the search out of local optima.
    - +
    virtual void EndFail()
    After completing the backtrack.
    t1 starts at t2 start, i.e. Start(t1) == Start(t2) + delay.
    virtual int64 OldMin() const =0
    Returns the previous min.
    -
    AssignmentContainer< IntVar, IntVarElement > IntContainer
    +
    AssignmentContainer< IntVar, IntVarElement > IntContainer
    Constraint * MakeIsEqualCstCt(IntExpr *const var, int64 value, IntVar *const boolvar)
    boolvar == (var == value)
    -
    static const char kVariableUsageLessConstantExtension[]
    +
    static const char kVariableUsageLessConstantExtension[]
    void FreeSolution(Assignment *solution)
    void SetObjectiveValue(int64 value)
    -
    static const char kUsageEqualVariableExtension[]
    +
    static const char kUsageEqualVariableExtension[]
    virtual void SetStartRange(int64 mi, int64 ma)=0
    -
    int64 filtered_neighbors() const
    The number of filtered neighbors (neighbors accepted by filters).
    -
    IntVar * Var() override
    Creates a variable from the expression.
    -
    void SaveValue(T *o)
    reversibility
    +
    int64 filtered_neighbors() const
    The number of filtered neighbors (neighbors accepted by filters).
    +
    IntVar * Var() override
    Creates a variable from the expression.
    +
    void SaveValue(T *o)
    reversibility
    bool IsAssignedStatusKnown(int var_index) const
    - +
    Operator which defines one neighbor per variable.
    - +
    int64 StartValue(int n, IntervalVar *const var) const
    This is a shortcut to get the StartValue of 'var' in the nth solution.
    Decision * MakeScheduleOrExpedite(IntervalVar *const var, int64 est, int64 *const marker)
    Returns a decision that tries to schedule a task at a given time.
    The default is INTERVAL_SET_TIMES_FORWARD.
    - - - + + +
    virtual bool AcceptSolution()
    This method is called when a solution is found.
    absl::Time Now() const
    The 'absolute time' as seen by the solver.
    -
    Base class of all search limits.
    - +
    Base class of all search limits.
    +
    IntVar * MakeIsLessOrEqualVar(IntExpr *const left, IntExpr *const right)
    status var of (left <= right)
    DecisionBuilder * MakeDefaultPhase(const std::vector< IntVar * > &vars)
    bool CurrentlyInSolve() const
    Returns true whether the current search has been created using a Solve() call instead of a NewSearch ...
    @@ -1254,53 +1224,53 @@
    virtual void SetStartMin(int64 m)=0
    Decision * MakeAssignVariableValueOrFail(IntVar *const var, int64 value)
    Decision * MakeAssignVariableValue(IntVar *const var, int64 val)
    Decisions.
    - +
    virtual void SetDurationRange(int64 mi, int64 ma)=0
    -
    T * RevAlloc(T *object)
    Registers the given object as being reversible.
    - - +
    T * RevAlloc(T *object)
    Registers the given object as being reversible.
    + +
    IntervalVar * MakeFixedDurationEndSyncedOnEndIntervalVar(IntervalVar *const interval_var, int64 duration, int64 offset)
    Creates an interval var with a fixed duration whose end is synchronized with the end of another inter...
    -
    static const char kMirrorOperation[]
    Operations.
    +
    static const char kMirrorOperation[]
    Operations.
    - +
    uint64 stamp() const
    The stamp indicates how many moves in the search tree we have performed.
    void SetStartRange(const IntervalVar *const var, int64 mi, int64 ma)
    virtual void GetNextSolution(Assignment *const assignment)=0
    This method is called when the local search starts a new neighborhood to initialize the default assig...
    The simple selection is ASSIGN_MIN_VALUE.
    virtual void AcceptNeighbor()
    After accepting a neighbor during local search.
    -
    void SetUseFastLocalSearch(bool use_fast_local_search)
    enabled for metaheuristics.
    +
    void SetUseFastLocalSearch(bool use_fast_local_search)
    enabled for metaheuristics.
    void Accept(ModelVisitor *const visitor) const override
    Accepts the given model visitor.
    - - + +
    void SetBackwardSequence(const SequenceVar *const var, const std::vector< int > &backward_sequence)
    - -
    void EnqueueDelayedDemon(Demon *const d)
    This method pushes the demon onto the propagation queue.
    + +
    void EnqueueDelayedDemon(Demon *const d)
    This method pushes the demon onto the propagation queue.
    Selects the variable with the lowest starting time of all variables, and fixes its starting time to t...
    SearchMonitor * MakeSearchTrace(const std::string &prefix)
    Creates a search monitor that will trace precisely the behavior of the search.
    virtual void Initialize(Assignment *const assignment)=0
    This method is called to initialize the solution pool with the assignment from the local search.
    - - - + + +
    t1 ends at t2 start, i.e. End(t1) == Start(t2) + delay.
    Constraint * MakeAbsEquality(IntVar *const var, IntVar *const abs_var)
    Creates the constraint abs(var) == abs_var.
    virtual void ExitSearch()
    End of the search.
    - +
    Relocate: OROPT and RELOCATE.
    void SetMin(const IntVar *const var, int64 m)
    -
    The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...
    +
    The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...
    DecisionBuilder * Try(DecisionBuilder *const db1, DecisionBuilder *const db2)
    Creates a decision builder which will create a search tree where each decision builder is called from...
    virtual void VisitSequenceVariable(const SequenceVar *const variable)
    - + -
    An Assignment is a variable -> domains mapping, used to report solutions to the user.
    +
    An Assignment is a variable -> domains mapping, used to report solutions to the user.
    virtual const std::vector< IntVar * > & time_slacks() const =0
    int solution_count() const
    Returns how many solutions were stored during the search.
    Demon * MakeDelayedConstraintInitialPropagateCallback(Constraint *const ct)
    This method is a specialized case of the MakeConstraintDemon method to call the InitiatePropagate of ...
    Split the domain in two around the center, and choose the lower part first.
    The base class for all local search operators.
    - - - + + +
    Reversible Immutable MultiMap class.
    void RankSequence(const std::vector< int > &rank_first, const std::vector< int > &rank_last, const std::vector< int > &unperformed)
    Applies the following sequence of ranks, ranks first, then rank last.
    @@ -1311,40 +1281,40 @@
    Among unbound variables, select the variable with the largest gap between the first and the second va...
    int64 PerformedValue(const IntervalVar *const var) const
    IntVar * MakeIsBetweenVar(IntExpr *const v, int64 l, int64 u)
    - - - + + +
    virtual int64 EndMax() const =0
    - +
    BinaryIntervalRelation
    This enum is used in Solver::MakeIntervalVarRelation to specify the temporal relation between the two...
    virtual IntVar * IsLessOrEqual(int64 constant)=0
    LocalSearchMonitor * GetLocalSearchMonitor() const
    Returns the local search monitor.
    - - -
    static const char kSmartTimeCheckArgument[]
    + + +
    static const char kSmartTimeCheckArgument[]
    DisjunctiveConstraint(Solver *const s, const std::vector< IntervalVar * > &intervals, const std::string &name)
    int SolveDepth() const
    Gets the number of nested searches.
    - +
    int64 Value(int n, IntVar *const var) const
    This is a shortcut to get the Value of 'var' in the nth solution.
    - +
    The default behavior is ASSIGN_MIN_VALUE.
    -
    virtual bool IsVar() const
    Returns true if the expression is indeed a variable.
    +
    virtual bool IsVar() const
    Returns true if the expression is indeed a variable.
    - +
    Selects randomly one of the possible values of the selected variable.
    virtual void PeriodicCheck()
    Periodic call to check limits in long running methods.
    std::function< int64(int64, int64)> IndexEvaluator2
    std::string LocalSearchProfile() const
    Returns local search profiling information in a human readable format.
    - + - +
    virtual Decision * Next(Solver *const s)=0
    This is the main method of the decision builder class.
    LocalSearchOperator * RandomConcatenateOperators(const std::vector< LocalSearchOperator * > &ops)
    Randomized version of local search concatenator; calls a random operator at each call to MakeNextNeig...
    virtual bool SyncNeeded(Assignment *const local_assignment)=0
    This method checks if the local solution needs to be updated with an external one.
    - - -
    IntVar * Var() const
    Returns the variable that is optimized.
    + + +
    IntVar * Var() const
    Returns the variable that is optimized.
    virtual void Accept(ModelVisitor *const visitor) const
    Accepts the given visitor.
    virtual void Init()=0
    This method must be called before each loop.
    SolutionPool * MakeDefaultSolutionPool()
    Solution Pool.
    diff --git a/docs/cpp_routing/constraint__solveri_8h.html b/docs/cpp_routing/constraint__solveri_8h.html index 5195d7191c..92a13c6a66 100644 --- a/docs/cpp_routing/constraint__solveri_8h.html +++ b/docs/cpp_routing/constraint__solveri_8h.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/constraint__solveri_8h_source.html b/docs/cpp_routing/constraint__solveri_8h_source.html index ecdfd7c652..897735fa22 100644 --- a/docs/cpp_routing/constraint__solveri_8h_source.html +++ b/docs/cpp_routing/constraint__solveri_8h_source.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -84,55 +55,54 @@
    constraint_solveri.h
    -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 
    48 
    49 #ifndef OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVERI_H_
    50 #define OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVERI_H_
    51 
    52 #include <algorithm>
    53 #include <cmath>
    54 #include <cstddef>
    55 #include <functional>
    56 #include <memory>
    57 #include <string>
    58 #include <vector>
    59 
    60 #include "absl/container/flat_hash_map.h"
    61 #include "absl/strings/str_cat.h"
    62 #include "absl/strings/str_format.h"
    63 #include "absl/strings/str_join.h"
    64 #include "ortools/base/commandlineflags.h"
    65 #include "ortools/base/hash.h"
    66 #include "ortools/base/integral_types.h"
    67 #include "ortools/base/logging.h"
    68 #include "ortools/base/map_util.h"
    69 #include "ortools/base/sysinfo.h"
    70 #include "ortools/base/timer.h"
    72 #include "ortools/util/bitset.h"
    73 #include "ortools/util/tuple_set.h"
    74 #include "ortools/util/vector_map.h"
    75 
    76 class WallTimer;
    77 
    78 namespace operations_research {
    79 class CPArgumentProto;
    80 class CPConstraintProto;
    81 class CPIntegerExpressionProto;
    82 class CPIntervalVariableProto;
    83 
    109 class BaseIntExpr : public IntExpr {
    110  public:
    111  explicit BaseIntExpr(Solver* const s) : IntExpr(s), var_(nullptr) {}
    112  ~BaseIntExpr() override {}
    113 
    114  IntVar* Var() override;
    115  virtual IntVar* CastToVar();
    116 
    117  private:
    118  IntVar* var_;
    119 };
    120 
    123 enum VarTypes {
    133 };
    134 
    143 #ifndef SWIG
    144 template <class T>
    145 class SimpleRevFIFO {
    146  private:
    147  enum { CHUNK_SIZE = 16 }; // TODO(user): could be an extra template param
    148  struct Chunk {
    149  T data_[CHUNK_SIZE];
    150  const Chunk* const next_;
    151  explicit Chunk(const Chunk* next) : next_(next) {}
    152  };
    153 
    154  public:
    156  class Iterator {
    157  public:
    158  explicit Iterator(const SimpleRevFIFO<T>* l)
    159  : chunk_(l->chunks_), value_(l->Last()) {}
    160  bool ok() const { return (value_ != nullptr); }
    161  T operator*() const { return *value_; }
    162  void operator++() {
    163  ++value_;
    164  if (value_ == chunk_->data_ + CHUNK_SIZE) {
    165  chunk_ = chunk_->next_;
    166  value_ = chunk_ ? chunk_->data_ : nullptr;
    167  }
    168  }
    169 
    170  private:
    171  const Chunk* chunk_;
    172  const T* value_;
    173  };
    174 
    175  SimpleRevFIFO() : chunks_(nullptr), pos_(0) {}
    176 
    177  void Push(Solver* const s, T val) {
    178  if (pos_.Value() == 0) {
    179  Chunk* const chunk = s->UnsafeRevAlloc(new Chunk(chunks_));
    180  s->SaveAndSetValue(reinterpret_cast<void**>(&chunks_),
    181  reinterpret_cast<void*>(chunk));
    182  pos_.SetValue(s, CHUNK_SIZE - 1);
    183  } else {
    184  pos_.Decr(s);
    185  }
    186  chunks_->data_[pos_.Value()] = val;
    187  }
    188 
    190  void PushIfNotTop(Solver* const s, T val) {
    191  if (chunks_ == nullptr || LastValue() != val) {
    192  Push(s, val);
    193  }
    194  }
    195 
    197  const T* Last() const {
    198  return chunks_ ? &chunks_->data_[pos_.Value()] : nullptr;
    199  }
    200 
    201  T* MutableLast() { return chunks_ ? &chunks_->data_[pos_.Value()] : nullptr; }
    202 
    204  const T& LastValue() const {
    205  DCHECK(chunks_);
    206  return chunks_->data_[pos_.Value()];
    207  }
    208 
    210  void SetLastValue(const T& v) {
    211  DCHECK(Last());
    212  chunks_->data_[pos_.Value()] = v;
    213  }
    214 
    215  private:
    216  Chunk* chunks_;
    217  NumericalRev<int> pos_;
    218 };
    219 
    221 // TODO(user): use murmurhash.
    222 inline uint64 Hash1(uint64 value) {
    223  value = (~value) + (value << 21);
    224  value ^= value >> 24;
    225  value += (value << 3) + (value << 8);
    226  value ^= value >> 14;
    227  value += (value << 2) + (value << 4);
    228  value ^= value >> 28;
    229  value += (value << 31);
    230  return value;
    231 }
    232 
    233 inline uint64 Hash1(uint32 value) {
    234  uint64 a = value;
    235  a = (a + 0x7ed55d16) + (a << 12);
    236  a = (a ^ 0xc761c23c) ^ (a >> 19);
    237  a = (a + 0x165667b1) + (a << 5);
    238  a = (a + 0xd3a2646c) ^ (a << 9);
    239  a = (a + 0xfd7046c5) + (a << 3);
    240  a = (a ^ 0xb55a4f09) ^ (a >> 16);
    241  return a;
    242 }
    243 
    244 inline uint64 Hash1(int64 value) { return Hash1(static_cast<uint64>(value)); }
    245 
    246 inline uint64 Hash1(int value) { return Hash1(static_cast<uint32>(value)); }
    247 
    248 inline uint64 Hash1(void* const ptr) {
    249 #if defined(ARCH_K8) || defined(__powerpc64__) || defined(__aarch64__)
    250  return Hash1(reinterpret_cast<uint64>(ptr));
    251 #else
    252  return Hash1(reinterpret_cast<uint32>(ptr));
    253 #endif
    254 }
    255 
    256 template <class T>
    257 uint64 Hash1(const std::vector<T*>& ptrs) {
    258  if (ptrs.empty()) {
    259  return 0;
    260  } else if (ptrs.size() == 1) {
    261  return Hash1(ptrs[0]);
    262  } else {
    263  uint64 hash = Hash1(ptrs[0]);
    264  for (int i = 1; i < ptrs.size(); ++i) {
    265  hash = hash * i + Hash1(ptrs[i]);
    266  }
    267  return hash;
    268  }
    269 }
    270 
    271 inline uint64 Hash1(const std::vector<int64>& ptrs) {
    272  if (ptrs.empty()) {
    273  return 0;
    274  } else if (ptrs.size() == 1) {
    275  return Hash1(ptrs[0]);
    276  } else {
    277  uint64 hash = Hash1(ptrs[0]);
    278  for (int i = 1; i < ptrs.size(); ++i) {
    279  hash = hash * i + Hash1(ptrs[i]);
    280  }
    281  return hash;
    282  }
    283 }
    284 
    287 template <class K, class V>
    289  public:
    290  RevImmutableMultiMap(Solver* const solver, int initial_size)
    291  : solver_(solver),
    292  array_(solver->UnsafeRevAllocArray(new Cell*[initial_size])),
    293  size_(initial_size),
    294  num_items_(0) {
    295  memset(array_, 0, sizeof(*array_) * size_.Value());
    296  }
    297 
    299 
    300  int num_items() const { return num_items_.Value(); }
    301 
    303  bool ContainsKey(const K& key) const {
    304  uint64 code = Hash1(key) % size_.Value();
    305  Cell* tmp = array_[code];
    306  while (tmp) {
    307  if (tmp->key() == key) {
    308  return true;
    309  }
    310  tmp = tmp->next();
    311  }
    312  return false;
    313  }
    314 
    318  const V& FindWithDefault(const K& key, const V& default_value) const {
    319  uint64 code = Hash1(key) % size_.Value();
    320  Cell* tmp = array_[code];
    321  while (tmp) {
    322  if (tmp->key() == key) {
    323  return tmp->value();
    324  }
    325  tmp = tmp->next();
    326  }
    327  return default_value;
    328  }
    329 
    331  void Insert(const K& key, const V& value) {
    332  const int position = Hash1(key) % size_.Value();
    333  Cell* const cell =
    334  solver_->UnsafeRevAlloc(new Cell(key, value, array_[position]));
    335  solver_->SaveAndSetValue(reinterpret_cast<void**>(&array_[position]),
    336  reinterpret_cast<void*>(cell));
    337  num_items_.Incr(solver_);
    338  if (num_items_.Value() > 2 * size_.Value()) {
    339  Double();
    340  }
    341  }
    342 
    343  private:
    344  class Cell {
    345  public:
    346  Cell(const K& key, const V& value, Cell* const next)
    347  : key_(key), value_(value), next_(next) {}
    348 
    349  void SetRevNext(Solver* const solver, Cell* const next) {
    350  solver->SaveAndSetValue(reinterpret_cast<void**>(&next_),
    351  reinterpret_cast<void*>(next));
    352  }
    353 
    354  Cell* next() const { return next_; }
    355 
    356  const K& key() const { return key_; }
    357 
    358  const V& value() const { return value_; }
    359 
    360  private:
    361  const K key_;
    362  const V value_;
    363  Cell* next_;
    364  };
    365 
    366  void Double() {
    367  Cell** const old_cell_array = array_;
    368  const int old_size = size_.Value();
    369  size_.SetValue(solver_, size_.Value() * 2);
    370  solver_->SaveAndSetValue(
    371  reinterpret_cast<void**>(&array_),
    372  reinterpret_cast<void*>(
    373  solver_->UnsafeRevAllocArray(new Cell*[size_.Value()])));
    374  memset(array_, 0, size_.Value() * sizeof(*array_));
    375  for (int i = 0; i < old_size; ++i) {
    376  Cell* tmp = old_cell_array[i];
    377  while (tmp != nullptr) {
    378  Cell* const to_reinsert = tmp;
    379  tmp = tmp->next();
    380  const uint64 new_position = Hash1(to_reinsert->key()) % size_.Value();
    381  to_reinsert->SetRevNext(solver_, array_[new_position]);
    382  solver_->SaveAndSetValue(
    383  reinterpret_cast<void**>(&array_[new_position]),
    384  reinterpret_cast<void*>(to_reinsert));
    385  }
    386  }
    387  }
    388 
    389  Solver* const solver_;
    390  Cell** array_;
    391  NumericalRev<int> size_;
    392  NumericalRev<int> num_items_;
    393 };
    394 
    396 class RevSwitch {
    397  public:
    398  RevSwitch() : value_(false) {}
    399 
    400  bool Switched() const { return value_; }
    401 
    402  void Switch(Solver* const solver) { solver->SaveAndSetValue(&value_, true); }
    403 
    404  private:
    405  bool value_;
    406 };
    407 
    411  public:
    412  explicit SmallRevBitSet(int64 size);
    414  void SetToOne(Solver* const solver, int64 pos);
    416  void SetToZero(Solver* const solver, int64 pos);
    418  int64 Cardinality() const;
    420  bool IsCardinalityZero() const { return bits_.Value() == GG_ULONGLONG(0); }
    422  bool IsCardinalityOne() const {
    423  return (bits_.Value() != 0) && !(bits_.Value() & (bits_.Value() - 1));
    424  }
    427  int64 GetFirstOne() const;
    428 
    429  private:
    430  Rev<uint64> bits_;
    431 };
    432 
    435 class RevBitSet {
    436  public:
    437  explicit RevBitSet(int64 size);
    438  ~RevBitSet();
    439 
    441  void SetToOne(Solver* const solver, int64 index);
    443  void SetToZero(Solver* const solver, int64 index);
    445  bool IsSet(int64 index) const;
    447  int64 Cardinality() const;
    449  bool IsCardinalityZero() const;
    451  bool IsCardinalityOne() const;
    454  int64 GetFirstBit(int start) const;
    456  void ClearAll(Solver* const solver);
    457 
    458  friend class RevBitMatrix;
    459 
    460  private:
    462  void Save(Solver* const solver, int offset);
    463  const int64 size_;
    464  const int64 length_;
    465  uint64* bits_;
    466  uint64* stamps_;
    467 };
    468 
    470 class RevBitMatrix : private RevBitSet {
    471  public:
    472  RevBitMatrix(int64 rows, int64 columns);
    473  ~RevBitMatrix();
    474 
    476  void SetToOne(Solver* const solver, int64 row, int64 column);
    478  void SetToZero(Solver* const solver, int64 row, int64 column);
    480  bool IsSet(int64 row, int64 column) const {
    481  DCHECK_GE(row, 0);
    482  DCHECK_LT(row, rows_);
    483  DCHECK_GE(column, 0);
    484  DCHECK_LT(column, columns_);
    485  return RevBitSet::IsSet(row * columns_ + column);
    486  }
    488  int64 Cardinality(int row) const;
    490  bool IsCardinalityZero(int row) const;
    492  bool IsCardinalityOne(int row) const;
    495  int64 GetFirstBit(int row, int start) const;
    497  void ClearAll(Solver* const solver);
    498 
    499  private:
    500  const int64 rows_;
    501  const int64 columns_;
    502 };
    503 
    509 
    511 template <class T>
    512 class CallMethod0 : public Demon {
    513  public:
    514  CallMethod0(T* const ct, void (T::*method)(), const std::string& name)
    515  : constraint_(ct), method_(method), name_(name) {}
    516 
    517  ~CallMethod0() override {}
    518 
    519  void Run(Solver* const s) override { (constraint_->*method_)(); }
    520 
    521  std::string DebugString() const override {
    522  return "CallMethod_" + name_ + "(" + constraint_->DebugString() + ")";
    523  }
    524 
    525  private:
    526  T* const constraint_;
    527  void (T::*const method_)();
    528  const std::string name_;
    529 };
    530 
    531 template <class T>
    532 Demon* MakeConstraintDemon0(Solver* const s, T* const ct, void (T::*method)(),
    533  const std::string& name) {
    534  return s->RevAlloc(new CallMethod0<T>(ct, method, name));
    535 }
    536 
    537 template <class P>
    538 std::string ParameterDebugString(P param) {
    539  return absl::StrCat(param);
    540 }
    541 
    543 template <class P>
    544 std::string ParameterDebugString(P* param) {
    545  return param->DebugString();
    546 }
    547 
    549 template <class T, class P>
    550 class CallMethod1 : public Demon {
    551  public:
    552  CallMethod1(T* const ct, void (T::*method)(P), const std::string& name,
    553  P param1)
    554  : constraint_(ct), method_(method), name_(name), param1_(param1) {}
    555 
    556  ~CallMethod1() override {}
    557 
    558  void Run(Solver* const s) override { (constraint_->*method_)(param1_); }
    559 
    560  std::string DebugString() const override {
    561  return absl::StrCat("CallMethod_", name_, "(", constraint_->DebugString(),
    562  ", ", ParameterDebugString(param1_), ")");
    563  }
    564 
    565  private:
    566  T* const constraint_;
    567  void (T::*const method_)(P);
    568  const std::string name_;
    569  P param1_;
    570 };
    571 
    572 template <class T, class P>
    573 Demon* MakeConstraintDemon1(Solver* const s, T* const ct, void (T::*method)(P),
    574  const std::string& name, P param1) {
    575  return s->RevAlloc(new CallMethod1<T, P>(ct, method, name, param1));
    576 }
    577 
    579 template <class T, class P, class Q>
    580 class CallMethod2 : public Demon {
    581  public:
    582  CallMethod2(T* const ct, void (T::*method)(P, Q), const std::string& name,
    583  P param1, Q param2)
    584  : constraint_(ct),
    585  method_(method),
    586  name_(name),
    587  param1_(param1),
    588  param2_(param2) {}
    589 
    590  ~CallMethod2() override {}
    591 
    592  void Run(Solver* const s) override {
    593  (constraint_->*method_)(param1_, param2_);
    594  }
    595 
    596  std::string DebugString() const override {
    597  return absl::StrCat(absl::StrCat("CallMethod_", name_),
    598  absl::StrCat("(", constraint_->DebugString()),
    599  absl::StrCat(", ", ParameterDebugString(param1_)),
    600  absl::StrCat(", ", ParameterDebugString(param2_), ")"));
    601  }
    602 
    603  private:
    604  T* const constraint_;
    605  void (T::*const method_)(P, Q);
    606  const std::string name_;
    607  P param1_;
    608  Q param2_;
    609 };
    610 
    611 template <class T, class P, class Q>
    612 Demon* MakeConstraintDemon2(Solver* const s, T* const ct,
    613  void (T::*method)(P, Q), const std::string& name,
    614  P param1, Q param2) {
    615  return s->RevAlloc(
    616  new CallMethod2<T, P, Q>(ct, method, name, param1, param2));
    617 }
    619 template <class T, class P, class Q, class R>
    620 class CallMethod3 : public Demon {
    621  public:
    622  CallMethod3(T* const ct, void (T::*method)(P, Q, R), const std::string& name,
    623  P param1, Q param2, R param3)
    624  : constraint_(ct),
    625  method_(method),
    626  name_(name),
    627  param1_(param1),
    628  param2_(param2),
    629  param3_(param3) {}
    630 
    631  ~CallMethod3() override {}
    632 
    633  void Run(Solver* const s) override {
    634  (constraint_->*method_)(param1_, param2_, param3_);
    635  }
    636 
    637  std::string DebugString() const override {
    638  return absl::StrCat(absl::StrCat("CallMethod_", name_),
    639  absl::StrCat("(", constraint_->DebugString()),
    640  absl::StrCat(", ", ParameterDebugString(param1_)),
    641  absl::StrCat(", ", ParameterDebugString(param2_)),
    642  absl::StrCat(", ", ParameterDebugString(param3_), ")"));
    643  }
    644 
    645  private:
    646  T* const constraint_;
    647  void (T::*const method_)(P, Q, R);
    648  const std::string name_;
    649  P param1_;
    650  Q param2_;
    651  R param3_;
    652 };
    653 
    654 template <class T, class P, class Q, class R>
    655 Demon* MakeConstraintDemon3(Solver* const s, T* const ct,
    656  void (T::*method)(P, Q, R), const std::string& name,
    657  P param1, Q param2, R param3) {
    658  return s->RevAlloc(
    659  new CallMethod3<T, P, Q, R>(ct, method, name, param1, param2, param3));
    660 }
    662 
    667 
    669 template <class T>
    670 class DelayedCallMethod0 : public Demon {
    671  public:
    672  DelayedCallMethod0(T* const ct, void (T::*method)(), const std::string& name)
    673  : constraint_(ct), method_(method), name_(name) {}
    674 
    675  ~DelayedCallMethod0() override {}
    676 
    677  void Run(Solver* const s) override { (constraint_->*method_)(); }
    678 
    679  Solver::DemonPriority priority() const override {
    681  }
    682 
    683  std::string DebugString() const override {
    684  return "DelayedCallMethod_" + name_ + "(" + constraint_->DebugString() +
    685  ")";
    686  }
    687 
    688  private:
    689  T* const constraint_;
    690  void (T::*const method_)();
    691  const std::string name_;
    692 };
    693 
    694 template <class T>
    695 Demon* MakeDelayedConstraintDemon0(Solver* const s, T* const ct,
    696  void (T::*method)(),
    697  const std::string& name) {
    698  return s->RevAlloc(new DelayedCallMethod0<T>(ct, method, name));
    699 }
    700 
    702 template <class T, class P>
    703 class DelayedCallMethod1 : public Demon {
    704  public:
    705  DelayedCallMethod1(T* const ct, void (T::*method)(P), const std::string& name,
    706  P param1)
    707  : constraint_(ct), method_(method), name_(name), param1_(param1) {}
    708 
    709  ~DelayedCallMethod1() override {}
    710 
    711  void Run(Solver* const s) override { (constraint_->*method_)(param1_); }
    712 
    713  Solver::DemonPriority priority() const override {
    715  }
    716 
    717  std::string DebugString() const override {
    718  return absl::StrCat("DelayedCallMethod_", name_, "(",
    719  constraint_->DebugString(), ", ",
    720  ParameterDebugString(param1_), ")");
    721  }
    722 
    723  private:
    724  T* const constraint_;
    725  void (T::*const method_)(P);
    726  const std::string name_;
    727  P param1_;
    728 };
    729 
    730 template <class T, class P>
    731 Demon* MakeDelayedConstraintDemon1(Solver* const s, T* const ct,
    732  void (T::*method)(P),
    733  const std::string& name, P param1) {
    734  return s->RevAlloc(new DelayedCallMethod1<T, P>(ct, method, name, param1));
    735 }
    736 
    738 template <class T, class P, class Q>
    739 class DelayedCallMethod2 : public Demon {
    740  public:
    741  DelayedCallMethod2(T* const ct, void (T::*method)(P, Q),
    742  const std::string& name, P param1, Q param2)
    743  : constraint_(ct),
    744  method_(method),
    745  name_(name),
    746  param1_(param1),
    747  param2_(param2) {}
    748 
    749  ~DelayedCallMethod2() override {}
    750 
    751  void Run(Solver* const s) override {
    752  (constraint_->*method_)(param1_, param2_);
    753  }
    754 
    755  Solver::DemonPriority priority() const override {
    757  }
    758 
    759  std::string DebugString() const override {
    760  return absl::StrCat(absl::StrCat("DelayedCallMethod_", name_),
    761  absl::StrCat("(", constraint_->DebugString()),
    762  absl::StrCat(", ", ParameterDebugString(param1_)),
    763  absl::StrCat(", ", ParameterDebugString(param2_), ")"));
    764  }
    765 
    766  private:
    767  T* const constraint_;
    768  void (T::*const method_)(P, Q);
    769  const std::string name_;
    770  P param1_;
    771  Q param2_;
    772 };
    773 
    774 template <class T, class P, class Q>
    775 Demon* MakeDelayedConstraintDemon2(Solver* const s, T* const ct,
    776  void (T::*method)(P, Q),
    777  const std::string& name, P param1,
    778  Q param2) {
    779  return s->RevAlloc(
    780  new DelayedCallMethod2<T, P, Q>(ct, method, name, param1, param2));
    781 }
    783 
    784 #endif // !defined(SWIG)
    785 
    803 // TODO(user): rename Start to Synchronize ?
    804 // TODO(user): decouple the iterating from the defining of a neighbor.
    806  public:
    808  ~LocalSearchOperator() override {}
    809  virtual bool MakeNextNeighbor(Assignment* delta, Assignment* deltadelta) = 0;
    810  virtual void Start(const Assignment* assignment) = 0;
    811  virtual void Reset() {}
    812 #ifndef SWIG
    813  virtual const LocalSearchOperator* Self() const { return this; }
    814 #endif // SWIG
    815  virtual bool HasFragments() const { return false; }
    816  virtual bool HoldsDelta() const { return false; }
    817 };
    818 
    820 template <class V, class Val, class Handler>
    822  public:
    824  VarLocalSearchOperator(std::vector<V*> vars, Handler var_handler)
    825  : activated_(),
    826  was_activated_(),
    827  cleared_(true),
    828  var_handler_(var_handler) {}
    830  bool HoldsDelta() const override { return true; }
    833  void Start(const Assignment* assignment) override {
    834  const int size = Size();
    835  CHECK_LE(size, assignment->Size())
    836  << "Assignment contains fewer variables than operator";
    837  for (int i = 0; i < size; ++i) {
    838  activated_.Set(i, var_handler_.ValueFromAssignent(*assignment, vars_[i],
    839  i, &values_[i]));
    840  }
    843  was_activated_.SetContentFromBitsetOfSameSize(activated_);
    844  OnStart();
    845  }
    846  virtual bool IsIncremental() const { return false; }
    847  int Size() const { return vars_.size(); }
    850  const Val& Value(int64 index) const {
    851  DCHECK_LT(index, vars_.size());
    852  return values_[index];
    853  }
    855  V* Var(int64 index) const { return vars_[index]; }
    856  virtual bool SkipUnchanged(int index) const { return false; }
    857  const Val& OldValue(int64 index) const { return old_values_[index]; }
    858  void SetValue(int64 index, const Val& value) {
    859  values_[index] = value;
    860  MarkChange(index);
    861  }
    862  bool Activated(int64 index) const { return activated_[index]; }
    863  void Activate(int64 index) {
    864  activated_.Set(index);
    865  MarkChange(index);
    866  }
    867  void Deactivate(int64 index) {
    868  activated_.Clear(index);
    869  MarkChange(index);
    870  }
    871  bool ApplyChanges(Assignment* delta, Assignment* deltadelta) const {
    872  if (IsIncremental() && !cleared_) {
    873  for (const int64 index : delta_changes_.PositionsSetAtLeastOnce()) {
    874  V* var = Var(index);
    875  const Val& value = Value(index);
    876  const bool activated = activated_[index];
    877  var_handler_.AddToAssignment(var, value, activated, nullptr, index,
    878  deltadelta);
    879  var_handler_.AddToAssignment(var, value, activated,
    880  &assignment_indices_, index, delta);
    881  }
    882  } else {
    883  delta->Clear();
    884  for (const int64 index : changes_.PositionsSetAtLeastOnce()) {
    885  const Val& value = Value(index);
    886  const bool activated = activated_[index];
    887  if (!activated || value != OldValue(index) || !SkipUnchanged(index)) {
    888  var_handler_.AddToAssignment(Var(index), value, activated_[index],
    889  &assignment_indices_, index, delta);
    890  }
    891  }
    892  }
    893  return true;
    894  }
    895  void RevertChanges(bool incremental) {
    896  cleared_ = false;
    897  delta_changes_.SparseClearAll();
    898  if (incremental && IsIncremental()) return;
    899  cleared_ = true;
    900  for (const int64 index : changes_.PositionsSetAtLeastOnce()) {
    901  values_[index] = old_values_[index];
    902  var_handler_.OnRevertChanges(index);
    903  activated_.CopyBucket(was_activated_, index);
    904  assignment_indices_[index] = -1;
    905  }
    906  changes_.SparseClearAll();
    907  }
    908  void AddVars(const std::vector<V*>& vars) {
    909  if (!vars.empty()) {
    910  vars_.insert(vars_.end(), vars.begin(), vars.end());
    911  const int64 size = Size();
    912  values_.resize(size);
    913  old_values_.resize(size);
    914  prev_values_.resize(size);
    915  assignment_indices_.resize(size, -1);
    916  activated_.Resize(size);
    917  was_activated_.Resize(size);
    918  changes_.ClearAndResize(size);
    919  delta_changes_.ClearAndResize(size);
    920  var_handler_.OnAddVars();
    921  }
    922  }
    923 
    927  virtual void OnStart() {}
    928 
    931  protected:
    932  void MarkChange(int64 index) {
    933  delta_changes_.Set(index);
    934  changes_.Set(index);
    935  }
    936 
    937  std::vector<V*> vars_;
    938  std::vector<Val> values_;
    939  std::vector<Val> old_values_;
    940  std::vector<Val> prev_values_;
    941  mutable std::vector<int> assignment_indices_;
    942  Bitset64<> activated_;
    943  Bitset64<> was_activated_;
    944  SparseBitset<> changes_;
    945  SparseBitset<> delta_changes_;
    946  bool cleared_;
    947  Handler var_handler_;
    948 };
    949 
    952  public:
    953  void AddToAssignment(IntVar* var, int64 value, bool active,
    954  std::vector<int>* assignment_indices, int64 index,
    955  Assignment* assignment) const {
    956  Assignment::IntContainer* const container =
    957  assignment->MutableIntVarContainer();
    958  IntVarElement* element = nullptr;
    959  if (assignment_indices != nullptr) {
    960  if ((*assignment_indices)[index] == -1) {
    961  (*assignment_indices)[index] = container->Size();
    962  element = assignment->FastAdd(var);
    963  } else {
    964  element = container->MutableElement((*assignment_indices)[index]);
    965  }
    966  } else {
    967  element = assignment->FastAdd(var);
    968  }
    969  if (active) {
    970  element->SetValue(value);
    971  element->Activate();
    972  } else {
    973  element->Deactivate();
    974  }
    975  }
    976  bool ValueFromAssignent(const Assignment& assignment, IntVar* var,
    977  int64 index, int64* value) {
    978  const Assignment::IntContainer& container = assignment.IntVarContainer();
    979  const IntVarElement* element = &(container.Element(index));
    980  if (element->Var() != var) {
    981  CHECK(container.Contains(var))
    982  << "Assignment does not contain operator variable " << var;
    983  element = &(container.Element(var));
    984  }
    985  *value = element->Value();
    986  return element->Activated();
    987  }
    988  void OnRevertChanges(int64 index) {}
    989  void OnAddVars() {}
    990 };
    991 
    997 
    998 #ifdef SWIG
    999 // TODO(user): find a way to move this code back to the .i file, where it
    1006 #if defined(SWIGPYTHON)
    1007 %unignore VarLocalSearchOperator<IntVar, int64,
    1008  IntVarLocalSearchHandler>::Size;
    1009 %unignore VarLocalSearchOperator<IntVar, int64,
    1010  IntVarLocalSearchHandler>::Value;
    1011 %unignore VarLocalSearchOperator<IntVar, int64,
    1012  IntVarLocalSearchHandler>::OldValue;
    1013 %unignore VarLocalSearchOperator<IntVar, int64,
    1014  IntVarLocalSearchHandler>::SetValue;
    1015 %feature("director") VarLocalSearchOperator<IntVar, int64,
    1016  IntVarLocalSearchHandler>::IsIncremental;
    1017 %feature("director") VarLocalSearchOperator<IntVar, int64,
    1018  IntVarLocalSearchHandler>::OnStart;
    1019 %unignore VarLocalSearchOperator<IntVar, int64,
    1020  IntVarLocalSearchHandler>::IsIncremental;
    1021 %unignore VarLocalSearchOperator<IntVar, int64,
    1022  IntVarLocalSearchHandler>::OnStart;
    1023 #endif // SWIGPYTHON
    1024 
    1025 // clang-format off
    1026 %rename(IntVarLocalSearchOperatorTemplate)
    1027  VarLocalSearchOperator<IntVar, int64, IntVarLocalSearchHandler>;
    1028 %template(IntVarLocalSearchOperatorTemplate)
    1029  VarLocalSearchOperator<IntVar, int64, IntVarLocalSearchHandler>;
    1030 // clang-format on
    1031 #endif // SWIG
    1032 
    1035  public:
    1037  explicit IntVarLocalSearchOperator(const std::vector<IntVar*>& vars)
    1039  vars, IntVarLocalSearchHandler()) {
    1040  AddVars(vars);
    1041  }
    1049  bool MakeNextNeighbor(Assignment* delta, Assignment* deltadelta) override;
    1050 
    1051  protected:
    1054  // TODO(user): make it pure virtual, implies porting all apps overriding
    1056  virtual bool MakeOneNeighbor();
    1057 };
    1058 
    1060 class SequenceVarLocalSearchOperator;
    1061 
    1063  public:
    1064  SequenceVarLocalSearchHandler() : op_(nullptr) {}
    1066  : op_(other.op_) {}
    1068  : op_(op) {}
    1069  void AddToAssignment(SequenceVar* var, const std::vector<int>& value,
    1070  bool active, std::vector<int>* assignment_indices,
    1071  int64 index, Assignment* assignment) const;
    1072  bool ValueFromAssignent(const Assignment& assignment, SequenceVar* var,
    1073  int64 index, std::vector<int>* value);
    1074  void OnRevertChanges(int64 index);
    1075  void OnAddVars();
    1076 
    1077  private:
    1078  SequenceVarLocalSearchOperator* const op_;
    1079 };
    1080 
    1081 #ifdef SWIG
    1082 // TODO(user): find a way to move this code back to the .i file, where it
    1087 // clang-format off
    1088 %rename(SequenceVarLocalSearchOperatorTemplate) VarLocalSearchOperator<
    1089  SequenceVar, std::vector<int>, SequenceVarLocalSearchHandler>;
    1090 %template(SequenceVarLocalSearchOperatorTemplate) VarLocalSearchOperator<
    1091  SequenceVar, std::vector<int>, SequenceVarLocalSearchHandler>;
    1092 // clang-format on
    1093 #endif
    1094 
    1095 typedef VarLocalSearchOperator<SequenceVar, std::vector<int>,
    1096  SequenceVarLocalSearchHandler>
    1098 
    1101  public:
    1103  explicit SequenceVarLocalSearchOperator(const std::vector<SequenceVar*>& vars)
    1105  vars, SequenceVarLocalSearchHandler(this)) {
    1106  AddVars(vars);
    1107  }
    1111  const std::vector<int>& Sequence(int64 index) const { return Value(index); }
    1112  const std::vector<int>& OldSequence(int64 index) const {
    1113  return OldValue(index);
    1114  }
    1115  void SetForwardSequence(int64 index, const std::vector<int>& value) {
    1116  SetValue(index, value);
    1117  }
    1118  void SetBackwardSequence(int64 index, const std::vector<int>& value) {
    1119  backward_values_[index] = value;
    1120  MarkChange(index);
    1121  }
    1122 
    1123  protected:
    1125 
    1126  std::vector<std::vector<int> > backward_values_;
    1127 };
    1128 
    1130  SequenceVar* var, const std::vector<int>& value, bool active,
    1131  std::vector<int>* assignment_indices, int64 index,
    1132  Assignment* assignment) const {
    1133  Assignment::SequenceContainer* const container =
    1134  assignment->MutableSequenceVarContainer();
    1135  SequenceVarElement* element = nullptr;
    1136  if (assignment_indices != nullptr) {
    1137  if ((*assignment_indices)[index] == -1) {
    1138  (*assignment_indices)[index] = container->Size();
    1139  element = assignment->FastAdd(var);
    1140  } else {
    1141  element = container->MutableElement((*assignment_indices)[index]);
    1142  }
    1143  } else {
    1144  element = assignment->FastAdd(var);
    1145  }
    1146  if (active) {
    1147  element->SetForwardSequence(value);
    1148  element->SetBackwardSequence(op_->backward_values_[index]);
    1149  element->Activate();
    1150  } else {
    1151  element->Deactivate();
    1152  }
    1153 }
    1154 
    1156  const Assignment& assignment, SequenceVar* var, int64 index,
    1157  std::vector<int>* value) {
    1158  const Assignment::SequenceContainer& container =
    1159  assignment.SequenceVarContainer();
    1160  const SequenceVarElement* element = &(container.Element(index));
    1161  if (element->Var() != var) {
    1162  CHECK(container.Contains(var))
    1163  << "Assignment does not contain operator variable " << var;
    1164  element = &(container.Element(var));
    1165  }
    1166  const std::vector<int>& element_value = element->ForwardSequence();
    1167  CHECK_GE(var->size(), element_value.size());
    1168  op_->backward_values_[index].clear();
    1169  *value = element_value;
    1170  return element->Activated();
    1171 }
    1172 
    1174  op_->backward_values_[index].clear();
    1175 }
    1176 
    1178  op_->backward_values_.resize(op_->Size());
    1179 }
    1180 
    1209  public:
    1210  explicit BaseLns(const std::vector<IntVar*>& vars);
    1211  ~BaseLns() override;
    1212  virtual void InitFragments();
    1213  virtual bool NextFragment() = 0;
    1214  void AppendToFragment(int index);
    1215  int FragmentSize() const;
    1216  bool HasFragments() const override { return true; }
    1217 
    1218  protected:
    1220  bool MakeOneNeighbor() override;
    1221 
    1222  private:
    1224  void OnStart() override;
    1225  std::vector<int> fragment_;
    1226 };
    1227 
    1233  public:
    1234  explicit ChangeValue(const std::vector<IntVar*>& vars);
    1235  ~ChangeValue() override;
    1236  virtual int64 ModifyValue(int64 index, int64 value) = 0;
    1237 
    1238  protected:
    1240  bool MakeOneNeighbor() override;
    1241 
    1242  private:
    1243  void OnStart() override;
    1244 
    1245  int index_;
    1246 };
    1247 
    1262  public:
    1276  PathOperator(const std::vector<IntVar*>& next_vars,
    1277  const std::vector<IntVar*>& path_vars, int number_of_base_nodes,
    1278  bool skip_locally_optimal_paths,
    1279  std::function<int(int64)> start_empty_path_class);
    1280  ~PathOperator() override {}
    1281  virtual bool MakeNeighbor() = 0;
    1282  void Reset() override;
    1283 
    1284  // TODO(user): Make the following methods protected.
    1285  bool SkipUnchanged(int index) const override;
    1286 
    1289  int64 Next(int64 node_index) const {
    1290  DCHECK(!IsPathEnd(node_index));
    1291  return Value(node_index);
    1292  }
    1293 
    1296  int64 Path(int64 node_index) const {
    1297  return ignore_path_vars_ ? 0LL : Value(node_index + number_of_nexts_);
    1298  }
    1299 
    1301  int number_of_nexts() const { return number_of_nexts_; }
    1302 
    1303  protected:
    1305  bool MakeOneNeighbor() override;
    1306 
    1308  int64 BaseNode(int i) const { return base_nodes_[i]; }
    1311  int64 StartNode(int i) const { return path_starts_[base_paths_[i]]; }
    1313  const std::vector<int64>& path_starts() const { return path_starts_; }
    1315  int PathClass(int i) const {
    1316  return start_empty_path_class_ != nullptr
    1317  ? start_empty_path_class_(StartNode(i))
    1318  : StartNode(i);
    1319  }
    1320 
    1327  // TODO(user): remove this when automatic detection of such cases in done.
    1328  virtual bool RestartAtPathStartOnSynchronize() { return false; }
    1332  // TODO(user): ideally this should be OnSamePath(int64 node1, int64 node2);
    1334  virtual bool OnSamePathAsPreviousBase(int64 base_index) { return false; }
    1340  virtual int64 GetBaseNodeRestartPosition(int base_index) {
    1341  return StartNode(base_index);
    1342  }
    1345  virtual void SetNextBaseToIncrement(int64 base_index) {
    1346  next_base_to_increment_ = base_index;
    1347  }
    1348 
    1349  int64 OldNext(int64 node_index) const {
    1350  DCHECK(!IsPathEnd(node_index));
    1351  return OldValue(node_index);
    1352  }
    1353 
    1354  int64 OldPath(int64 node_index) const {
    1355  return ignore_path_vars_ ? 0LL : OldValue(node_index + number_of_nexts_);
    1356  }
    1357 
    1360  bool MoveChain(int64 before_chain, int64 chain_end, int64 destination);
    1361 
    1364  bool ReverseChain(int64 before_chain, int64 after_chain, int64* chain_last);
    1365 
    1366  bool MakeActive(int64 node, int64 destination);
    1367  bool MakeChainInactive(int64 before_chain, int64 chain_end);
    1368 
    1370  void SetNext(int64 from, int64 to, int64 path) {
    1371  DCHECK_LT(from, number_of_nexts_);
    1372  SetValue(from, to);
    1373  if (!ignore_path_vars_) {
    1374  DCHECK_LT(from + number_of_nexts_, Size());
    1375  SetValue(from + number_of_nexts_, path);
    1376  }
    1377  }
    1378 
    1381  bool IsPathEnd(int64 i) const { return i >= number_of_nexts_; }
    1382 
    1384  bool IsInactive(int64 i) const { return !IsPathEnd(i) && inactives_[i]; }
    1385 
    1388  virtual bool InitPosition() const { return false; }
    1392  void ResetPosition() { just_started_ = true; }
    1393 
    1394  const int number_of_nexts_;
    1395  const bool ignore_path_vars_;
    1397  int num_paths_ = 0;
    1398  std::vector<int64> start_to_path_;
    1399 
    1400  private:
    1401  void OnStart() override;
    1405  virtual void OnNodeInitialization() {}
    1407  bool OnSamePath(int64 node1, int64 node2) const;
    1408 
    1409  bool CheckEnds() const {
    1410  const int base_node_size = base_nodes_.size();
    1411  for (int i = base_node_size - 1; i >= 0; --i) {
    1412  if (base_nodes_[i] != end_nodes_[i]) {
    1413  return true;
    1414  }
    1415  }
    1416  return false;
    1417  }
    1418  bool IncrementPosition();
    1419  void InitializePathStarts();
    1420  void InitializeInactives();
    1421  void InitializeBaseNodes();
    1422  bool CheckChainValidity(int64 before_chain, int64 chain_end,
    1423  int64 exclude) const;
    1424  void Synchronize();
    1425 
    1426  std::vector<int> base_nodes_;
    1427  std::vector<int> end_nodes_;
    1428  std::vector<int> base_paths_;
    1429  std::vector<int64> path_starts_;
    1430  std::vector<bool> inactives_;
    1431  bool just_started_;
    1432  bool first_start_;
    1433  std::function<int(int64)> start_empty_path_class_;
    1434  bool skip_locally_optimal_paths_;
    1435  bool optimal_paths_enabled_;
    1436  std::vector<int> path_basis_;
    1437  std::vector<bool> optimal_paths_;
    1438 };
    1439 
    1443  public:
    1445  const std::vector<IntVar*>& vars,
    1446  const std::vector<IntVar*>& secondary_vars, int number_of_base_nodes,
    1447  std::function<int(int64)> start_empty_path_class);
    1449 
    1450  bool IsPathStart(int64 node_index) const { return prevs_[node_index] == -1; }
    1451 
    1452  int64 Prev(int64 node_index) const {
    1453  DCHECK(!IsPathStart(node_index));
    1454  return prevs_[node_index];
    1455  }
    1456 
    1457  std::string DebugString() const override {
    1458  return "PathWithPreviousNodesOperator";
    1459  }
    1460 
    1461  protected:
    1462  void OnNodeInitialization() override;
    1463 
    1464  private:
    1465  std::vector<int64> prevs_;
    1466 };
    1467 
    1469 template <class T>
    1470 LocalSearchOperator* MakeLocalSearchOperator(
    1471  Solver* solver, const std::vector<IntVar*>& vars,
    1472  const std::vector<IntVar*>& secondary_vars,
    1473  std::function<int(int64)> start_empty_path_class);
    1474 
    1477 class TwoOpt;
    1478 class Relocate;
    1479 class Exchange;
    1480 class Cross;
    1481 class MakeActiveOperator;
    1482 class MakeInactiveOperator;
    1483 class MakeChainInactiveOperator;
    1484 class SwapActiveOperator;
    1485 class ExtendedSwapActiveOperator;
    1486 class MakeActiveAndRelocate;
    1487 class RelocateAndMakeActiveOperator;
    1488 class RelocateAndMakeInactiveOperator;
    1489 
    1492  public:
    1501  virtual bool Accept(const Assignment* delta, const Assignment* deltadelta,
    1502  int64 objective_min, int64 objective_max) = 0;
    1503 
    1509  virtual void Synchronize(const Assignment* assignment,
    1510  const Assignment* delta) = 0;
    1511  virtual bool IsIncremental() const { return false; }
    1512 
    1514  virtual int64 GetSynchronizedObjectiveValue() const { return 0LL; }
    1516  // If the last Accept() call returned false, returns an undefined value.
    1517  virtual int64 GetAcceptedObjectiveValue() const { return 0LL; }
    1518 };
    1519 
    1520 #if !defined(SWIG)
    1521 class LocalSearchFilterManager : public LocalSearchFilter {
    1525  public:
    1526  LocalSearchFilterManager(Solver* const solver,
    1527  const std::vector<LocalSearchFilter*>& filters);
    1528  std::string DebugString() const override {
    1529  return "LocalSearchFilterManager";
    1530  }
    1533  bool Accept(const Assignment* delta, const Assignment* deltadelta,
    1534  int64 objective_min, int64 objective_max) override;
    1536  void Synchronize(const Assignment* assignment,
    1537  const Assignment* delta) override;
    1538  bool IsIncremental() const override { return is_incremental_; }
    1539  int64 GetSynchronizedObjectiveValue() const override {
    1540  return synchronized_value_;
    1541  }
    1542  int64 GetAcceptedObjectiveValue() const override { return accepted_value_; }
    1543 
    1544  private:
    1545  Solver* const solver_;
    1546  std::vector<LocalSearchFilter*> filters_;
    1547  bool is_incremental_;
    1548  int64 synchronized_value_;
    1549  int64 accepted_value_;
    1550 };
    1551 #endif
    1552 
    1554  public:
    1555  IntVarLocalSearchFilter(const std::vector<IntVar*>& vars,
    1556  Solver::ObjectiveWatcher objective_callback);
    1557  explicit IntVarLocalSearchFilter(const std::vector<IntVar*>& vars);
    1558  ~IntVarLocalSearchFilter() override;
    1561  void Synchronize(const Assignment* assignment,
    1562  const Assignment* delta) override;
    1563 
    1564  bool FindIndex(IntVar* const var, int64* index) const {
    1565  DCHECK(index != nullptr);
    1566  const int var_index = var->index();
    1567  *index = (var_index < var_index_to_index_.size())
    1568  ? var_index_to_index_[var_index]
    1569  : kUnassigned;
    1570  return *index != kUnassigned;
    1571  }
    1572 
    1573  virtual void InjectObjectiveValue(int64 objective_value) {
    1574  injected_objective_value_ = objective_value;
    1575  }
    1576 
    1578  void AddVars(const std::vector<IntVar*>& vars);
    1579  int Size() const { return vars_.size(); }
    1580  IntVar* Var(int index) const { return vars_[index]; }
    1581  int64 Value(int index) const {
    1582  DCHECK(IsVarSynced(index));
    1583  return values_[index];
    1584  }
    1585  bool IsVarSynced(int index) const { return var_synced_[index]; }
    1586 
    1587  protected:
    1588  virtual void OnSynchronize(const Assignment* delta) {}
    1589  void SynchronizeOnAssignment(const Assignment* assignment);
    1590 
    1592  return objective_callback_ != nullptr;
    1593  }
    1594  void PropagateObjectiveValue(int64 objective_value) {
    1595  if (objective_callback_ != nullptr) {
    1596  objective_callback_(objective_value);
    1597  }
    1598  }
    1600 
    1601  private:
    1602  std::vector<IntVar*> vars_;
    1603  std::vector<int64> values_;
    1604  std::vector<bool> var_synced_;
    1605  std::vector<int> var_index_to_index_;
    1606  static const int kUnassigned;
    1607  Solver::ObjectiveWatcher objective_callback_;
    1608 };
    1609 
    1611  public:
    1612  explicit PropagationMonitor(Solver* const solver);
    1613  ~PropagationMonitor() override;
    1614  std::string DebugString() const override { return "PropagationMonitor"; }
    1615 
    1617  virtual void BeginConstraintInitialPropagation(
    1618  Constraint* const constraint) = 0;
    1619  virtual void EndConstraintInitialPropagation(
    1620  Constraint* const constraint) = 0;
    1622  Constraint* const parent, Constraint* const nested) = 0;
    1624  Constraint* const parent, Constraint* const nested) = 0;
    1625  virtual void RegisterDemon(Demon* const demon) = 0;
    1626  virtual void BeginDemonRun(Demon* const demon) = 0;
    1627  virtual void EndDemonRun(Demon* const demon) = 0;
    1628  virtual void StartProcessingIntegerVariable(IntVar* const var) = 0;
    1629  virtual void EndProcessingIntegerVariable(IntVar* const var) = 0;
    1630  virtual void PushContext(const std::string& context) = 0;
    1631  virtual void PopContext() = 0;
    1633  virtual void SetMin(IntExpr* const expr, int64 new_min) = 0;
    1634  virtual void SetMax(IntExpr* const expr, int64 new_max) = 0;
    1635  virtual void SetRange(IntExpr* const expr, int64 new_min, int64 new_max) = 0;
    1637  virtual void SetMin(IntVar* const var, int64 new_min) = 0;
    1638  virtual void SetMax(IntVar* const var, int64 new_max) = 0;
    1639  virtual void SetRange(IntVar* const var, int64 new_min, int64 new_max) = 0;
    1640  virtual void RemoveValue(IntVar* const var, int64 value) = 0;
    1641  virtual void SetValue(IntVar* const var, int64 value) = 0;
    1642  virtual void RemoveInterval(IntVar* const var, int64 imin, int64 imax) = 0;
    1643  virtual void SetValues(IntVar* const var,
    1644  const std::vector<int64>& values) = 0;
    1645  virtual void RemoveValues(IntVar* const var,
    1646  const std::vector<int64>& values) = 0;
    1648  virtual void SetStartMin(IntervalVar* const var, int64 new_min) = 0;
    1649  virtual void SetStartMax(IntervalVar* const var, int64 new_max) = 0;
    1650  virtual void SetStartRange(IntervalVar* const var, int64 new_min,
    1651  int64 new_max) = 0;
    1652  virtual void SetEndMin(IntervalVar* const var, int64 new_min) = 0;
    1653  virtual void SetEndMax(IntervalVar* const var, int64 new_max) = 0;
    1654  virtual void SetEndRange(IntervalVar* const var, int64 new_min,
    1655  int64 new_max) = 0;
    1656  virtual void SetDurationMin(IntervalVar* const var, int64 new_min) = 0;
    1657  virtual void SetDurationMax(IntervalVar* const var, int64 new_max) = 0;
    1658  virtual void SetDurationRange(IntervalVar* const var, int64 new_min,
    1659  int64 new_max) = 0;
    1660  virtual void SetPerformed(IntervalVar* const var, bool value) = 0;
    1662  virtual void RankFirst(SequenceVar* const var, int index) = 0;
    1663  virtual void RankNotFirst(SequenceVar* const var, int index) = 0;
    1664  virtual void RankLast(SequenceVar* const var, int index) = 0;
    1665  virtual void RankNotLast(SequenceVar* const var, int index) = 0;
    1666  virtual void RankSequence(SequenceVar* const var,
    1667  const std::vector<int>& rank_first,
    1668  const std::vector<int>& rank_last,
    1669  const std::vector<int>& unperformed) = 0;
    1671  void Install() override;
    1672 };
    1673 
    1675  // TODO(user): Add monitoring of local search filters.
    1676  public:
    1677  explicit LocalSearchMonitor(Solver* const solver);
    1678  ~LocalSearchMonitor() override;
    1679  std::string DebugString() const override { return "LocalSearchMonitor"; }
    1680 
    1682  virtual void BeginOperatorStart() = 0;
    1683  virtual void EndOperatorStart() = 0;
    1684  virtual void BeginMakeNextNeighbor(const LocalSearchOperator* op) = 0;
    1685  virtual void EndMakeNextNeighbor(const LocalSearchOperator* op,
    1686  bool neighbor_found, const Assignment* delta,
    1687  const Assignment* deltadelta) = 0;
    1688  virtual void BeginFilterNeighbor(const LocalSearchOperator* op) = 0;
    1689  virtual void EndFilterNeighbor(const LocalSearchOperator* op,
    1690  bool neighbor_found) = 0;
    1691  virtual void BeginAcceptNeighbor(const LocalSearchOperator* op) = 0;
    1692  virtual void EndAcceptNeighbor(const LocalSearchOperator* op,
    1693  bool neighbor_found) = 0;
    1694  virtual void BeginFiltering(const LocalSearchFilter* filter) = 0;
    1695  virtual void EndFiltering(const LocalSearchFilter* filter, bool reject) = 0;
    1696 
    1698  void Install() override;
    1699 };
    1700 
    1701 class BooleanVar : public IntVar {
    1702  public:
    1703  static const int kUnboundBooleanVarValue;
    1704 
    1705  explicit BooleanVar(Solver* const s, const std::string& name = "")
    1707 
    1708  ~BooleanVar() override {}
    1709 
    1710  int64 Min() const override { return (value_ == 1); }
    1711  void SetMin(int64 m) override;
    1712  int64 Max() const override { return (value_ != 0); }
    1713  void SetMax(int64 m) override;
    1714  void SetRange(int64 mi, int64 ma) override;
    1715  bool Bound() const override { return (value_ != kUnboundBooleanVarValue); }
    1716  int64 Value() const override {
    1717  CHECK_NE(value_, kUnboundBooleanVarValue) << "variable is not bound";
    1718  return value_;
    1719  }
    1720  void RemoveValue(int64 v) override;
    1721  void RemoveInterval(int64 l, int64 u) override;
    1722  void WhenBound(Demon* d) override;
    1723  void WhenRange(Demon* d) override { WhenBound(d); }
    1724  void WhenDomain(Demon* d) override { WhenBound(d); }
    1725  uint64 Size() const override;
    1726  bool Contains(int64 v) const override;
    1727  IntVarIterator* MakeHoleIterator(bool reversible) const override;
    1728  IntVarIterator* MakeDomainIterator(bool reversible) const override;
    1729  std::string DebugString() const override;
    1730  int VarType() const override { return BOOLEAN_VAR; }
    1731 
    1732  IntVar* IsEqual(int64 constant) override;
    1733  IntVar* IsDifferent(int64 constant) override;
    1734  IntVar* IsGreaterOrEqual(int64 constant) override;
    1735  IntVar* IsLessOrEqual(int64 constant) override;
    1736 
    1737  virtual void RestoreValue() = 0;
    1738  std::string BaseName() const override { return "BooleanVar"; }
    1739 
    1740  int RawValue() const { return value_; }
    1741 
    1742  protected:
    1743  int value_;
    1746 };
    1747 
    1748 class SymmetryManager;
    1749 
    1754  public:
    1756  : symmetry_manager_(nullptr), index_in_symmetry_manager_(-1) {}
    1757  ~SymmetryBreaker() override {}
    1758 
    1759  void AddIntegerVariableEqualValueClause(IntVar* const var, int64 value);
    1761  int64 value);
    1762  void AddIntegerVariableLessOrEqualValueClause(IntVar* const var, int64 value);
    1763 
    1764  private:
    1765  friend class SymmetryManager;
    1766  void set_symmetry_manager_and_index(SymmetryManager* manager, int index) {
    1767  CHECK(symmetry_manager_ == nullptr);
    1768  CHECK_EQ(-1, index_in_symmetry_manager_);
    1769  symmetry_manager_ = manager;
    1770  index_in_symmetry_manager_ = index;
    1771  }
    1772  SymmetryManager* symmetry_manager() const { return symmetry_manager_; }
    1773  int index_in_symmetry_manager() const { return index_in_symmetry_manager_; }
    1774 
    1775  SymmetryManager* symmetry_manager_;
    1777  int index_in_symmetry_manager_;
    1778 };
    1779 
    1782 class SearchLog : public SearchMonitor {
    1783  public:
    1784  SearchLog(Solver* const s, OptimizeVar* const obj, IntVar* const var,
    1785  double scaling_factor, double offset,
    1786  std::function<std::string()> display_callback, int period);
    1787  ~SearchLog() override;
    1788  void EnterSearch() override;
    1789  void ExitSearch() override;
    1790  bool AtSolution() override;
    1791  void BeginFail() override;
    1792  void NoMoreSolutions() override;
    1793  void AcceptUncheckedNeighbor() override;
    1794  void ApplyDecision(Decision* const decision) override;
    1795  void RefuteDecision(Decision* const decision) override;
    1796  void OutputDecision();
    1797  void Maintain();
    1798  void BeginInitialPropagation() override;
    1799  void EndInitialPropagation() override;
    1800  std::string DebugString() const override;
    1801 
    1802  protected:
    1803  /* Bottleneck function used for all UI related output. */
    1804  virtual void OutputLine(const std::string& line);
    1805 
    1806  private:
    1807  static std::string MemoryUsage();
    1808 
    1809  const int period_;
    1810  std::unique_ptr<WallTimer> timer_;
    1811  IntVar* const var_;
    1812  OptimizeVar* const obj_;
    1813  const double scaling_factor_;
    1814  const double offset_;
    1815  std::function<std::string()> display_callback_;
    1816  int nsol_;
    1817  int64 tick_;
    1818  int64 objective_min_;
    1819  int64 objective_max_;
    1820  int min_right_depth_;
    1821  int max_depth_;
    1822  int sliding_min_depth_;
    1823  int sliding_max_depth_;
    1824 };
    1825 
    1830 class ModelCache {
    1831  public:
    1836  };
    1837 
    1844  };
    1845 
    1849  };
    1850 
    1859  };
    1860 
    1866  };
    1867 
    1880  };
    1881 
    1885  };
    1886 
    1899  };
    1903  };
    1904 
    1908  };
    1909 
    1913  };
    1914 
    1920  };
    1921 
    1925  };
    1926 
    1927  explicit ModelCache(Solver* const solver);
    1928  virtual ~ModelCache();
    1929 
    1930  virtual void Clear() = 0;
    1931 
    1933 
    1934  virtual Constraint* FindVoidConstraint(VoidConstraintType type) const = 0;
    1935 
    1936  virtual void InsertVoidConstraint(Constraint* const ct,
    1937  VoidConstraintType type) = 0;
    1938 
    1941  IntVar* const var, int64 value, VarConstantConstraintType type) const = 0;
    1942 
    1943  virtual void InsertVarConstantConstraint(Constraint* const ct,
    1944  IntVar* const var, int64 value,
    1945  VarConstantConstraintType type) = 0;
    1946 
    1948 
    1950  IntVar* const var, int64 value1, int64 value2,
    1951  VarConstantConstantConstraintType type) const = 0;
    1952 
    1954  Constraint* const ct, IntVar* const var, int64 value1, int64 value2,
    1956 
    1958 
    1960  IntExpr* const expr1, IntExpr* const expr2,
    1961  ExprExprConstraintType type) const = 0;
    1962 
    1963  virtual void InsertExprExprConstraint(Constraint* const ct,
    1964  IntExpr* const expr1,
    1965  IntExpr* const expr2,
    1966  ExprExprConstraintType type) = 0;
    1967 
    1969 
    1970  virtual IntExpr* FindExprExpression(IntExpr* const expr,
    1971  ExprExpressionType type) const = 0;
    1972 
    1973  virtual void InsertExprExpression(IntExpr* const expression,
    1974  IntExpr* const expr,
    1975  ExprExpressionType type) = 0;
    1976 
    1978 
    1980  IntExpr* const expr, int64 value,
    1981  ExprConstantExpressionType type) const = 0;
    1982 
    1983  virtual void InsertExprConstantExpression(
    1984  IntExpr* const expression, IntExpr* const var, int64 value,
    1985  ExprConstantExpressionType type) = 0;
    1986 
    1988 
    1990  IntExpr* const var1, IntExpr* const var2,
    1991  ExprExprExpressionType type) const = 0;
    1992 
    1993  virtual void InsertExprExprExpression(IntExpr* const expression,
    1994  IntExpr* const var1,
    1995  IntExpr* const var2,
    1996  ExprExprExpressionType type) = 0;
    1997 
    1999 
    2001  IntExpr* const var1, IntExpr* const var2, int64 constant,
    2002  ExprExprConstantExpressionType type) const = 0;
    2003 
    2004  virtual void InsertExprExprConstantExpression(
    2005  IntExpr* const expression, IntExpr* const var1, IntExpr* const var2,
    2006  int64 constant, ExprExprConstantExpressionType type) = 0;
    2007 
    2009 
    2011  IntVar* const var, int64 value1, int64 value2,
    2012  VarConstantConstantExpressionType type) const = 0;
    2013 
    2015  IntExpr* const expression, IntVar* const var, int64 value1, int64 value2,
    2017 
    2019 
    2021  IntVar* const var, const std::vector<int64>& values,
    2022  VarConstantArrayExpressionType type) const = 0;
    2023 
    2024  virtual void InsertVarConstantArrayExpression(
    2025  IntExpr* const expression, IntVar* const var,
    2026  const std::vector<int64>& values,
    2028 
    2030 
    2032  const std::vector<IntVar*>& vars, VarArrayExpressionType type) const = 0;
    2033 
    2034  virtual void InsertVarArrayExpression(IntExpr* const expression,
    2035  const std::vector<IntVar*>& vars,
    2036  VarArrayExpressionType type) = 0;
    2037 
    2039 
    2041  const std::vector<IntVar*>& vars, const std::vector<int64>& values,
    2042  VarArrayConstantArrayExpressionType type) const = 0;
    2043 
    2045  IntExpr* const expression, const std::vector<IntVar*>& var,
    2046  const std::vector<int64>& values,
    2048 
    2050 
    2052  const std::vector<IntVar*>& vars, int64 value,
    2053  VarArrayConstantExpressionType type) const = 0;
    2054 
    2055  virtual void InsertVarArrayConstantExpression(
    2056  IntExpr* const expression, const std::vector<IntVar*>& var, int64 value,
    2058 
    2059  Solver* solver() const;
    2060 
    2061  private:
    2062  Solver* const solver_;
    2063 };
    2064 
    2066 #if !defined(SWIG)
    2068  public:
    2070  const std::string& TypeName() const;
    2071  void SetTypeName(const std::string& type_name);
    2072 
    2074  void SetIntegerArgument(const std::string& arg_name, int64 value);
    2075  void SetIntegerArrayArgument(const std::string& arg_name,
    2076  const std::vector<int64>& values);
    2077  void SetIntegerMatrixArgument(const std::string& arg_name,
    2078  const IntTupleSet& values);
    2079  void SetIntegerExpressionArgument(const std::string& arg_name,
    2080  IntExpr* const expr);
    2081  void SetIntegerVariableArrayArgument(const std::string& arg_name,
    2082  const std::vector<IntVar*>& vars);
    2083  void SetIntervalArgument(const std::string& arg_name, IntervalVar* const var);
    2084  void SetIntervalArrayArgument(const std::string& arg_name,
    2085  const std::vector<IntervalVar*>& vars);
    2086  void SetSequenceArgument(const std::string& arg_name, SequenceVar* const var);
    2087  void SetSequenceArrayArgument(const std::string& arg_name,
    2088  const std::vector<SequenceVar*>& vars);
    2089 
    2091  bool HasIntegerExpressionArgument(const std::string& arg_name) const;
    2092  bool HasIntegerVariableArrayArgument(const std::string& arg_name) const;
    2093 
    2095  int64 FindIntegerArgumentWithDefault(const std::string& arg_name,
    2096  int64 def) const;
    2097  int64 FindIntegerArgumentOrDie(const std::string& arg_name) const;
    2098  const std::vector<int64>& FindIntegerArrayArgumentOrDie(
    2099  const std::string& arg_name) const;
    2100  const IntTupleSet& FindIntegerMatrixArgumentOrDie(
    2101  const std::string& arg_name) const;
    2102 
    2104  const std::string& arg_name) const;
    2105  const std::vector<IntVar*>& FindIntegerVariableArrayArgumentOrDie(
    2106  const std::string& arg_name) const;
    2107 
    2108  private:
    2109  std::string type_name_;
    2110  absl::flat_hash_map<std::string, int64> integer_argument_;
    2111  absl::flat_hash_map<std::string, std::vector<int64> > integer_array_argument_;
    2112  absl::flat_hash_map<std::string, IntTupleSet> matrix_argument_;
    2113  absl::flat_hash_map<std::string, IntExpr*> integer_expression_argument_;
    2114  absl::flat_hash_map<std::string, IntervalVar*> interval_argument_;
    2115  absl::flat_hash_map<std::string, SequenceVar*> sequence_argument_;
    2116  absl::flat_hash_map<std::string, std::vector<IntVar*> >
    2117  integer_variable_array_argument_;
    2118  absl::flat_hash_map<std::string, std::vector<IntervalVar*> >
    2119  interval_array_argument_;
    2120  absl::flat_hash_map<std::string, std::vector<SequenceVar*> >
    2121  sequence_array_argument_;
    2122 };
    2123 
    2125 class ModelParser : public ModelVisitor {
    2126  public:
    2127  ModelParser();
    2128 
    2129  ~ModelParser() override;
    2130 
    2132  void BeginVisitModel(const std::string& solver_name) override;
    2133  void EndVisitModel(const std::string& solver_name) override;
    2134  void BeginVisitConstraint(const std::string& type_name,
    2135  const Constraint* const constraint) override;
    2136  void EndVisitConstraint(const std::string& type_name,
    2137  const Constraint* const constraint) override;
    2138  void BeginVisitIntegerExpression(const std::string& type_name,
    2139  const IntExpr* const expr) override;
    2140  void EndVisitIntegerExpression(const std::string& type_name,
    2141  const IntExpr* const expr) override;
    2142  void VisitIntegerVariable(const IntVar* const variable,
    2143  IntExpr* const delegate) override;
    2144  void VisitIntegerVariable(const IntVar* const variable,
    2145  const std::string& operation, int64 value,
    2146  IntVar* const delegate) override;
    2147  void VisitIntervalVariable(const IntervalVar* const variable,
    2148  const std::string& operation, int64 value,
    2149  IntervalVar* const delegate) override;
    2150  void VisitSequenceVariable(const SequenceVar* const variable) override;
    2152  void VisitIntegerArgument(const std::string& arg_name, int64 value) override;
    2153  void VisitIntegerArrayArgument(const std::string& arg_name,
    2154  const std::vector<int64>& values) override;
    2155  void VisitIntegerMatrixArgument(const std::string& arg_name,
    2156  const IntTupleSet& values) override;
    2158  void VisitIntegerExpressionArgument(const std::string& arg_name,
    2159  IntExpr* const argument) override;
    2161  const std::string& arg_name,
    2162  const std::vector<IntVar*>& arguments) override;
    2164  void VisitIntervalArgument(const std::string& arg_name,
    2165  IntervalVar* const argument) override;
    2167  const std::string& arg_name,
    2168  const std::vector<IntervalVar*>& arguments) override;
    2170  void VisitSequenceArgument(const std::string& arg_name,
    2171  SequenceVar* const argument) override;
    2173  const std::string& arg_name,
    2174  const std::vector<SequenceVar*>& arguments) override;
    2175 
    2176  protected:
    2177  void PushArgumentHolder();
    2178  void PopArgumentHolder();
    2179  ArgumentHolder* Top() const;
    2180 
    2181  private:
    2182  std::vector<ArgumentHolder*> holders_;
    2183 };
    2184 
    2185 template <class T>
    2186 class ArrayWithOffset : public BaseObject {
    2187  public:
    2188  ArrayWithOffset(int64 index_min, int64 index_max)
    2189  : index_min_(index_min),
    2190  index_max_(index_max),
    2191  values_(new T[index_max - index_min + 1]) {
    2192  DCHECK_LE(index_min, index_max);
    2193  }
    2194 
    2195  ~ArrayWithOffset() override {}
    2196 
    2197  virtual T Evaluate(int64 index) const {
    2198  DCHECK_GE(index, index_min_);
    2199  DCHECK_LE(index, index_max_);
    2200  return values_[index - index_min_];
    2201  }
    2202 
    2203  void SetValue(int64 index, T value) {
    2204  DCHECK_GE(index, index_min_);
    2205  DCHECK_LE(index, index_max_);
    2206  values_[index - index_min_] = value;
    2207  }
    2208 
    2209  std::string DebugString() const override { return "ArrayWithOffset"; }
    2210 
    2211  private:
    2212  const int64 index_min_;
    2213  const int64 index_max_;
    2214  std::unique_ptr<T[]> values_;
    2215 };
    2216 #endif // SWIG
    2217 
    2222 template <class T, class C>
    2224  public:
    2225  explicit RevGrowingArray(int64 block_size)
    2226  : block_size_(block_size), block_offset_(0) {
    2227  CHECK_GT(block_size, 0);
    2228  }
    2229 
    2231  for (int i = 0; i < elements_.size(); ++i) {
    2232  delete[] elements_[i];
    2233  }
    2234  }
    2235 
    2236  T At(int64 index) const {
    2237  const int64 block_index = ComputeBlockIndex(index);
    2238  const int64 relative_index = block_index - block_offset_;
    2239  if (relative_index < 0 || relative_index >= elements_.size()) {
    2240  return T();
    2241  }
    2242  const T* block = elements_[relative_index];
    2243  return block != nullptr ? block[index - block_index * block_size_] : T();
    2244  }
    2245 
    2246  void RevInsert(Solver* const solver, int64 index, T value) {
    2247  const int64 block_index = ComputeBlockIndex(index);
    2248  T* const block = GetOrCreateBlock(block_index);
    2249  const int64 residual = index - block_index * block_size_;
    2250  solver->SaveAndSetValue(reinterpret_cast<C*>(&block[residual]),
    2251  reinterpret_cast<C>(value));
    2252  }
    2253 
    2254  private:
    2255  T* NewBlock() const {
    2256  T* const result = new T[block_size_];
    2257  for (int i = 0; i < block_size_; ++i) {
    2258  result[i] = T();
    2259  }
    2260  return result;
    2261  }
    2262 
    2263  T* GetOrCreateBlock(int block_index) {
    2264  if (elements_.size() == 0) {
    2265  block_offset_ = block_index;
    2266  GrowUp(block_index);
    2267  } else if (block_index < block_offset_) {
    2268  GrowDown(block_index);
    2269  } else if (block_index - block_offset_ >= elements_.size()) {
    2270  GrowUp(block_index);
    2271  }
    2272  T* block = elements_[block_index - block_offset_];
    2273  if (block == nullptr) {
    2274  block = NewBlock();
    2275  elements_[block_index - block_offset_] = block;
    2276  }
    2277  return block;
    2278  }
    2279 
    2280  int64 ComputeBlockIndex(int64 value) const {
    2281  return value >= 0 ? value / block_size_
    2282  : (value - block_size_ + 1) / block_size_;
    2283  }
    2284 
    2285  void GrowUp(int64 block_index) {
    2286  elements_.resize(block_index - block_offset_ + 1);
    2287  }
    2288 
    2289  void GrowDown(int64 block_index) {
    2290  const int64 delta = block_offset_ - block_index;
    2291  block_offset_ = block_index;
    2292  DCHECK_GT(delta, 0);
    2293  elements_.insert(elements_.begin(), delta, nullptr);
    2294  }
    2295 
    2296  const int64 block_size_;
    2297  std::vector<T*> elements_;
    2298  int block_offset_;
    2299 };
    2300 
    2305 template <class T>
    2306 class RevIntSet {
    2307  public:
    2308  static const int kNoInserted = -1;
    2309 
    2311  explicit RevIntSet(int capacity)
    2312  : elements_(new T[capacity]),
    2313  num_elements_(0),
    2314  capacity_(capacity),
    2315  position_(new int[capacity]),
    2316  delete_position_(true) {
    2317  for (int i = 0; i < capacity; ++i) {
    2318  position_[i] = kNoInserted;
    2319  }
    2320  }
    2321 
    2323  RevIntSet(int capacity, int* shared_positions, int shared_positions_size)
    2324  : elements_(new T[capacity]),
    2325  num_elements_(0),
    2326  capacity_(capacity),
    2327  position_(shared_positions),
    2328  delete_position_(false) {
    2329  for (int i = 0; i < shared_positions_size; ++i) {
    2330  position_[i] = kNoInserted;
    2331  }
    2332  }
    2333 
    2335  if (delete_position_) {
    2336  delete[] position_;
    2337  }
    2338  }
    2339 
    2340  int Size() const { return num_elements_.Value(); }
    2341 
    2342  int Capacity() const { return capacity_; }
    2343 
    2344  T Element(int i) const {
    2345  DCHECK_GE(i, 0);
    2346  DCHECK_LT(i, num_elements_.Value());
    2347  return elements_[i];
    2348  }
    2349 
    2350  T RemovedElement(int i) const {
    2351  DCHECK_GE(i, 0);
    2352  DCHECK_LT(i + num_elements_.Value(), capacity_);
    2353  return elements_[i + num_elements_.Value()];
    2354  }
    2355 
    2356  void Insert(Solver* const solver, const T& elt) {
    2357  const int position = num_elements_.Value();
    2358  DCHECK_LT(position, capacity_);
    2359  DCHECK(NotAlreadyInserted(elt));
    2360  elements_[position] = elt;
    2361  position_[elt] = position;
    2362  num_elements_.Incr(solver);
    2363  }
    2364 
    2365  void Remove(Solver* const solver, const T& value_index) {
    2366  num_elements_.Decr(solver);
    2367  SwapTo(value_index, num_elements_.Value());
    2368  }
    2369 
    2370  void Restore(Solver* const solver, const T& value_index) {
    2371  SwapTo(value_index, num_elements_.Value());
    2372  num_elements_.Incr(solver);
    2373  }
    2374 
    2375  void Clear(Solver* const solver) { num_elements_.SetValue(solver, 0); }
    2376 
    2378  typedef const T* const_iterator;
    2379  const_iterator begin() const { return elements_.get(); }
    2380  const_iterator end() const { return elements_.get() + num_elements_.Value(); }
    2381 
    2382  private:
    2384  bool NotAlreadyInserted(const T& elt) {
    2385  for (int i = 0; i < num_elements_.Value(); ++i) {
    2386  if (elt == elements_[i]) {
    2387  return false;
    2388  }
    2389  }
    2390  return true;
    2391  }
    2392 
    2393  void SwapTo(T value_index, int next_position) {
    2394  const int current_position = position_[value_index];
    2395  if (current_position != next_position) {
    2396  const T next_value_index = elements_[next_position];
    2397  elements_[current_position] = next_value_index;
    2398  elements_[next_position] = value_index;
    2399  position_[value_index] = next_position;
    2400  position_[next_value_index] = current_position;
    2401  }
    2402  }
    2403 
    2405  std::unique_ptr<T[]> elements_;
    2407  NumericalRev<int> num_elements_;
    2409  const int capacity_;
    2411  int* position_;
    2413  const bool delete_position_;
    2414 };
    2415 
    2417 
    2419  public:
    2420  explicit RevPartialSequence(const std::vector<int>& items)
    2421  : elements_(items),
    2422  first_ranked_(0),
    2423  last_ranked_(items.size() - 1),
    2424  size_(items.size()),
    2425  position_(new int[size_]) {
    2426  for (int i = 0; i < size_; ++i) {
    2427  elements_[i] = items[i];
    2428  position_[i] = i;
    2429  }
    2430  }
    2431 
    2432  explicit RevPartialSequence(int size)
    2433  : elements_(size),
    2434  first_ranked_(0),
    2435  last_ranked_(size - 1),
    2436  size_(size),
    2437  position_(new int[size_]) {
    2438  for (int i = 0; i < size_; ++i) {
    2439  elements_[i] = i;
    2440  position_[i] = i;
    2441  }
    2442  }
    2443 
    2445 
    2446  int NumFirstRanked() const { return first_ranked_.Value(); }
    2447 
    2448  int NumLastRanked() const { return size_ - 1 - last_ranked_.Value(); }
    2449 
    2450  int Size() const { return size_; }
    2451 
    2452 #if !defined(SWIG)
    2453  const int& operator[](int index) const {
    2454  DCHECK_GE(index, 0);
    2455  DCHECK_LT(index, size_);
    2456  return elements_[index];
    2457  }
    2458 #endif
    2459 
    2460  void RankFirst(Solver* const solver, int elt) {
    2461  DCHECK_LE(first_ranked_.Value(), last_ranked_.Value());
    2462  SwapTo(elt, first_ranked_.Value());
    2463  first_ranked_.Incr(solver);
    2464  }
    2465 
    2466  void RankLast(Solver* const solver, int elt) {
    2467  DCHECK_LE(first_ranked_.Value(), last_ranked_.Value());
    2468  SwapTo(elt, last_ranked_.Value());
    2469  last_ranked_.Decr(solver);
    2470  }
    2471 
    2472  bool IsRanked(int elt) const {
    2473  const int position = position_[elt];
    2474  return (position < first_ranked_.Value() ||
    2475  position > last_ranked_.Value());
    2476  }
    2477 
    2478  std::string DebugString() const {
    2479  std::string result = "[";
    2480  for (int i = 0; i < first_ranked_.Value(); ++i) {
    2481  absl::StrAppend(&result, elements_[i]);
    2482  if (i != first_ranked_.Value() - 1) {
    2483  result.append("-");
    2484  }
    2485  }
    2486  result.append("|");
    2487  for (int i = first_ranked_.Value(); i <= last_ranked_.Value(); ++i) {
    2488  absl::StrAppend(&result, elements_[i]);
    2489  if (i != last_ranked_.Value()) {
    2490  result.append("-");
    2491  }
    2492  }
    2493  result.append("|");
    2494  for (int i = last_ranked_.Value() + 1; i < size_; ++i) {
    2495  absl::StrAppend(&result, elements_[i]);
    2496  if (i != size_ - 1) {
    2497  result.append("-");
    2498  }
    2499  }
    2500  result.append("]");
    2501  return result;
    2502  }
    2503 
    2504  private:
    2505  void SwapTo(int elt, int next_position) {
    2506  const int current_position = position_[elt];
    2507  if (current_position != next_position) {
    2508  const int next_elt = elements_[next_position];
    2509  elements_[current_position] = next_elt;
    2510  elements_[next_position] = elt;
    2511  position_[elt] = next_position;
    2512  position_[next_elt] = current_position;
    2513  }
    2514  }
    2515 
    2517  std::vector<int> elements_;
    2519  NumericalRev<int> first_ranked_;
    2521  NumericalRev<int> last_ranked_;
    2523  const int size_;
    2525  std::unique_ptr<int[]> position_;
    2526 };
    2527 
    2533  public:
    2535  explicit UnsortedNullableRevBitset(int bit_size);
    2536 
    2538 
    2541  void Init(Solver* const solver, const std::vector<uint64>& mask);
    2542 
    2545  bool RevSubtract(Solver* const solver, const std::vector<uint64>& mask);
    2546 
    2549  bool RevAnd(Solver* const solver, const std::vector<uint64>& mask);
    2550 
    2553  int ActiveWordSize() const { return active_words_.Size(); }
    2554 
    2556  bool Empty() const { return active_words_.Size() == 0; }
    2557 
    2565  bool Intersects(const std::vector<uint64>& mask, int* support_index);
    2566 
    2568  int64 bit_size() const { return bit_size_; }
    2570  int64 word_size() const { return word_size_; }
    2572  const RevIntSet<int>& active_words() const { return active_words_; }
    2573 
    2574  private:
    2575  void CleanUpActives(Solver* const solver);
    2576 
    2577  const int64 bit_size_;
    2578  const int64 word_size_;
    2579  RevArray<uint64> bits_;
    2580  RevIntSet<int> active_words_;
    2581  std::vector<int> to_remove_;
    2582 };
    2583 
    2584 template <class T>
    2585 bool IsArrayConstant(const std::vector<T>& values, const T& value) {
    2586  for (int i = 0; i < values.size(); ++i) {
    2587  if (values[i] != value) {
    2588  return false;
    2589  }
    2590  }
    2591  return true;
    2592 }
    2593 
    2594 template <class T>
    2595 bool IsArrayBoolean(const std::vector<T>& values) {
    2596  for (int i = 0; i < values.size(); ++i) {
    2597  if (values[i] != 0 && values[i] != 1) {
    2598  return false;
    2599  }
    2600  }
    2601  return true;
    2602 }
    2603 
    2604 template <class T>
    2605 bool AreAllOnes(const std::vector<T>& values) {
    2606  return IsArrayConstant(values, T(1));
    2607 }
    2608 
    2609 template <class T>
    2610 bool AreAllNull(const std::vector<T>& values) {
    2611  return IsArrayConstant(values, T(0));
    2612 }
    2613 
    2614 template <class T>
    2615 bool AreAllGreaterOrEqual(const std::vector<T>& values, const T& value) {
    2616  for (const T& current_value : values) {
    2617  if (current_value < value) {
    2618  return false;
    2619  }
    2620  }
    2621  return true;
    2622 }
    2623 
    2624 template <class T>
    2625 bool AreAllLessOrEqual(const std::vector<T>& values, const T& value) {
    2626  for (const T& current_value : values) {
    2627  if (current_value > value) {
    2628  return false;
    2629  }
    2630  }
    2631  return true;
    2632 }
    2633 
    2634 template <class T>
    2635 bool AreAllPositive(const std::vector<T>& values) {
    2636  return AreAllGreaterOrEqual(values, T(0));
    2637 }
    2638 
    2639 template <class T>
    2640 bool AreAllNegative(const std::vector<T>& values) {
    2641  return AreAllLessOrEqual(values, T(0));
    2642 }
    2643 
    2644 template <class T>
    2645 bool AreAllStrictlyPositive(const std::vector<T>& values) {
    2646  return AreAllGreaterOrEqual(values, T(1));
    2647 }
    2648 
    2649 template <class T>
    2650 bool AreAllStrictlyNegative(const std::vector<T>& values) {
    2651  return AreAllLessOrEqual(values, T(-1));
    2652 }
    2653 
    2654 template <class T>
    2655 bool IsIncreasingContiguous(const std::vector<T>& values) {
    2656  for (int i = 0; i < values.size() - 1; ++i) {
    2657  if (values[i + 1] != values[i] + 1) {
    2658  return false;
    2659  }
    2660  }
    2661  return true;
    2662 }
    2663 
    2664 template <class T>
    2665 bool IsIncreasing(const std::vector<T>& values) {
    2666  for (int i = 0; i < values.size() - 1; ++i) {
    2667  if (values[i + 1] < values[i]) {
    2668  return false;
    2669  }
    2670  }
    2671  return true;
    2672 }
    2673 
    2674 template <class T>
    2675 bool IsArrayInRange(const std::vector<IntVar*>& vars, T range_min,
    2676  T range_max) {
    2677  for (int i = 0; i < vars.size(); ++i) {
    2678  if (vars[i]->Min() < range_min || vars[i]->Max() > range_max) {
    2679  return false;
    2680  }
    2681  }
    2682  return true;
    2683 }
    2684 
    2685 inline bool AreAllBound(const std::vector<IntVar*>& vars) {
    2686  for (int i = 0; i < vars.size(); ++i) {
    2687  if (!vars[i]->Bound()) {
    2688  return false;
    2689  }
    2690  }
    2691  return true;
    2692 }
    2693 
    2694 inline bool AreAllBooleans(const std::vector<IntVar*>& vars) {
    2695  return IsArrayInRange(vars, 0, 1);
    2696 }
    2697 
    2700 template <class T>
    2701 bool AreAllBoundOrNull(const std::vector<IntVar*>& vars,
    2702  const std::vector<T>& values) {
    2703  for (int i = 0; i < vars.size(); ++i) {
    2704  if (values[i] != 0 && !vars[i]->Bound()) {
    2705  return false;
    2706  }
    2707  }
    2708  return true;
    2709 }
    2710 
    2712 inline bool AreAllBoundTo(const std::vector<IntVar*>& vars, int64 value) {
    2713  for (int i = 0; i < vars.size(); ++i) {
    2714  if (!vars[i]->Bound() || vars[i]->Min() != value) {
    2715  return false;
    2716  }
    2717  }
    2718  return true;
    2719 }
    2720 
    2721 inline int64 MaxVarArray(const std::vector<IntVar*>& vars) {
    2722  DCHECK(!vars.empty());
    2723  int64 result = kint64min;
    2724  for (int i = 0; i < vars.size(); ++i) {
    2726  result = std::max<int64>(result, vars[i]->Max());
    2727  }
    2728  return result;
    2729 }
    2730 
    2731 inline int64 MinVarArray(const std::vector<IntVar*>& vars) {
    2732  DCHECK(!vars.empty());
    2733  int64 result = kint64max;
    2734  for (int i = 0; i < vars.size(); ++i) {
    2736  result = std::min<int64>(result, vars[i]->Min());
    2737  }
    2738  return result;
    2739 }
    2740 
    2741 inline void FillValues(const std::vector<IntVar*>& vars,
    2742  std::vector<int64>* const values) {
    2743  values->clear();
    2744  values->resize(vars.size());
    2745  for (int i = 0; i < vars.size(); ++i) {
    2746  (*values)[i] = vars[i]->Value();
    2747  }
    2748 }
    2749 
    2750 inline int64 PosIntDivUp(int64 e, int64 v) {
    2751  DCHECK_GT(v, 0);
    2752  if (e >= 0) {
    2753  return e % v == 0 ? e / v : e / v + 1;
    2754  } else {
    2755  return e / v;
    2756  }
    2757 }
    2758 
    2759 inline int64 PosIntDivDown(int64 e, int64 v) {
    2760  DCHECK_GT(v, 0);
    2761  if (e >= 0) {
    2762  return e / v;
    2763  } else {
    2764  return e % v == 0 ? e / v : e / v - 1;
    2765  }
    2766 }
    2767 
    2768 std::vector<int64> ToInt64Vector(const std::vector<int>& input);
    2769 } // namespace operations_research
    2770 
    2771 #endif // OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVERI_H_
    Implements a complete cache for model elements: expressions and constraints.
    - - +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 
    48 
    49 #ifndef OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVERI_H_
    50 #define OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVERI_H_
    51 
    52 #include <algorithm>
    53 #include <cmath>
    54 #include <cstddef>
    55 #include <functional>
    56 #include <memory>
    57 #include <string>
    58 #include <vector>
    59 
    60 #include "absl/container/flat_hash_map.h"
    61 #include "absl/strings/str_cat.h"
    62 #include "absl/strings/str_format.h"
    63 #include "absl/strings/str_join.h"
    64 #include "ortools/base/commandlineflags.h"
    65 #include "ortools/base/hash.h"
    66 #include "ortools/base/integral_types.h"
    67 #include "ortools/base/logging.h"
    68 #include "ortools/base/map_util.h"
    69 #include "ortools/base/sysinfo.h"
    70 #include "ortools/base/timer.h"
    72 #include "ortools/util/bitset.h"
    73 #include "ortools/util/tuple_set.h"
    74 #include "ortools/util/vector_map.h"
    75 
    76 class WallTimer;
    77 
    78 namespace operations_research {
    79 class CPArgumentProto;
    80 class CPConstraintProto;
    81 class CPIntegerExpressionProto;
    82 class CPIntervalVariableProto;
    83 
    109 class BaseIntExpr : public IntExpr {
    110  public:
    111  explicit BaseIntExpr(Solver* const s) : IntExpr(s), var_(nullptr) {}
    112  ~BaseIntExpr() override {}
    113 
    114  IntVar* Var() override;
    115  virtual IntVar* CastToVar();
    116 
    117  private:
    118  IntVar* var_;
    119 };
    120 
    123 enum VarTypes {
    133 };
    134 
    143 #ifndef SWIG
    144 template <class T>
    145 class SimpleRevFIFO {
    146  private:
    147  enum { CHUNK_SIZE = 16 }; // TODO(user): could be an extra template param
    148  struct Chunk {
    149  T data_[CHUNK_SIZE];
    150  const Chunk* const next_;
    151  explicit Chunk(const Chunk* next) : next_(next) {}
    152  };
    153 
    154  public:
    156  class Iterator {
    157  public:
    158  explicit Iterator(const SimpleRevFIFO<T>* l)
    159  : chunk_(l->chunks_), value_(l->Last()) {}
    160  bool ok() const { return (value_ != nullptr); }
    161  T operator*() const { return *value_; }
    162  void operator++() {
    163  ++value_;
    164  if (value_ == chunk_->data_ + CHUNK_SIZE) {
    165  chunk_ = chunk_->next_;
    166  value_ = chunk_ ? chunk_->data_ : nullptr;
    167  }
    168  }
    169 
    170  private:
    171  const Chunk* chunk_;
    172  const T* value_;
    173  };
    174 
    175  SimpleRevFIFO() : chunks_(nullptr), pos_(0) {}
    176 
    177  void Push(Solver* const s, T val) {
    178  if (pos_.Value() == 0) {
    179  Chunk* const chunk = s->UnsafeRevAlloc(new Chunk(chunks_));
    180  s->SaveAndSetValue(reinterpret_cast<void**>(&chunks_),
    181  reinterpret_cast<void*>(chunk));
    182  pos_.SetValue(s, CHUNK_SIZE - 1);
    183  } else {
    184  pos_.Decr(s);
    185  }
    186  chunks_->data_[pos_.Value()] = val;
    187  }
    188 
    190  void PushIfNotTop(Solver* const s, T val) {
    191  if (chunks_ == nullptr || LastValue() != val) {
    192  Push(s, val);
    193  }
    194  }
    195 
    197  const T* Last() const {
    198  return chunks_ ? &chunks_->data_[pos_.Value()] : nullptr;
    199  }
    200 
    201  T* MutableLast() { return chunks_ ? &chunks_->data_[pos_.Value()] : nullptr; }
    202 
    204  const T& LastValue() const {
    205  DCHECK(chunks_);
    206  return chunks_->data_[pos_.Value()];
    207  }
    208 
    210  void SetLastValue(const T& v) {
    211  DCHECK(Last());
    212  chunks_->data_[pos_.Value()] = v;
    213  }
    214 
    215  private:
    216  Chunk* chunks_;
    217  NumericalRev<int> pos_;
    218 };
    219 
    221 // TODO(user): use murmurhash.
    222 inline uint64 Hash1(uint64 value) {
    223  value = (~value) + (value << 21);
    224  value ^= value >> 24;
    225  value += (value << 3) + (value << 8);
    226  value ^= value >> 14;
    227  value += (value << 2) + (value << 4);
    228  value ^= value >> 28;
    229  value += (value << 31);
    230  return value;
    231 }
    232 
    233 inline uint64 Hash1(uint32 value) {
    234  uint64 a = value;
    235  a = (a + 0x7ed55d16) + (a << 12);
    236  a = (a ^ 0xc761c23c) ^ (a >> 19);
    237  a = (a + 0x165667b1) + (a << 5);
    238  a = (a + 0xd3a2646c) ^ (a << 9);
    239  a = (a + 0xfd7046c5) + (a << 3);
    240  a = (a ^ 0xb55a4f09) ^ (a >> 16);
    241  return a;
    242 }
    243 
    244 inline uint64 Hash1(int64 value) { return Hash1(static_cast<uint64>(value)); }
    245 
    246 inline uint64 Hash1(int value) { return Hash1(static_cast<uint32>(value)); }
    247 
    248 inline uint64 Hash1(void* const ptr) {
    249 #if defined(ARCH_K8) || defined(__powerpc64__) || defined(__aarch64__)
    250  return Hash1(reinterpret_cast<uint64>(ptr));
    251 #else
    252  return Hash1(reinterpret_cast<uint32>(ptr));
    253 #endif
    254 }
    255 
    256 template <class T>
    257 uint64 Hash1(const std::vector<T*>& ptrs) {
    258  if (ptrs.empty()) {
    259  return 0;
    260  } else if (ptrs.size() == 1) {
    261  return Hash1(ptrs[0]);
    262  } else {
    263  uint64 hash = Hash1(ptrs[0]);
    264  for (int i = 1; i < ptrs.size(); ++i) {
    265  hash = hash * i + Hash1(ptrs[i]);
    266  }
    267  return hash;
    268  }
    269 }
    270 
    271 inline uint64 Hash1(const std::vector<int64>& ptrs) {
    272  if (ptrs.empty()) {
    273  return 0;
    274  } else if (ptrs.size() == 1) {
    275  return Hash1(ptrs[0]);
    276  } else {
    277  uint64 hash = Hash1(ptrs[0]);
    278  for (int i = 1; i < ptrs.size(); ++i) {
    279  hash = hash * i + Hash1(ptrs[i]);
    280  }
    281  return hash;
    282  }
    283 }
    284 
    287 template <class K, class V>
    289  public:
    290  RevImmutableMultiMap(Solver* const solver, int initial_size)
    291  : solver_(solver),
    292  array_(solver->UnsafeRevAllocArray(new Cell*[initial_size])),
    293  size_(initial_size),
    294  num_items_(0) {
    295  memset(array_, 0, sizeof(*array_) * size_.Value());
    296  }
    297 
    299 
    300  int num_items() const { return num_items_.Value(); }
    301 
    303  bool ContainsKey(const K& key) const {
    304  uint64 code = Hash1(key) % size_.Value();
    305  Cell* tmp = array_[code];
    306  while (tmp) {
    307  if (tmp->key() == key) {
    308  return true;
    309  }
    310  tmp = tmp->next();
    311  }
    312  return false;
    313  }
    314 
    318  const V& FindWithDefault(const K& key, const V& default_value) const {
    319  uint64 code = Hash1(key) % size_.Value();
    320  Cell* tmp = array_[code];
    321  while (tmp) {
    322  if (tmp->key() == key) {
    323  return tmp->value();
    324  }
    325  tmp = tmp->next();
    326  }
    327  return default_value;
    328  }
    329 
    331  void Insert(const K& key, const V& value) {
    332  const int position = Hash1(key) % size_.Value();
    333  Cell* const cell =
    334  solver_->UnsafeRevAlloc(new Cell(key, value, array_[position]));
    335  solver_->SaveAndSetValue(reinterpret_cast<void**>(&array_[position]),
    336  reinterpret_cast<void*>(cell));
    337  num_items_.Incr(solver_);
    338  if (num_items_.Value() > 2 * size_.Value()) {
    339  Double();
    340  }
    341  }
    342 
    343  private:
    344  class Cell {
    345  public:
    346  Cell(const K& key, const V& value, Cell* const next)
    347  : key_(key), value_(value), next_(next) {}
    348 
    349  void SetRevNext(Solver* const solver, Cell* const next) {
    350  solver->SaveAndSetValue(reinterpret_cast<void**>(&next_),
    351  reinterpret_cast<void*>(next));
    352  }
    353 
    354  Cell* next() const { return next_; }
    355 
    356  const K& key() const { return key_; }
    357 
    358  const V& value() const { return value_; }
    359 
    360  private:
    361  const K key_;
    362  const V value_;
    363  Cell* next_;
    364  };
    365 
    366  void Double() {
    367  Cell** const old_cell_array = array_;
    368  const int old_size = size_.Value();
    369  size_.SetValue(solver_, size_.Value() * 2);
    370  solver_->SaveAndSetValue(
    371  reinterpret_cast<void**>(&array_),
    372  reinterpret_cast<void*>(
    373  solver_->UnsafeRevAllocArray(new Cell*[size_.Value()])));
    374  memset(array_, 0, size_.Value() * sizeof(*array_));
    375  for (int i = 0; i < old_size; ++i) {
    376  Cell* tmp = old_cell_array[i];
    377  while (tmp != nullptr) {
    378  Cell* const to_reinsert = tmp;
    379  tmp = tmp->next();
    380  const uint64 new_position = Hash1(to_reinsert->key()) % size_.Value();
    381  to_reinsert->SetRevNext(solver_, array_[new_position]);
    382  solver_->SaveAndSetValue(
    383  reinterpret_cast<void**>(&array_[new_position]),
    384  reinterpret_cast<void*>(to_reinsert));
    385  }
    386  }
    387  }
    388 
    389  Solver* const solver_;
    390  Cell** array_;
    391  NumericalRev<int> size_;
    392  NumericalRev<int> num_items_;
    393 };
    394 
    396 class RevSwitch {
    397  public:
    398  RevSwitch() : value_(false) {}
    399 
    400  bool Switched() const { return value_; }
    401 
    402  void Switch(Solver* const solver) { solver->SaveAndSetValue(&value_, true); }
    403 
    404  private:
    405  bool value_;
    406 };
    407 
    411  public:
    412  explicit SmallRevBitSet(int64 size);
    414  void SetToOne(Solver* const solver, int64 pos);
    416  void SetToZero(Solver* const solver, int64 pos);
    418  int64 Cardinality() const;
    420  bool IsCardinalityZero() const { return bits_.Value() == GG_ULONGLONG(0); }
    422  bool IsCardinalityOne() const {
    423  return (bits_.Value() != 0) && !(bits_.Value() & (bits_.Value() - 1));
    424  }
    427  int64 GetFirstOne() const;
    428 
    429  private:
    430  Rev<uint64> bits_;
    431 };
    432 
    435 class RevBitSet {
    436  public:
    437  explicit RevBitSet(int64 size);
    438  ~RevBitSet();
    439 
    441  void SetToOne(Solver* const solver, int64 index);
    443  void SetToZero(Solver* const solver, int64 index);
    445  bool IsSet(int64 index) const;
    447  int64 Cardinality() const;
    449  bool IsCardinalityZero() const;
    451  bool IsCardinalityOne() const;
    454  int64 GetFirstBit(int start) const;
    456  void ClearAll(Solver* const solver);
    457 
    458  friend class RevBitMatrix;
    459 
    460  private:
    462  void Save(Solver* const solver, int offset);
    463  const int64 size_;
    464  const int64 length_;
    465  uint64* bits_;
    466  uint64* stamps_;
    467 };
    468 
    470 class RevBitMatrix : private RevBitSet {
    471  public:
    472  RevBitMatrix(int64 rows, int64 columns);
    473  ~RevBitMatrix();
    474 
    476  void SetToOne(Solver* const solver, int64 row, int64 column);
    478  void SetToZero(Solver* const solver, int64 row, int64 column);
    480  bool IsSet(int64 row, int64 column) const {
    481  DCHECK_GE(row, 0);
    482  DCHECK_LT(row, rows_);
    483  DCHECK_GE(column, 0);
    484  DCHECK_LT(column, columns_);
    485  return RevBitSet::IsSet(row * columns_ + column);
    486  }
    488  int64 Cardinality(int row) const;
    490  bool IsCardinalityZero(int row) const;
    492  bool IsCardinalityOne(int row) const;
    495  int64 GetFirstBit(int row, int start) const;
    497  void ClearAll(Solver* const solver);
    498 
    499  private:
    500  const int64 rows_;
    501  const int64 columns_;
    502 };
    503 
    509 
    511 template <class T>
    512 class CallMethod0 : public Demon {
    513  public:
    514  CallMethod0(T* const ct, void (T::*method)(), const std::string& name)
    515  : constraint_(ct), method_(method), name_(name) {}
    516 
    517  ~CallMethod0() override {}
    518 
    519  void Run(Solver* const s) override { (constraint_->*method_)(); }
    520 
    521  std::string DebugString() const override {
    522  return "CallMethod_" + name_ + "(" + constraint_->DebugString() + ")";
    523  }
    524 
    525  private:
    526  T* const constraint_;
    527  void (T::*const method_)();
    528  const std::string name_;
    529 };
    530 
    531 template <class T>
    532 Demon* MakeConstraintDemon0(Solver* const s, T* const ct, void (T::*method)(),
    533  const std::string& name) {
    534  return s->RevAlloc(new CallMethod0<T>(ct, method, name));
    535 }
    536 
    537 template <class P>
    538 std::string ParameterDebugString(P param) {
    539  return absl::StrCat(param);
    540 }
    541 
    543 template <class P>
    544 std::string ParameterDebugString(P* param) {
    545  return param->DebugString();
    546 }
    547 
    549 template <class T, class P>
    550 class CallMethod1 : public Demon {
    551  public:
    552  CallMethod1(T* const ct, void (T::*method)(P), const std::string& name,
    553  P param1)
    554  : constraint_(ct), method_(method), name_(name), param1_(param1) {}
    555 
    556  ~CallMethod1() override {}
    557 
    558  void Run(Solver* const s) override { (constraint_->*method_)(param1_); }
    559 
    560  std::string DebugString() const override {
    561  return absl::StrCat("CallMethod_", name_, "(", constraint_->DebugString(),
    562  ", ", ParameterDebugString(param1_), ")");
    563  }
    564 
    565  private:
    566  T* const constraint_;
    567  void (T::*const method_)(P);
    568  const std::string name_;
    569  P param1_;
    570 };
    571 
    572 template <class T, class P>
    573 Demon* MakeConstraintDemon1(Solver* const s, T* const ct, void (T::*method)(P),
    574  const std::string& name, P param1) {
    575  return s->RevAlloc(new CallMethod1<T, P>(ct, method, name, param1));
    576 }
    577 
    579 template <class T, class P, class Q>
    580 class CallMethod2 : public Demon {
    581  public:
    582  CallMethod2(T* const ct, void (T::*method)(P, Q), const std::string& name,
    583  P param1, Q param2)
    584  : constraint_(ct),
    585  method_(method),
    586  name_(name),
    587  param1_(param1),
    588  param2_(param2) {}
    589 
    590  ~CallMethod2() override {}
    591 
    592  void Run(Solver* const s) override {
    593  (constraint_->*method_)(param1_, param2_);
    594  }
    595 
    596  std::string DebugString() const override {
    597  return absl::StrCat(absl::StrCat("CallMethod_", name_),
    598  absl::StrCat("(", constraint_->DebugString()),
    599  absl::StrCat(", ", ParameterDebugString(param1_)),
    600  absl::StrCat(", ", ParameterDebugString(param2_), ")"));
    601  }
    602 
    603  private:
    604  T* const constraint_;
    605  void (T::*const method_)(P, Q);
    606  const std::string name_;
    607  P param1_;
    608  Q param2_;
    609 };
    610 
    611 template <class T, class P, class Q>
    612 Demon* MakeConstraintDemon2(Solver* const s, T* const ct,
    613  void (T::*method)(P, Q), const std::string& name,
    614  P param1, Q param2) {
    615  return s->RevAlloc(
    616  new CallMethod2<T, P, Q>(ct, method, name, param1, param2));
    617 }
    619 template <class T, class P, class Q, class R>
    620 class CallMethod3 : public Demon {
    621  public:
    622  CallMethod3(T* const ct, void (T::*method)(P, Q, R), const std::string& name,
    623  P param1, Q param2, R param3)
    624  : constraint_(ct),
    625  method_(method),
    626  name_(name),
    627  param1_(param1),
    628  param2_(param2),
    629  param3_(param3) {}
    630 
    631  ~CallMethod3() override {}
    632 
    633  void Run(Solver* const s) override {
    634  (constraint_->*method_)(param1_, param2_, param3_);
    635  }
    636 
    637  std::string DebugString() const override {
    638  return absl::StrCat(absl::StrCat("CallMethod_", name_),
    639  absl::StrCat("(", constraint_->DebugString()),
    640  absl::StrCat(", ", ParameterDebugString(param1_)),
    641  absl::StrCat(", ", ParameterDebugString(param2_)),
    642  absl::StrCat(", ", ParameterDebugString(param3_), ")"));
    643  }
    644 
    645  private:
    646  T* const constraint_;
    647  void (T::*const method_)(P, Q, R);
    648  const std::string name_;
    649  P param1_;
    650  Q param2_;
    651  R param3_;
    652 };
    653 
    654 template <class T, class P, class Q, class R>
    655 Demon* MakeConstraintDemon3(Solver* const s, T* const ct,
    656  void (T::*method)(P, Q, R), const std::string& name,
    657  P param1, Q param2, R param3) {
    658  return s->RevAlloc(
    659  new CallMethod3<T, P, Q, R>(ct, method, name, param1, param2, param3));
    660 }
    662 
    667 
    669 template <class T>
    670 class DelayedCallMethod0 : public Demon {
    671  public:
    672  DelayedCallMethod0(T* const ct, void (T::*method)(), const std::string& name)
    673  : constraint_(ct), method_(method), name_(name) {}
    674 
    675  ~DelayedCallMethod0() override {}
    676 
    677  void Run(Solver* const s) override { (constraint_->*method_)(); }
    678 
    679  Solver::DemonPriority priority() const override {
    681  }
    682 
    683  std::string DebugString() const override {
    684  return "DelayedCallMethod_" + name_ + "(" + constraint_->DebugString() +
    685  ")";
    686  }
    687 
    688  private:
    689  T* const constraint_;
    690  void (T::*const method_)();
    691  const std::string name_;
    692 };
    693 
    694 template <class T>
    695 Demon* MakeDelayedConstraintDemon0(Solver* const s, T* const ct,
    696  void (T::*method)(),
    697  const std::string& name) {
    698  return s->RevAlloc(new DelayedCallMethod0<T>(ct, method, name));
    699 }
    700 
    702 template <class T, class P>
    703 class DelayedCallMethod1 : public Demon {
    704  public:
    705  DelayedCallMethod1(T* const ct, void (T::*method)(P), const std::string& name,
    706  P param1)
    707  : constraint_(ct), method_(method), name_(name), param1_(param1) {}
    708 
    709  ~DelayedCallMethod1() override {}
    710 
    711  void Run(Solver* const s) override { (constraint_->*method_)(param1_); }
    712 
    713  Solver::DemonPriority priority() const override {
    715  }
    716 
    717  std::string DebugString() const override {
    718  return absl::StrCat("DelayedCallMethod_", name_, "(",
    719  constraint_->DebugString(), ", ",
    720  ParameterDebugString(param1_), ")");
    721  }
    722 
    723  private:
    724  T* const constraint_;
    725  void (T::*const method_)(P);
    726  const std::string name_;
    727  P param1_;
    728 };
    729 
    730 template <class T, class P>
    731 Demon* MakeDelayedConstraintDemon1(Solver* const s, T* const ct,
    732  void (T::*method)(P),
    733  const std::string& name, P param1) {
    734  return s->RevAlloc(new DelayedCallMethod1<T, P>(ct, method, name, param1));
    735 }
    736 
    738 template <class T, class P, class Q>
    739 class DelayedCallMethod2 : public Demon {
    740  public:
    741  DelayedCallMethod2(T* const ct, void (T::*method)(P, Q),
    742  const std::string& name, P param1, Q param2)
    743  : constraint_(ct),
    744  method_(method),
    745  name_(name),
    746  param1_(param1),
    747  param2_(param2) {}
    748 
    749  ~DelayedCallMethod2() override {}
    750 
    751  void Run(Solver* const s) override {
    752  (constraint_->*method_)(param1_, param2_);
    753  }
    754 
    755  Solver::DemonPriority priority() const override {
    757  }
    758 
    759  std::string DebugString() const override {
    760  return absl::StrCat(absl::StrCat("DelayedCallMethod_", name_),
    761  absl::StrCat("(", constraint_->DebugString()),
    762  absl::StrCat(", ", ParameterDebugString(param1_)),
    763  absl::StrCat(", ", ParameterDebugString(param2_), ")"));
    764  }
    765 
    766  private:
    767  T* const constraint_;
    768  void (T::*const method_)(P, Q);
    769  const std::string name_;
    770  P param1_;
    771  Q param2_;
    772 };
    773 
    774 template <class T, class P, class Q>
    775 Demon* MakeDelayedConstraintDemon2(Solver* const s, T* const ct,
    776  void (T::*method)(P, Q),
    777  const std::string& name, P param1,
    778  Q param2) {
    779  return s->RevAlloc(
    780  new DelayedCallMethod2<T, P, Q>(ct, method, name, param1, param2));
    781 }
    783 
    784 #endif // !defined(SWIG)
    785 
    803 // TODO(user): rename Start to Synchronize ?
    804 // TODO(user): decouple the iterating from the defining of a neighbor.
    806  public:
    808  ~LocalSearchOperator() override {}
    809  virtual bool MakeNextNeighbor(Assignment* delta, Assignment* deltadelta) = 0;
    810  virtual void Start(const Assignment* assignment) = 0;
    811  virtual void Reset() {}
    812 #ifndef SWIG
    813  virtual const LocalSearchOperator* Self() const { return this; }
    814 #endif // SWIG
    815  virtual bool HasFragments() const { return false; }
    816  virtual bool HoldsDelta() const { return false; }
    817 };
    818 
    820 template <class V, class Val, class Handler>
    822  public:
    824  VarLocalSearchOperator(std::vector<V*> vars, Handler var_handler)
    825  : activated_(),
    826  was_activated_(),
    827  cleared_(true),
    828  var_handler_(var_handler) {}
    830  bool HoldsDelta() const override { return true; }
    833  void Start(const Assignment* assignment) override {
    834  const int size = Size();
    835  CHECK_LE(size, assignment->Size())
    836  << "Assignment contains fewer variables than operator";
    837  for (int i = 0; i < size; ++i) {
    838  activated_.Set(i, var_handler_.ValueFromAssignent(*assignment, vars_[i],
    839  i, &values_[i]));
    840  }
    843  was_activated_.SetContentFromBitsetOfSameSize(activated_);
    844  OnStart();
    845  }
    846  virtual bool IsIncremental() const { return false; }
    847  int Size() const { return vars_.size(); }
    850  const Val& Value(int64 index) const {
    851  DCHECK_LT(index, vars_.size());
    852  return values_[index];
    853  }
    855  V* Var(int64 index) const { return vars_[index]; }
    856  virtual bool SkipUnchanged(int index) const { return false; }
    857  const Val& OldValue(int64 index) const { return old_values_[index]; }
    858  void SetValue(int64 index, const Val& value) {
    859  values_[index] = value;
    860  MarkChange(index);
    861  }
    862  bool Activated(int64 index) const { return activated_[index]; }
    863  void Activate(int64 index) {
    864  activated_.Set(index);
    865  MarkChange(index);
    866  }
    867  void Deactivate(int64 index) {
    868  activated_.Clear(index);
    869  MarkChange(index);
    870  }
    871  bool ApplyChanges(Assignment* delta, Assignment* deltadelta) const {
    872  if (IsIncremental() && !cleared_) {
    873  for (const int64 index : delta_changes_.PositionsSetAtLeastOnce()) {
    874  V* var = Var(index);
    875  const Val& value = Value(index);
    876  const bool activated = activated_[index];
    877  var_handler_.AddToAssignment(var, value, activated, nullptr, index,
    878  deltadelta);
    879  var_handler_.AddToAssignment(var, value, activated,
    880  &assignment_indices_, index, delta);
    881  }
    882  } else {
    883  delta->Clear();
    884  for (const int64 index : changes_.PositionsSetAtLeastOnce()) {
    885  const Val& value = Value(index);
    886  const bool activated = activated_[index];
    887  if (!activated || value != OldValue(index) || !SkipUnchanged(index)) {
    888  var_handler_.AddToAssignment(Var(index), value, activated_[index],
    889  &assignment_indices_, index, delta);
    890  }
    891  }
    892  }
    893  return true;
    894  }
    895  void RevertChanges(bool incremental) {
    896  cleared_ = false;
    897  delta_changes_.SparseClearAll();
    898  if (incremental && IsIncremental()) return;
    899  cleared_ = true;
    900  for (const int64 index : changes_.PositionsSetAtLeastOnce()) {
    901  values_[index] = old_values_[index];
    902  var_handler_.OnRevertChanges(index);
    903  activated_.CopyBucket(was_activated_, index);
    904  assignment_indices_[index] = -1;
    905  }
    906  changes_.SparseClearAll();
    907  }
    908  void AddVars(const std::vector<V*>& vars) {
    909  if (!vars.empty()) {
    910  vars_.insert(vars_.end(), vars.begin(), vars.end());
    911  const int64 size = Size();
    912  values_.resize(size);
    913  old_values_.resize(size);
    914  prev_values_.resize(size);
    915  assignment_indices_.resize(size, -1);
    916  activated_.Resize(size);
    917  was_activated_.Resize(size);
    918  changes_.ClearAndResize(size);
    919  delta_changes_.ClearAndResize(size);
    920  var_handler_.OnAddVars();
    921  }
    922  }
    923 
    927  virtual void OnStart() {}
    928 
    931  protected:
    932  void MarkChange(int64 index) {
    933  delta_changes_.Set(index);
    934  changes_.Set(index);
    935  }
    936 
    937  std::vector<V*> vars_;
    938  std::vector<Val> values_;
    939  std::vector<Val> old_values_;
    940  std::vector<Val> prev_values_;
    941  mutable std::vector<int> assignment_indices_;
    942  Bitset64<> activated_;
    943  Bitset64<> was_activated_;
    944  SparseBitset<> changes_;
    945  SparseBitset<> delta_changes_;
    946  bool cleared_;
    947  Handler var_handler_;
    948 };
    949 
    952  public:
    953  void AddToAssignment(IntVar* var, int64 value, bool active,
    954  std::vector<int>* assignment_indices, int64 index,
    955  Assignment* assignment) const {
    956  Assignment::IntContainer* const container =
    957  assignment->MutableIntVarContainer();
    958  IntVarElement* element = nullptr;
    959  if (assignment_indices != nullptr) {
    960  if ((*assignment_indices)[index] == -1) {
    961  (*assignment_indices)[index] = container->Size();
    962  element = assignment->FastAdd(var);
    963  } else {
    964  element = container->MutableElement((*assignment_indices)[index]);
    965  }
    966  } else {
    967  element = assignment->FastAdd(var);
    968  }
    969  if (active) {
    970  element->SetValue(value);
    971  element->Activate();
    972  } else {
    973  element->Deactivate();
    974  }
    975  }
    976  bool ValueFromAssignent(const Assignment& assignment, IntVar* var,
    977  int64 index, int64* value) {
    978  const Assignment::IntContainer& container = assignment.IntVarContainer();
    979  const IntVarElement* element = &(container.Element(index));
    980  if (element->Var() != var) {
    981  CHECK(container.Contains(var))
    982  << "Assignment does not contain operator variable " << var;
    983  element = &(container.Element(var));
    984  }
    985  *value = element->Value();
    986  return element->Activated();
    987  }
    988  void OnRevertChanges(int64 index) {}
    989  void OnAddVars() {}
    990 };
    991 
    997 
    998 #ifdef SWIG
    999 // TODO(user): find a way to move this code back to the .i file, where it
    1006 #if defined(SWIGPYTHON)
    1007 %unignore VarLocalSearchOperator<IntVar, int64,
    1008  IntVarLocalSearchHandler>::Size;
    1009 %unignore VarLocalSearchOperator<IntVar, int64,
    1010  IntVarLocalSearchHandler>::Value;
    1011 %unignore VarLocalSearchOperator<IntVar, int64,
    1012  IntVarLocalSearchHandler>::OldValue;
    1013 %unignore VarLocalSearchOperator<IntVar, int64,
    1014  IntVarLocalSearchHandler>::SetValue;
    1015 %feature("director") VarLocalSearchOperator<IntVar, int64,
    1016  IntVarLocalSearchHandler>::IsIncremental;
    1017 %feature("director") VarLocalSearchOperator<IntVar, int64,
    1018  IntVarLocalSearchHandler>::OnStart;
    1019 %unignore VarLocalSearchOperator<IntVar, int64,
    1020  IntVarLocalSearchHandler>::IsIncremental;
    1021 %unignore VarLocalSearchOperator<IntVar, int64,
    1022  IntVarLocalSearchHandler>::OnStart;
    1023 #endif // SWIGPYTHON
    1024 
    1025 // clang-format off
    1026 %rename(IntVarLocalSearchOperatorTemplate)
    1027  VarLocalSearchOperator<IntVar, int64, IntVarLocalSearchHandler>;
    1028 %template(IntVarLocalSearchOperatorTemplate)
    1029  VarLocalSearchOperator<IntVar, int64, IntVarLocalSearchHandler>;
    1030 // clang-format on
    1031 #endif // SWIG
    1032 
    1035  public:
    1037  explicit IntVarLocalSearchOperator(const std::vector<IntVar*>& vars)
    1039  vars, IntVarLocalSearchHandler()) {
    1040  AddVars(vars);
    1041  }
    1049  bool MakeNextNeighbor(Assignment* delta, Assignment* deltadelta) override;
    1050 
    1051  protected:
    1054  // TODO(user): make it pure virtual, implies porting all apps overriding
    1056  virtual bool MakeOneNeighbor();
    1057 };
    1058 
    1060 class SequenceVarLocalSearchOperator;
    1061 
    1063  public:
    1064  SequenceVarLocalSearchHandler() : op_(nullptr) {}
    1066  : op_(other.op_) {}
    1068  : op_(op) {}
    1069  void AddToAssignment(SequenceVar* var, const std::vector<int>& value,
    1070  bool active, std::vector<int>* assignment_indices,
    1071  int64 index, Assignment* assignment) const;
    1072  bool ValueFromAssignent(const Assignment& assignment, SequenceVar* var,
    1073  int64 index, std::vector<int>* value);
    1074  void OnRevertChanges(int64 index);
    1075  void OnAddVars();
    1076 
    1077  private:
    1078  SequenceVarLocalSearchOperator* const op_;
    1079 };
    1080 
    1081 #ifdef SWIG
    1082 // TODO(user): find a way to move this code back to the .i file, where it
    1087 // clang-format off
    1088 %rename(SequenceVarLocalSearchOperatorTemplate) VarLocalSearchOperator<
    1089  SequenceVar, std::vector<int>, SequenceVarLocalSearchHandler>;
    1090 %template(SequenceVarLocalSearchOperatorTemplate) VarLocalSearchOperator<
    1091  SequenceVar, std::vector<int>, SequenceVarLocalSearchHandler>;
    1092 // clang-format on
    1093 #endif
    1094 
    1095 typedef VarLocalSearchOperator<SequenceVar, std::vector<int>,
    1096  SequenceVarLocalSearchHandler>
    1098 
    1101  public:
    1103  explicit SequenceVarLocalSearchOperator(const std::vector<SequenceVar*>& vars)
    1105  vars, SequenceVarLocalSearchHandler(this)) {
    1106  AddVars(vars);
    1107  }
    1111  const std::vector<int>& Sequence(int64 index) const { return Value(index); }
    1112  const std::vector<int>& OldSequence(int64 index) const {
    1113  return OldValue(index);
    1114  }
    1115  void SetForwardSequence(int64 index, const std::vector<int>& value) {
    1116  SetValue(index, value);
    1117  }
    1118  void SetBackwardSequence(int64 index, const std::vector<int>& value) {
    1119  backward_values_[index] = value;
    1120  MarkChange(index);
    1121  }
    1122 
    1123  protected:
    1125 
    1126  std::vector<std::vector<int> > backward_values_;
    1127 };
    1128 
    1130  SequenceVar* var, const std::vector<int>& value, bool active,
    1131  std::vector<int>* assignment_indices, int64 index,
    1132  Assignment* assignment) const {
    1133  Assignment::SequenceContainer* const container =
    1134  assignment->MutableSequenceVarContainer();
    1135  SequenceVarElement* element = nullptr;
    1136  if (assignment_indices != nullptr) {
    1137  if ((*assignment_indices)[index] == -1) {
    1138  (*assignment_indices)[index] = container->Size();
    1139  element = assignment->FastAdd(var);
    1140  } else {
    1141  element = container->MutableElement((*assignment_indices)[index]);
    1142  }
    1143  } else {
    1144  element = assignment->FastAdd(var);
    1145  }
    1146  if (active) {
    1147  element->SetForwardSequence(value);
    1148  element->SetBackwardSequence(op_->backward_values_[index]);
    1149  element->Activate();
    1150  } else {
    1151  element->Deactivate();
    1152  }
    1153 }
    1154 
    1156  const Assignment& assignment, SequenceVar* var, int64 index,
    1157  std::vector<int>* value) {
    1158  const Assignment::SequenceContainer& container =
    1159  assignment.SequenceVarContainer();
    1160  const SequenceVarElement* element = &(container.Element(index));
    1161  if (element->Var() != var) {
    1162  CHECK(container.Contains(var))
    1163  << "Assignment does not contain operator variable " << var;
    1164  element = &(container.Element(var));
    1165  }
    1166  const std::vector<int>& element_value = element->ForwardSequence();
    1167  CHECK_GE(var->size(), element_value.size());
    1168  op_->backward_values_[index].clear();
    1169  *value = element_value;
    1170  return element->Activated();
    1171 }
    1172 
    1174  op_->backward_values_[index].clear();
    1175 }
    1176 
    1178  op_->backward_values_.resize(op_->Size());
    1179 }
    1180 
    1209  public:
    1210  explicit BaseLns(const std::vector<IntVar*>& vars);
    1211  ~BaseLns() override;
    1212  virtual void InitFragments();
    1213  virtual bool NextFragment() = 0;
    1214  void AppendToFragment(int index);
    1215  int FragmentSize() const;
    1216  bool HasFragments() const override { return true; }
    1217 
    1218  protected:
    1220  bool MakeOneNeighbor() override;
    1221 
    1222  private:
    1224  void OnStart() override;
    1225  std::vector<int> fragment_;
    1226 };
    1227 
    1233  public:
    1234  explicit ChangeValue(const std::vector<IntVar*>& vars);
    1235  ~ChangeValue() override;
    1236  virtual int64 ModifyValue(int64 index, int64 value) = 0;
    1237 
    1238  protected:
    1240  bool MakeOneNeighbor() override;
    1241 
    1242  private:
    1243  void OnStart() override;
    1244 
    1245  int index_;
    1246 };
    1247 
    1262  public:
    1276  PathOperator(const std::vector<IntVar*>& next_vars,
    1277  const std::vector<IntVar*>& path_vars, int number_of_base_nodes,
    1278  bool skip_locally_optimal_paths,
    1279  std::function<int(int64)> start_empty_path_class);
    1280  ~PathOperator() override {}
    1281  virtual bool MakeNeighbor() = 0;
    1282  void Reset() override;
    1283 
    1284  // TODO(user): Make the following methods protected.
    1285  bool SkipUnchanged(int index) const override;
    1286 
    1289  int64 Next(int64 node_index) const {
    1290  DCHECK(!IsPathEnd(node_index));
    1291  return Value(node_index);
    1292  }
    1293 
    1296  int64 Path(int64 node_index) const {
    1297  return ignore_path_vars_ ? 0LL : Value(node_index + number_of_nexts_);
    1298  }
    1299 
    1301  int number_of_nexts() const { return number_of_nexts_; }
    1302 
    1303  protected:
    1305  bool MakeOneNeighbor() override;
    1306 
    1308  int64 BaseNode(int i) const { return base_nodes_[i]; }
    1311  int64 StartNode(int i) const { return path_starts_[base_paths_[i]]; }
    1313  const std::vector<int64>& path_starts() const { return path_starts_; }
    1315  int PathClass(int i) const {
    1316  return start_empty_path_class_ != nullptr
    1317  ? start_empty_path_class_(StartNode(i))
    1318  : StartNode(i);
    1319  }
    1320 
    1327  // TODO(user): remove this when automatic detection of such cases in done.
    1328  virtual bool RestartAtPathStartOnSynchronize() { return false; }
    1332  // TODO(user): ideally this should be OnSamePath(int64 node1, int64 node2);
    1334  virtual bool OnSamePathAsPreviousBase(int64 base_index) { return false; }
    1340  virtual int64 GetBaseNodeRestartPosition(int base_index) {
    1341  return StartNode(base_index);
    1342  }
    1345  virtual void SetNextBaseToIncrement(int64 base_index) {
    1346  next_base_to_increment_ = base_index;
    1347  }
    1348 
    1349  int64 OldNext(int64 node_index) const {
    1350  DCHECK(!IsPathEnd(node_index));
    1351  return OldValue(node_index);
    1352  }
    1353 
    1354  int64 OldPath(int64 node_index) const {
    1355  return ignore_path_vars_ ? 0LL : OldValue(node_index + number_of_nexts_);
    1356  }
    1357 
    1360  bool MoveChain(int64 before_chain, int64 chain_end, int64 destination);
    1361 
    1364  bool ReverseChain(int64 before_chain, int64 after_chain, int64* chain_last);
    1365 
    1366  bool MakeActive(int64 node, int64 destination);
    1367  bool MakeChainInactive(int64 before_chain, int64 chain_end);
    1368 
    1370  void SetNext(int64 from, int64 to, int64 path) {
    1371  DCHECK_LT(from, number_of_nexts_);
    1372  SetValue(from, to);
    1373  if (!ignore_path_vars_) {
    1374  DCHECK_LT(from + number_of_nexts_, Size());
    1375  SetValue(from + number_of_nexts_, path);
    1376  }
    1377  }
    1378 
    1381  bool IsPathEnd(int64 i) const { return i >= number_of_nexts_; }
    1382 
    1384  bool IsInactive(int64 i) const { return !IsPathEnd(i) && inactives_[i]; }
    1385 
    1388  virtual bool InitPosition() const { return false; }
    1392  void ResetPosition() { just_started_ = true; }
    1393 
    1394  const int number_of_nexts_;
    1395  const bool ignore_path_vars_;
    1397  int num_paths_ = 0;
    1398  std::vector<int64> start_to_path_;
    1399 
    1400  private:
    1401  void OnStart() override;
    1405  virtual void OnNodeInitialization() {}
    1407  bool OnSamePath(int64 node1, int64 node2) const;
    1408 
    1409  bool CheckEnds() const {
    1410  const int base_node_size = base_nodes_.size();
    1411  for (int i = base_node_size - 1; i >= 0; --i) {
    1412  if (base_nodes_[i] != end_nodes_[i]) {
    1413  return true;
    1414  }
    1415  }
    1416  return false;
    1417  }
    1418  bool IncrementPosition();
    1419  void InitializePathStarts();
    1420  void InitializeInactives();
    1421  void InitializeBaseNodes();
    1422  bool CheckChainValidity(int64 before_chain, int64 chain_end,
    1423  int64 exclude) const;
    1424  void Synchronize();
    1425 
    1426  std::vector<int> base_nodes_;
    1427  std::vector<int> end_nodes_;
    1428  std::vector<int> base_paths_;
    1429  std::vector<int64> path_starts_;
    1430  std::vector<bool> inactives_;
    1431  bool just_started_;
    1432  bool first_start_;
    1433  std::function<int(int64)> start_empty_path_class_;
    1434  bool skip_locally_optimal_paths_;
    1435  bool optimal_paths_enabled_;
    1436  std::vector<int> path_basis_;
    1437  std::vector<bool> optimal_paths_;
    1438 };
    1439 
    1443  public:
    1445  const std::vector<IntVar*>& vars,
    1446  const std::vector<IntVar*>& secondary_vars, int number_of_base_nodes,
    1447  std::function<int(int64)> start_empty_path_class);
    1449 
    1450  bool IsPathStart(int64 node_index) const { return prevs_[node_index] == -1; }
    1451 
    1452  int64 Prev(int64 node_index) const {
    1453  DCHECK(!IsPathStart(node_index));
    1454  return prevs_[node_index];
    1455  }
    1456 
    1457  std::string DebugString() const override {
    1458  return "PathWithPreviousNodesOperator";
    1459  }
    1460 
    1461  protected:
    1462  void OnNodeInitialization() override;
    1463 
    1464  private:
    1465  std::vector<int64> prevs_;
    1466 };
    1467 
    1469 template <class T>
    1470 LocalSearchOperator* MakeLocalSearchOperator(
    1471  Solver* solver, const std::vector<IntVar*>& vars,
    1472  const std::vector<IntVar*>& secondary_vars,
    1473  std::function<int(int64)> start_empty_path_class);
    1474 
    1477 class TwoOpt;
    1478 class Relocate;
    1479 class Exchange;
    1480 class Cross;
    1481 class MakeActiveOperator;
    1482 class MakeInactiveOperator;
    1483 class MakeChainInactiveOperator;
    1484 class SwapActiveOperator;
    1485 class ExtendedSwapActiveOperator;
    1486 class MakeActiveAndRelocate;
    1487 class RelocateAndMakeActiveOperator;
    1488 class RelocateAndMakeInactiveOperator;
    1489 
    1492  public:
    1501  virtual bool Accept(const Assignment* delta, const Assignment* deltadelta,
    1502  int64 objective_min, int64 objective_max) = 0;
    1503 
    1509  virtual void Synchronize(const Assignment* assignment,
    1510  const Assignment* delta) = 0;
    1511  virtual bool IsIncremental() const { return false; }
    1512 
    1514  virtual int64 GetSynchronizedObjectiveValue() const { return 0LL; }
    1516  // If the last Accept() call returned false, returns an undefined value.
    1517  virtual int64 GetAcceptedObjectiveValue() const { return 0LL; }
    1518 };
    1519 
    1520 #if !defined(SWIG)
    1521 class LocalSearchFilterManager : public LocalSearchFilter {
    1525  public:
    1526  LocalSearchFilterManager(Solver* const solver,
    1527  const std::vector<LocalSearchFilter*>& filters);
    1528  std::string DebugString() const override {
    1529  return "LocalSearchFilterManager";
    1530  }
    1533  bool Accept(const Assignment* delta, const Assignment* deltadelta,
    1534  int64 objective_min, int64 objective_max) override;
    1536  void Synchronize(const Assignment* assignment,
    1537  const Assignment* delta) override;
    1538  bool IsIncremental() const override { return is_incremental_; }
    1539  int64 GetSynchronizedObjectiveValue() const override {
    1540  return synchronized_value_;
    1541  }
    1542  int64 GetAcceptedObjectiveValue() const override { return accepted_value_; }
    1543 
    1544  private:
    1545  Solver* const solver_;
    1546  std::vector<LocalSearchFilter*> filters_;
    1547  bool is_incremental_;
    1548  int64 synchronized_value_;
    1549  int64 accepted_value_;
    1550 };
    1551 #endif
    1552 
    1554  public:
    1555  explicit IntVarLocalSearchFilter(const std::vector<IntVar*>& vars);
    1556  ~IntVarLocalSearchFilter() override;
    1559  void Synchronize(const Assignment* assignment,
    1560  const Assignment* delta) override;
    1561 
    1562  bool FindIndex(IntVar* const var, int64* index) const {
    1563  DCHECK(index != nullptr);
    1564  const int var_index = var->index();
    1565  *index = (var_index < var_index_to_index_.size())
    1566  ? var_index_to_index_[var_index]
    1567  : kUnassigned;
    1568  return *index != kUnassigned;
    1569  }
    1570 
    1572  void AddVars(const std::vector<IntVar*>& vars);
    1573  int Size() const { return vars_.size(); }
    1574  IntVar* Var(int index) const { return vars_[index]; }
    1575  int64 Value(int index) const {
    1576  DCHECK(IsVarSynced(index));
    1577  return values_[index];
    1578  }
    1579  bool IsVarSynced(int index) const { return var_synced_[index]; }
    1580 
    1581  protected:
    1582  virtual void OnSynchronize(const Assignment* delta) {}
    1583  void SynchronizeOnAssignment(const Assignment* assignment);
    1584 
    1585  private:
    1586  std::vector<IntVar*> vars_;
    1587  std::vector<int64> values_;
    1588  std::vector<bool> var_synced_;
    1589  std::vector<int> var_index_to_index_;
    1590  static const int kUnassigned;
    1591 };
    1592 
    1594  public:
    1595  explicit PropagationMonitor(Solver* const solver);
    1596  ~PropagationMonitor() override;
    1597  std::string DebugString() const override { return "PropagationMonitor"; }
    1598 
    1600  virtual void BeginConstraintInitialPropagation(
    1601  Constraint* const constraint) = 0;
    1602  virtual void EndConstraintInitialPropagation(
    1603  Constraint* const constraint) = 0;
    1605  Constraint* const parent, Constraint* const nested) = 0;
    1607  Constraint* const parent, Constraint* const nested) = 0;
    1608  virtual void RegisterDemon(Demon* const demon) = 0;
    1609  virtual void BeginDemonRun(Demon* const demon) = 0;
    1610  virtual void EndDemonRun(Demon* const demon) = 0;
    1611  virtual void StartProcessingIntegerVariable(IntVar* const var) = 0;
    1612  virtual void EndProcessingIntegerVariable(IntVar* const var) = 0;
    1613  virtual void PushContext(const std::string& context) = 0;
    1614  virtual void PopContext() = 0;
    1616  virtual void SetMin(IntExpr* const expr, int64 new_min) = 0;
    1617  virtual void SetMax(IntExpr* const expr, int64 new_max) = 0;
    1618  virtual void SetRange(IntExpr* const expr, int64 new_min, int64 new_max) = 0;
    1620  virtual void SetMin(IntVar* const var, int64 new_min) = 0;
    1621  virtual void SetMax(IntVar* const var, int64 new_max) = 0;
    1622  virtual void SetRange(IntVar* const var, int64 new_min, int64 new_max) = 0;
    1623  virtual void RemoveValue(IntVar* const var, int64 value) = 0;
    1624  virtual void SetValue(IntVar* const var, int64 value) = 0;
    1625  virtual void RemoveInterval(IntVar* const var, int64 imin, int64 imax) = 0;
    1626  virtual void SetValues(IntVar* const var,
    1627  const std::vector<int64>& values) = 0;
    1628  virtual void RemoveValues(IntVar* const var,
    1629  const std::vector<int64>& values) = 0;
    1631  virtual void SetStartMin(IntervalVar* const var, int64 new_min) = 0;
    1632  virtual void SetStartMax(IntervalVar* const var, int64 new_max) = 0;
    1633  virtual void SetStartRange(IntervalVar* const var, int64 new_min,
    1634  int64 new_max) = 0;
    1635  virtual void SetEndMin(IntervalVar* const var, int64 new_min) = 0;
    1636  virtual void SetEndMax(IntervalVar* const var, int64 new_max) = 0;
    1637  virtual void SetEndRange(IntervalVar* const var, int64 new_min,
    1638  int64 new_max) = 0;
    1639  virtual void SetDurationMin(IntervalVar* const var, int64 new_min) = 0;
    1640  virtual void SetDurationMax(IntervalVar* const var, int64 new_max) = 0;
    1641  virtual void SetDurationRange(IntervalVar* const var, int64 new_min,
    1642  int64 new_max) = 0;
    1643  virtual void SetPerformed(IntervalVar* const var, bool value) = 0;
    1645  virtual void RankFirst(SequenceVar* const var, int index) = 0;
    1646  virtual void RankNotFirst(SequenceVar* const var, int index) = 0;
    1647  virtual void RankLast(SequenceVar* const var, int index) = 0;
    1648  virtual void RankNotLast(SequenceVar* const var, int index) = 0;
    1649  virtual void RankSequence(SequenceVar* const var,
    1650  const std::vector<int>& rank_first,
    1651  const std::vector<int>& rank_last,
    1652  const std::vector<int>& unperformed) = 0;
    1654  void Install() override;
    1655 };
    1656 
    1658  // TODO(user): Add monitoring of local search filters.
    1659  public:
    1660  explicit LocalSearchMonitor(Solver* const solver);
    1661  ~LocalSearchMonitor() override;
    1662  std::string DebugString() const override { return "LocalSearchMonitor"; }
    1663 
    1665  virtual void BeginOperatorStart() = 0;
    1666  virtual void EndOperatorStart() = 0;
    1667  virtual void BeginMakeNextNeighbor(const LocalSearchOperator* op) = 0;
    1668  virtual void EndMakeNextNeighbor(const LocalSearchOperator* op,
    1669  bool neighbor_found, const Assignment* delta,
    1670  const Assignment* deltadelta) = 0;
    1671  virtual void BeginFilterNeighbor(const LocalSearchOperator* op) = 0;
    1672  virtual void EndFilterNeighbor(const LocalSearchOperator* op,
    1673  bool neighbor_found) = 0;
    1674  virtual void BeginAcceptNeighbor(const LocalSearchOperator* op) = 0;
    1675  virtual void EndAcceptNeighbor(const LocalSearchOperator* op,
    1676  bool neighbor_found) = 0;
    1677  virtual void BeginFiltering(const LocalSearchFilter* filter) = 0;
    1678  virtual void EndFiltering(const LocalSearchFilter* filter, bool reject) = 0;
    1679 
    1681  void Install() override;
    1682 };
    1683 
    1684 class BooleanVar : public IntVar {
    1685  public:
    1686  static const int kUnboundBooleanVarValue;
    1687 
    1688  explicit BooleanVar(Solver* const s, const std::string& name = "")
    1690 
    1691  ~BooleanVar() override {}
    1692 
    1693  int64 Min() const override { return (value_ == 1); }
    1694  void SetMin(int64 m) override;
    1695  int64 Max() const override { return (value_ != 0); }
    1696  void SetMax(int64 m) override;
    1697  void SetRange(int64 mi, int64 ma) override;
    1698  bool Bound() const override { return (value_ != kUnboundBooleanVarValue); }
    1699  int64 Value() const override {
    1700  CHECK_NE(value_, kUnboundBooleanVarValue) << "variable is not bound";
    1701  return value_;
    1702  }
    1703  void RemoveValue(int64 v) override;
    1704  void RemoveInterval(int64 l, int64 u) override;
    1705  void WhenBound(Demon* d) override;
    1706  void WhenRange(Demon* d) override { WhenBound(d); }
    1707  void WhenDomain(Demon* d) override { WhenBound(d); }
    1708  uint64 Size() const override;
    1709  bool Contains(int64 v) const override;
    1710  IntVarIterator* MakeHoleIterator(bool reversible) const override;
    1711  IntVarIterator* MakeDomainIterator(bool reversible) const override;
    1712  std::string DebugString() const override;
    1713  int VarType() const override { return BOOLEAN_VAR; }
    1714 
    1715  IntVar* IsEqual(int64 constant) override;
    1716  IntVar* IsDifferent(int64 constant) override;
    1717  IntVar* IsGreaterOrEqual(int64 constant) override;
    1718  IntVar* IsLessOrEqual(int64 constant) override;
    1719 
    1720  virtual void RestoreValue() = 0;
    1721  std::string BaseName() const override { return "BooleanVar"; }
    1722 
    1723  int RawValue() const { return value_; }
    1724 
    1725  protected:
    1726  int value_;
    1729 };
    1730 
    1731 class SymmetryManager;
    1732 
    1737  public:
    1739  : symmetry_manager_(nullptr), index_in_symmetry_manager_(-1) {}
    1740  ~SymmetryBreaker() override {}
    1741 
    1742  void AddIntegerVariableEqualValueClause(IntVar* const var, int64 value);
    1744  int64 value);
    1745  void AddIntegerVariableLessOrEqualValueClause(IntVar* const var, int64 value);
    1746 
    1747  private:
    1748  friend class SymmetryManager;
    1749  void set_symmetry_manager_and_index(SymmetryManager* manager, int index) {
    1750  CHECK(symmetry_manager_ == nullptr);
    1751  CHECK_EQ(-1, index_in_symmetry_manager_);
    1752  symmetry_manager_ = manager;
    1753  index_in_symmetry_manager_ = index;
    1754  }
    1755  SymmetryManager* symmetry_manager() const { return symmetry_manager_; }
    1756  int index_in_symmetry_manager() const { return index_in_symmetry_manager_; }
    1757 
    1758  SymmetryManager* symmetry_manager_;
    1760  int index_in_symmetry_manager_;
    1761 };
    1762 
    1765 class SearchLog : public SearchMonitor {
    1766  public:
    1767  SearchLog(Solver* const s, OptimizeVar* const obj, IntVar* const var,
    1768  double scaling_factor, double offset,
    1769  std::function<std::string()> display_callback, int period);
    1770  ~SearchLog() override;
    1771  void EnterSearch() override;
    1772  void ExitSearch() override;
    1773  bool AtSolution() override;
    1774  void BeginFail() override;
    1775  void NoMoreSolutions() override;
    1776  void AcceptUncheckedNeighbor() override;
    1777  void ApplyDecision(Decision* const decision) override;
    1778  void RefuteDecision(Decision* const decision) override;
    1779  void OutputDecision();
    1780  void Maintain();
    1781  void BeginInitialPropagation() override;
    1782  void EndInitialPropagation() override;
    1783  std::string DebugString() const override;
    1784 
    1785  protected:
    1786  /* Bottleneck function used for all UI related output. */
    1787  virtual void OutputLine(const std::string& line);
    1788 
    1789  private:
    1790  static std::string MemoryUsage();
    1791 
    1792  const int period_;
    1793  std::unique_ptr<WallTimer> timer_;
    1794  IntVar* const var_;
    1795  OptimizeVar* const obj_;
    1796  const double scaling_factor_;
    1797  const double offset_;
    1798  std::function<std::string()> display_callback_;
    1799  int nsol_;
    1800  int64 tick_;
    1801  int64 objective_min_;
    1802  int64 objective_max_;
    1803  int min_right_depth_;
    1804  int max_depth_;
    1805  int sliding_min_depth_;
    1806  int sliding_max_depth_;
    1807 };
    1808 
    1813 class ModelCache {
    1814  public:
    1819  };
    1820 
    1827  };
    1828 
    1832  };
    1833 
    1842  };
    1843 
    1849  };
    1850 
    1863  };
    1864 
    1868  };
    1869 
    1882  };
    1886  };
    1887 
    1891  };
    1892 
    1896  };
    1897 
    1903  };
    1904 
    1908  };
    1909 
    1910  explicit ModelCache(Solver* const solver);
    1911  virtual ~ModelCache();
    1912 
    1913  virtual void Clear() = 0;
    1914 
    1916 
    1917  virtual Constraint* FindVoidConstraint(VoidConstraintType type) const = 0;
    1918 
    1919  virtual void InsertVoidConstraint(Constraint* const ct,
    1920  VoidConstraintType type) = 0;
    1921 
    1924  IntVar* const var, int64 value, VarConstantConstraintType type) const = 0;
    1925 
    1926  virtual void InsertVarConstantConstraint(Constraint* const ct,
    1927  IntVar* const var, int64 value,
    1928  VarConstantConstraintType type) = 0;
    1929 
    1931 
    1933  IntVar* const var, int64 value1, int64 value2,
    1934  VarConstantConstantConstraintType type) const = 0;
    1935 
    1937  Constraint* const ct, IntVar* const var, int64 value1, int64 value2,
    1939 
    1941 
    1943  IntExpr* const expr1, IntExpr* const expr2,
    1944  ExprExprConstraintType type) const = 0;
    1945 
    1946  virtual void InsertExprExprConstraint(Constraint* const ct,
    1947  IntExpr* const expr1,
    1948  IntExpr* const expr2,
    1949  ExprExprConstraintType type) = 0;
    1950 
    1952 
    1953  virtual IntExpr* FindExprExpression(IntExpr* const expr,
    1954  ExprExpressionType type) const = 0;
    1955 
    1956  virtual void InsertExprExpression(IntExpr* const expression,
    1957  IntExpr* const expr,
    1958  ExprExpressionType type) = 0;
    1959 
    1961 
    1963  IntExpr* const expr, int64 value,
    1964  ExprConstantExpressionType type) const = 0;
    1965 
    1966  virtual void InsertExprConstantExpression(
    1967  IntExpr* const expression, IntExpr* const var, int64 value,
    1968  ExprConstantExpressionType type) = 0;
    1969 
    1971 
    1973  IntExpr* const var1, IntExpr* const var2,
    1974  ExprExprExpressionType type) const = 0;
    1975 
    1976  virtual void InsertExprExprExpression(IntExpr* const expression,
    1977  IntExpr* const var1,
    1978  IntExpr* const var2,
    1979  ExprExprExpressionType type) = 0;
    1980 
    1982 
    1984  IntExpr* const var1, IntExpr* const var2, int64 constant,
    1985  ExprExprConstantExpressionType type) const = 0;
    1986 
    1987  virtual void InsertExprExprConstantExpression(
    1988  IntExpr* const expression, IntExpr* const var1, IntExpr* const var2,
    1989  int64 constant, ExprExprConstantExpressionType type) = 0;
    1990 
    1992 
    1994  IntVar* const var, int64 value1, int64 value2,
    1995  VarConstantConstantExpressionType type) const = 0;
    1996 
    1998  IntExpr* const expression, IntVar* const var, int64 value1, int64 value2,
    2000 
    2002 
    2004  IntVar* const var, const std::vector<int64>& values,
    2005  VarConstantArrayExpressionType type) const = 0;
    2006 
    2007  virtual void InsertVarConstantArrayExpression(
    2008  IntExpr* const expression, IntVar* const var,
    2009  const std::vector<int64>& values,
    2011 
    2013 
    2015  const std::vector<IntVar*>& vars, VarArrayExpressionType type) const = 0;
    2016 
    2017  virtual void InsertVarArrayExpression(IntExpr* const expression,
    2018  const std::vector<IntVar*>& vars,
    2019  VarArrayExpressionType type) = 0;
    2020 
    2022 
    2024  const std::vector<IntVar*>& vars, const std::vector<int64>& values,
    2025  VarArrayConstantArrayExpressionType type) const = 0;
    2026 
    2028  IntExpr* const expression, const std::vector<IntVar*>& var,
    2029  const std::vector<int64>& values,
    2031 
    2033 
    2035  const std::vector<IntVar*>& vars, int64 value,
    2036  VarArrayConstantExpressionType type) const = 0;
    2037 
    2038  virtual void InsertVarArrayConstantExpression(
    2039  IntExpr* const expression, const std::vector<IntVar*>& var, int64 value,
    2041 
    2042  Solver* solver() const;
    2043 
    2044  private:
    2045  Solver* const solver_;
    2046 };
    2047 
    2049 #if !defined(SWIG)
    2051  public:
    2053  const std::string& TypeName() const;
    2054  void SetTypeName(const std::string& type_name);
    2055 
    2057  void SetIntegerArgument(const std::string& arg_name, int64 value);
    2058  void SetIntegerArrayArgument(const std::string& arg_name,
    2059  const std::vector<int64>& values);
    2060  void SetIntegerMatrixArgument(const std::string& arg_name,
    2061  const IntTupleSet& values);
    2062  void SetIntegerExpressionArgument(const std::string& arg_name,
    2063  IntExpr* const expr);
    2064  void SetIntegerVariableArrayArgument(const std::string& arg_name,
    2065  const std::vector<IntVar*>& vars);
    2066  void SetIntervalArgument(const std::string& arg_name, IntervalVar* const var);
    2067  void SetIntervalArrayArgument(const std::string& arg_name,
    2068  const std::vector<IntervalVar*>& vars);
    2069  void SetSequenceArgument(const std::string& arg_name, SequenceVar* const var);
    2070  void SetSequenceArrayArgument(const std::string& arg_name,
    2071  const std::vector<SequenceVar*>& vars);
    2072 
    2074  bool HasIntegerExpressionArgument(const std::string& arg_name) const;
    2075  bool HasIntegerVariableArrayArgument(const std::string& arg_name) const;
    2076 
    2078  int64 FindIntegerArgumentWithDefault(const std::string& arg_name,
    2079  int64 def) const;
    2080  int64 FindIntegerArgumentOrDie(const std::string& arg_name) const;
    2081  const std::vector<int64>& FindIntegerArrayArgumentOrDie(
    2082  const std::string& arg_name) const;
    2083  const IntTupleSet& FindIntegerMatrixArgumentOrDie(
    2084  const std::string& arg_name) const;
    2085 
    2087  const std::string& arg_name) const;
    2088  const std::vector<IntVar*>& FindIntegerVariableArrayArgumentOrDie(
    2089  const std::string& arg_name) const;
    2090 
    2091  private:
    2092  std::string type_name_;
    2093  absl::flat_hash_map<std::string, int64> integer_argument_;
    2094  absl::flat_hash_map<std::string, std::vector<int64> > integer_array_argument_;
    2095  absl::flat_hash_map<std::string, IntTupleSet> matrix_argument_;
    2096  absl::flat_hash_map<std::string, IntExpr*> integer_expression_argument_;
    2097  absl::flat_hash_map<std::string, IntervalVar*> interval_argument_;
    2098  absl::flat_hash_map<std::string, SequenceVar*> sequence_argument_;
    2099  absl::flat_hash_map<std::string, std::vector<IntVar*> >
    2100  integer_variable_array_argument_;
    2101  absl::flat_hash_map<std::string, std::vector<IntervalVar*> >
    2102  interval_array_argument_;
    2103  absl::flat_hash_map<std::string, std::vector<SequenceVar*> >
    2104  sequence_array_argument_;
    2105 };
    2106 
    2108 class ModelParser : public ModelVisitor {
    2109  public:
    2110  ModelParser();
    2111 
    2112  ~ModelParser() override;
    2113 
    2115  void BeginVisitModel(const std::string& solver_name) override;
    2116  void EndVisitModel(const std::string& solver_name) override;
    2117  void BeginVisitConstraint(const std::string& type_name,
    2118  const Constraint* const constraint) override;
    2119  void EndVisitConstraint(const std::string& type_name,
    2120  const Constraint* const constraint) override;
    2121  void BeginVisitIntegerExpression(const std::string& type_name,
    2122  const IntExpr* const expr) override;
    2123  void EndVisitIntegerExpression(const std::string& type_name,
    2124  const IntExpr* const expr) override;
    2125  void VisitIntegerVariable(const IntVar* const variable,
    2126  IntExpr* const delegate) override;
    2127  void VisitIntegerVariable(const IntVar* const variable,
    2128  const std::string& operation, int64 value,
    2129  IntVar* const delegate) override;
    2130  void VisitIntervalVariable(const IntervalVar* const variable,
    2131  const std::string& operation, int64 value,
    2132  IntervalVar* const delegate) override;
    2133  void VisitSequenceVariable(const SequenceVar* const variable) override;
    2135  void VisitIntegerArgument(const std::string& arg_name, int64 value) override;
    2136  void VisitIntegerArrayArgument(const std::string& arg_name,
    2137  const std::vector<int64>& values) override;
    2138  void VisitIntegerMatrixArgument(const std::string& arg_name,
    2139  const IntTupleSet& values) override;
    2141  void VisitIntegerExpressionArgument(const std::string& arg_name,
    2142  IntExpr* const argument) override;
    2144  const std::string& arg_name,
    2145  const std::vector<IntVar*>& arguments) override;
    2147  void VisitIntervalArgument(const std::string& arg_name,
    2148  IntervalVar* const argument) override;
    2150  const std::string& arg_name,
    2151  const std::vector<IntervalVar*>& arguments) override;
    2153  void VisitSequenceArgument(const std::string& arg_name,
    2154  SequenceVar* const argument) override;
    2156  const std::string& arg_name,
    2157  const std::vector<SequenceVar*>& arguments) override;
    2158 
    2159  protected:
    2160  void PushArgumentHolder();
    2161  void PopArgumentHolder();
    2162  ArgumentHolder* Top() const;
    2163 
    2164  private:
    2165  std::vector<ArgumentHolder*> holders_;
    2166 };
    2167 
    2168 template <class T>
    2169 class ArrayWithOffset : public BaseObject {
    2170  public:
    2171  ArrayWithOffset(int64 index_min, int64 index_max)
    2172  : index_min_(index_min),
    2173  index_max_(index_max),
    2174  values_(new T[index_max - index_min + 1]) {
    2175  DCHECK_LE(index_min, index_max);
    2176  }
    2177 
    2178  ~ArrayWithOffset() override {}
    2179 
    2180  virtual T Evaluate(int64 index) const {
    2181  DCHECK_GE(index, index_min_);
    2182  DCHECK_LE(index, index_max_);
    2183  return values_[index - index_min_];
    2184  }
    2185 
    2186  void SetValue(int64 index, T value) {
    2187  DCHECK_GE(index, index_min_);
    2188  DCHECK_LE(index, index_max_);
    2189  values_[index - index_min_] = value;
    2190  }
    2191 
    2192  std::string DebugString() const override { return "ArrayWithOffset"; }
    2193 
    2194  private:
    2195  const int64 index_min_;
    2196  const int64 index_max_;
    2197  std::unique_ptr<T[]> values_;
    2198 };
    2199 #endif // SWIG
    2200 
    2205 template <class T, class C>
    2207  public:
    2208  explicit RevGrowingArray(int64 block_size)
    2209  : block_size_(block_size), block_offset_(0) {
    2210  CHECK_GT(block_size, 0);
    2211  }
    2212 
    2214  for (int i = 0; i < elements_.size(); ++i) {
    2215  delete[] elements_[i];
    2216  }
    2217  }
    2218 
    2219  T At(int64 index) const {
    2220  const int64 block_index = ComputeBlockIndex(index);
    2221  const int64 relative_index = block_index - block_offset_;
    2222  if (relative_index < 0 || relative_index >= elements_.size()) {
    2223  return T();
    2224  }
    2225  const T* block = elements_[relative_index];
    2226  return block != nullptr ? block[index - block_index * block_size_] : T();
    2227  }
    2228 
    2229  void RevInsert(Solver* const solver, int64 index, T value) {
    2230  const int64 block_index = ComputeBlockIndex(index);
    2231  T* const block = GetOrCreateBlock(block_index);
    2232  const int64 residual = index - block_index * block_size_;
    2233  solver->SaveAndSetValue(reinterpret_cast<C*>(&block[residual]),
    2234  reinterpret_cast<C>(value));
    2235  }
    2236 
    2237  private:
    2238  T* NewBlock() const {
    2239  T* const result = new T[block_size_];
    2240  for (int i = 0; i < block_size_; ++i) {
    2241  result[i] = T();
    2242  }
    2243  return result;
    2244  }
    2245 
    2246  T* GetOrCreateBlock(int block_index) {
    2247  if (elements_.size() == 0) {
    2248  block_offset_ = block_index;
    2249  GrowUp(block_index);
    2250  } else if (block_index < block_offset_) {
    2251  GrowDown(block_index);
    2252  } else if (block_index - block_offset_ >= elements_.size()) {
    2253  GrowUp(block_index);
    2254  }
    2255  T* block = elements_[block_index - block_offset_];
    2256  if (block == nullptr) {
    2257  block = NewBlock();
    2258  elements_[block_index - block_offset_] = block;
    2259  }
    2260  return block;
    2261  }
    2262 
    2263  int64 ComputeBlockIndex(int64 value) const {
    2264  return value >= 0 ? value / block_size_
    2265  : (value - block_size_ + 1) / block_size_;
    2266  }
    2267 
    2268  void GrowUp(int64 block_index) {
    2269  elements_.resize(block_index - block_offset_ + 1);
    2270  }
    2271 
    2272  void GrowDown(int64 block_index) {
    2273  const int64 delta = block_offset_ - block_index;
    2274  block_offset_ = block_index;
    2275  DCHECK_GT(delta, 0);
    2276  elements_.insert(elements_.begin(), delta, nullptr);
    2277  }
    2278 
    2279  const int64 block_size_;
    2280  std::vector<T*> elements_;
    2281  int block_offset_;
    2282 };
    2283 
    2288 template <class T>
    2289 class RevIntSet {
    2290  public:
    2291  static const int kNoInserted = -1;
    2292 
    2294  explicit RevIntSet(int capacity)
    2295  : elements_(new T[capacity]),
    2296  num_elements_(0),
    2297  capacity_(capacity),
    2298  position_(new int[capacity]),
    2299  delete_position_(true) {
    2300  for (int i = 0; i < capacity; ++i) {
    2301  position_[i] = kNoInserted;
    2302  }
    2303  }
    2304 
    2306  RevIntSet(int capacity, int* shared_positions, int shared_positions_size)
    2307  : elements_(new T[capacity]),
    2308  num_elements_(0),
    2309  capacity_(capacity),
    2310  position_(shared_positions),
    2311  delete_position_(false) {
    2312  for (int i = 0; i < shared_positions_size; ++i) {
    2313  position_[i] = kNoInserted;
    2314  }
    2315  }
    2316 
    2318  if (delete_position_) {
    2319  delete[] position_;
    2320  }
    2321  }
    2322 
    2323  int Size() const { return num_elements_.Value(); }
    2324 
    2325  int Capacity() const { return capacity_; }
    2326 
    2327  T Element(int i) const {
    2328  DCHECK_GE(i, 0);
    2329  DCHECK_LT(i, num_elements_.Value());
    2330  return elements_[i];
    2331  }
    2332 
    2333  T RemovedElement(int i) const {
    2334  DCHECK_GE(i, 0);
    2335  DCHECK_LT(i + num_elements_.Value(), capacity_);
    2336  return elements_[i + num_elements_.Value()];
    2337  }
    2338 
    2339  void Insert(Solver* const solver, const T& elt) {
    2340  const int position = num_elements_.Value();
    2341  DCHECK_LT(position, capacity_);
    2342  DCHECK(NotAlreadyInserted(elt));
    2343  elements_[position] = elt;
    2344  position_[elt] = position;
    2345  num_elements_.Incr(solver);
    2346  }
    2347 
    2348  void Remove(Solver* const solver, const T& value_index) {
    2349  num_elements_.Decr(solver);
    2350  SwapTo(value_index, num_elements_.Value());
    2351  }
    2352 
    2353  void Restore(Solver* const solver, const T& value_index) {
    2354  SwapTo(value_index, num_elements_.Value());
    2355  num_elements_.Incr(solver);
    2356  }
    2357 
    2358  void Clear(Solver* const solver) { num_elements_.SetValue(solver, 0); }
    2359 
    2361  typedef const T* const_iterator;
    2362  const_iterator begin() const { return elements_.get(); }
    2363  const_iterator end() const { return elements_.get() + num_elements_.Value(); }
    2364 
    2365  private:
    2367  bool NotAlreadyInserted(const T& elt) {
    2368  for (int i = 0; i < num_elements_.Value(); ++i) {
    2369  if (elt == elements_[i]) {
    2370  return false;
    2371  }
    2372  }
    2373  return true;
    2374  }
    2375 
    2376  void SwapTo(T value_index, int next_position) {
    2377  const int current_position = position_[value_index];
    2378  if (current_position != next_position) {
    2379  const T next_value_index = elements_[next_position];
    2380  elements_[current_position] = next_value_index;
    2381  elements_[next_position] = value_index;
    2382  position_[value_index] = next_position;
    2383  position_[next_value_index] = current_position;
    2384  }
    2385  }
    2386 
    2388  std::unique_ptr<T[]> elements_;
    2390  NumericalRev<int> num_elements_;
    2392  const int capacity_;
    2394  int* position_;
    2396  const bool delete_position_;
    2397 };
    2398 
    2400 
    2402  public:
    2403  explicit RevPartialSequence(const std::vector<int>& items)
    2404  : elements_(items),
    2405  first_ranked_(0),
    2406  last_ranked_(items.size() - 1),
    2407  size_(items.size()),
    2408  position_(new int[size_]) {
    2409  for (int i = 0; i < size_; ++i) {
    2410  elements_[i] = items[i];
    2411  position_[i] = i;
    2412  }
    2413  }
    2414 
    2415  explicit RevPartialSequence(int size)
    2416  : elements_(size),
    2417  first_ranked_(0),
    2418  last_ranked_(size - 1),
    2419  size_(size),
    2420  position_(new int[size_]) {
    2421  for (int i = 0; i < size_; ++i) {
    2422  elements_[i] = i;
    2423  position_[i] = i;
    2424  }
    2425  }
    2426 
    2428 
    2429  int NumFirstRanked() const { return first_ranked_.Value(); }
    2430 
    2431  int NumLastRanked() const { return size_ - 1 - last_ranked_.Value(); }
    2432 
    2433  int Size() const { return size_; }
    2434 
    2435 #if !defined(SWIG)
    2436  const int& operator[](int index) const {
    2437  DCHECK_GE(index, 0);
    2438  DCHECK_LT(index, size_);
    2439  return elements_[index];
    2440  }
    2441 #endif
    2442 
    2443  void RankFirst(Solver* const solver, int elt) {
    2444  DCHECK_LE(first_ranked_.Value(), last_ranked_.Value());
    2445  SwapTo(elt, first_ranked_.Value());
    2446  first_ranked_.Incr(solver);
    2447  }
    2448 
    2449  void RankLast(Solver* const solver, int elt) {
    2450  DCHECK_LE(first_ranked_.Value(), last_ranked_.Value());
    2451  SwapTo(elt, last_ranked_.Value());
    2452  last_ranked_.Decr(solver);
    2453  }
    2454 
    2455  bool IsRanked(int elt) const {
    2456  const int position = position_[elt];
    2457  return (position < first_ranked_.Value() ||
    2458  position > last_ranked_.Value());
    2459  }
    2460 
    2461  std::string DebugString() const {
    2462  std::string result = "[";
    2463  for (int i = 0; i < first_ranked_.Value(); ++i) {
    2464  absl::StrAppend(&result, elements_[i]);
    2465  if (i != first_ranked_.Value() - 1) {
    2466  result.append("-");
    2467  }
    2468  }
    2469  result.append("|");
    2470  for (int i = first_ranked_.Value(); i <= last_ranked_.Value(); ++i) {
    2471  absl::StrAppend(&result, elements_[i]);
    2472  if (i != last_ranked_.Value()) {
    2473  result.append("-");
    2474  }
    2475  }
    2476  result.append("|");
    2477  for (int i = last_ranked_.Value() + 1; i < size_; ++i) {
    2478  absl::StrAppend(&result, elements_[i]);
    2479  if (i != size_ - 1) {
    2480  result.append("-");
    2481  }
    2482  }
    2483  result.append("]");
    2484  return result;
    2485  }
    2486 
    2487  private:
    2488  void SwapTo(int elt, int next_position) {
    2489  const int current_position = position_[elt];
    2490  if (current_position != next_position) {
    2491  const int next_elt = elements_[next_position];
    2492  elements_[current_position] = next_elt;
    2493  elements_[next_position] = elt;
    2494  position_[elt] = next_position;
    2495  position_[next_elt] = current_position;
    2496  }
    2497  }
    2498 
    2500  std::vector<int> elements_;
    2502  NumericalRev<int> first_ranked_;
    2504  NumericalRev<int> last_ranked_;
    2506  const int size_;
    2508  std::unique_ptr<int[]> position_;
    2509 };
    2510 
    2516  public:
    2518  explicit UnsortedNullableRevBitset(int bit_size);
    2519 
    2521 
    2524  void Init(Solver* const solver, const std::vector<uint64>& mask);
    2525 
    2528  bool RevSubtract(Solver* const solver, const std::vector<uint64>& mask);
    2529 
    2532  bool RevAnd(Solver* const solver, const std::vector<uint64>& mask);
    2533 
    2536  int ActiveWordSize() const { return active_words_.Size(); }
    2537 
    2539  bool Empty() const { return active_words_.Size() == 0; }
    2540 
    2548  bool Intersects(const std::vector<uint64>& mask, int* support_index);
    2549 
    2551  int64 bit_size() const { return bit_size_; }
    2553  int64 word_size() const { return word_size_; }
    2555  const RevIntSet<int>& active_words() const { return active_words_; }
    2556 
    2557  private:
    2558  void CleanUpActives(Solver* const solver);
    2559 
    2560  const int64 bit_size_;
    2561  const int64 word_size_;
    2562  RevArray<uint64> bits_;
    2563  RevIntSet<int> active_words_;
    2564  std::vector<int> to_remove_;
    2565 };
    2566 
    2567 template <class T>
    2568 bool IsArrayConstant(const std::vector<T>& values, const T& value) {
    2569  for (int i = 0; i < values.size(); ++i) {
    2570  if (values[i] != value) {
    2571  return false;
    2572  }
    2573  }
    2574  return true;
    2575 }
    2576 
    2577 template <class T>
    2578 bool IsArrayBoolean(const std::vector<T>& values) {
    2579  for (int i = 0; i < values.size(); ++i) {
    2580  if (values[i] != 0 && values[i] != 1) {
    2581  return false;
    2582  }
    2583  }
    2584  return true;
    2585 }
    2586 
    2587 template <class T>
    2588 bool AreAllOnes(const std::vector<T>& values) {
    2589  return IsArrayConstant(values, T(1));
    2590 }
    2591 
    2592 template <class T>
    2593 bool AreAllNull(const std::vector<T>& values) {
    2594  return IsArrayConstant(values, T(0));
    2595 }
    2596 
    2597 template <class T>
    2598 bool AreAllGreaterOrEqual(const std::vector<T>& values, const T& value) {
    2599  for (const T& current_value : values) {
    2600  if (current_value < value) {
    2601  return false;
    2602  }
    2603  }
    2604  return true;
    2605 }
    2606 
    2607 template <class T>
    2608 bool AreAllLessOrEqual(const std::vector<T>& values, const T& value) {
    2609  for (const T& current_value : values) {
    2610  if (current_value > value) {
    2611  return false;
    2612  }
    2613  }
    2614  return true;
    2615 }
    2616 
    2617 template <class T>
    2618 bool AreAllPositive(const std::vector<T>& values) {
    2619  return AreAllGreaterOrEqual(values, T(0));
    2620 }
    2621 
    2622 template <class T>
    2623 bool AreAllNegative(const std::vector<T>& values) {
    2624  return AreAllLessOrEqual(values, T(0));
    2625 }
    2626 
    2627 template <class T>
    2628 bool AreAllStrictlyPositive(const std::vector<T>& values) {
    2629  return AreAllGreaterOrEqual(values, T(1));
    2630 }
    2631 
    2632 template <class T>
    2633 bool AreAllStrictlyNegative(const std::vector<T>& values) {
    2634  return AreAllLessOrEqual(values, T(-1));
    2635 }
    2636 
    2637 template <class T>
    2638 bool IsIncreasingContiguous(const std::vector<T>& values) {
    2639  for (int i = 0; i < values.size() - 1; ++i) {
    2640  if (values[i + 1] != values[i] + 1) {
    2641  return false;
    2642  }
    2643  }
    2644  return true;
    2645 }
    2646 
    2647 template <class T>
    2648 bool IsIncreasing(const std::vector<T>& values) {
    2649  for (int i = 0; i < values.size() - 1; ++i) {
    2650  if (values[i + 1] < values[i]) {
    2651  return false;
    2652  }
    2653  }
    2654  return true;
    2655 }
    2656 
    2657 template <class T>
    2658 bool IsArrayInRange(const std::vector<IntVar*>& vars, T range_min,
    2659  T range_max) {
    2660  for (int i = 0; i < vars.size(); ++i) {
    2661  if (vars[i]->Min() < range_min || vars[i]->Max() > range_max) {
    2662  return false;
    2663  }
    2664  }
    2665  return true;
    2666 }
    2667 
    2668 inline bool AreAllBound(const std::vector<IntVar*>& vars) {
    2669  for (int i = 0; i < vars.size(); ++i) {
    2670  if (!vars[i]->Bound()) {
    2671  return false;
    2672  }
    2673  }
    2674  return true;
    2675 }
    2676 
    2677 inline bool AreAllBooleans(const std::vector<IntVar*>& vars) {
    2678  return IsArrayInRange(vars, 0, 1);
    2679 }
    2680 
    2683 template <class T>
    2684 bool AreAllBoundOrNull(const std::vector<IntVar*>& vars,
    2685  const std::vector<T>& values) {
    2686  for (int i = 0; i < vars.size(); ++i) {
    2687  if (values[i] != 0 && !vars[i]->Bound()) {
    2688  return false;
    2689  }
    2690  }
    2691  return true;
    2692 }
    2693 
    2695 inline bool AreAllBoundTo(const std::vector<IntVar*>& vars, int64 value) {
    2696  for (int i = 0; i < vars.size(); ++i) {
    2697  if (!vars[i]->Bound() || vars[i]->Min() != value) {
    2698  return false;
    2699  }
    2700  }
    2701  return true;
    2702 }
    2703 
    2704 inline int64 MaxVarArray(const std::vector<IntVar*>& vars) {
    2705  DCHECK(!vars.empty());
    2706  int64 result = kint64min;
    2707  for (int i = 0; i < vars.size(); ++i) {
    2709  result = std::max<int64>(result, vars[i]->Max());
    2710  }
    2711  return result;
    2712 }
    2713 
    2714 inline int64 MinVarArray(const std::vector<IntVar*>& vars) {
    2715  DCHECK(!vars.empty());
    2716  int64 result = kint64max;
    2717  for (int i = 0; i < vars.size(); ++i) {
    2719  result = std::min<int64>(result, vars[i]->Min());
    2720  }
    2721  return result;
    2722 }
    2723 
    2724 inline void FillValues(const std::vector<IntVar*>& vars,
    2725  std::vector<int64>* const values) {
    2726  values->clear();
    2727  values->resize(vars.size());
    2728  for (int i = 0; i < vars.size(); ++i) {
    2729  (*values)[i] = vars[i]->Value();
    2730  }
    2731 }
    2732 
    2733 inline int64 PosIntDivUp(int64 e, int64 v) {
    2734  DCHECK_GT(v, 0);
    2735  if (e >= 0) {
    2736  return e % v == 0 ? e / v : e / v + 1;
    2737  } else {
    2738  return e / v;
    2739  }
    2740 }
    2741 
    2742 inline int64 PosIntDivDown(int64 e, int64 v) {
    2743  DCHECK_GT(v, 0);
    2744  if (e >= 0) {
    2745  return e / v;
    2746  } else {
    2747  return e % v == 0 ? e / v : e / v - 1;
    2748  }
    2749 }
    2750 
    2751 std::vector<int64> ToInt64Vector(const std::vector<int>& input);
    2752 } // namespace operations_research
    2753 
    2754 #endif // OR_TOOLS_CONSTRAINT_SOLVER_CONSTRAINT_SOLVERI_H_
    Implements a complete cache for model elements: expressions and constraints.
    + +
    bool MakeOneNeighbor() override
    This method should not be overridden. Override MakeNeighbor() instead.
    - +
    CallMethod3(T *const ct, void(T::*method)(P, Q, R), const std::string &name, P param1, Q param2, R param3)
    - +
    virtual void SetEndRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
    void SetBackwardSequence(const std::vector< int > &backward_sequence)
    - +
    bool ValueFromAssignent(const Assignment &assignment, IntVar *var, int64 index, int64 *value)
    - +
    virtual void InsertVarArrayConstantArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &var, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type)=0
    void NoMoreSolutions() override
    When the search tree is finished.
    virtual void SetDurationRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
    - +
    void Synchronize(const Assignment *assignment, const Assignment *delta) override
    Synchronizes all filters to assignment.
    void VisitIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values) override
    -
    void Remove(Solver *const solver, const T &value_index)
    +
    void Remove(Solver *const solver, const T &value_index)
    void OnNodeInitialization() override
    Called by OnStart() after initializing node information.
    -
    virtual void OnSynchronize(const Assignment *delta)
    +
    virtual void OnSynchronize(const Assignment *delta)
    -
    const RevIntSet< int > & active_words() const
    Returns the set of active word indices.
    +
    const RevIntSet< int > & active_words() const
    Returns the set of active word indices.
    DELAYED_PRIORITY is the lowest priority: Demons will be processed after VAR_PRIORITY and NORMAL_PRIOR...
    void RemoveValue(int64 v) override
    This method removes the value 'v' from the domain of the variable.
    - +
    int64 StartNode(int i) const
    Returns the index of the variable corresponding to the current path of the ith base node.
    bool IsPathEnd(int64 i) const
    Returns true if i is the last node on the path; defined by the fact that i outside the range of the v...
    IntVar * Var() override
    Creates a variable from the expression.
    -
    int64 size() const
    Returns the number of interval vars in the sequence.
    +
    int64 size() const
    Returns the number of interval vars in the sequence.
    -
    bool AreAllBoundOrNull(const std::vector< IntVar * > &vars, const std::vector< T > &values)
    Returns true if all the variables are assigned to a single value, or if their corresponding value is ...
    +
    bool AreAllBoundOrNull(const std::vector< IntVar * > &vars, const std::vector< T > &values)
    Returns true if all the variables are assigned to a single value, or if their corresponding value is ...
    -
    const T * const_iterator
    Iterators on the indices.
    +
    const T * const_iterator
    Iterators on the indices.
    - +
    IntVarLocalSearchOperator(const std::vector< IntVar * > &vars)
    virtual void InsertExprExpression(IntExpr *const expression, IntExpr *const expr, ExprExpressionType type)=0
    -
    std::function< void(int64)> ObjectiveWatcher
    -
    std::string DebugString() const override
    +
    std::string DebugString() const override
    Low-priority demon proxy to a method on the constraint with two arguments.
    -
    bool FindIndex(IntVar *const var, int64 *index) const
    - +
    bool FindIndex(IntVar *const var, int64 *index) const
    +
    void SetBackwardSequence(int64 index, const std::vector< int > &value)
    void SetLastValue(const T &v)
    Sets the last value in the FIFO.
    @@ -145,46 +115,44 @@
    std::string DebugString() const override
    This class represent a reversible FIFO structure.
    - +
    Matrix version of the RevBitSet class.
    - +
    void WhenBound(Demon *d) override
    This method attaches a demon that will be awakened when the variable is bound.
    bool IsInactive(int64 i) const
    Returns true if node is inactive.
    -
    bool IsArrayBoolean(const std::vector< T > &values)
    -
    void PropagateObjectiveValue(int64 objective_value)
    +
    bool IsArrayBoolean(const std::vector< T > &values)
    const std::string & TypeName() const
    Type of the argument.
    bool HasIntegerVariableArrayArgument(const std::string &arg_name) const
    PathWithPreviousNodesOperator(const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, int number_of_base_nodes, std::function< int(int64)> start_empty_path_class)
    - +
    bool MakeActive(int64 node, int64 destination)
    - - + + - +
    void EnterSearch() override
    Beginning of the search.
    - + - +
    virtual void SetValue(IntVar *const var, int64 value)=0
    -
    bool AreAllStrictlyNegative(const std::vector< T > &values)
    +
    bool AreAllStrictlyNegative(const std::vector< T > &values)
    Base operator class for operators manipulating variables.
    void SetNext(int64 from, int64 to, int64 path)
    Sets the to to be the node after from.
    -
    bool Empty() const
    This method returns true if the active bitset is null.
    - -
    void SaveAndSetValue(T *adr, T val)
    All-in-one SaveAndSetValue.
    - +
    bool Empty() const
    This method returns true if the active bitset is null.
    + +
    void SaveAndSetValue(T *adr, T val)
    All-in-one SaveAndSetValue.
    IntVarIterator * MakeDomainIterator(bool reversible) const override
    Creates a domain iterator.
    void SetToOne(Solver *const solver, int64 row, int64 column)
    Sets the 'column' bit in the 'row' row.
    virtual void InsertVarConstantConstantExpression(IntExpr *const expression, IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type)=0
    virtual void PushContext(const std::string &context)=0
    - +
    void SetIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values)
    bool IsSet(int64 row, int64 column) const
    Returns whether the 'column' bit in the 'row' row is set.
    @@ -194,49 +162,49 @@
    void VisitIntegerArgument(const std::string &arg_name, int64 value) override
    Integer arguments.
    void ClearAll(Solver *const solver)
    Cleans all bits.
    - -
    int index() const
    Returns the index of the variable.
    + +
    int index() const
    Returns the index of the variable.
    virtual Constraint * FindVarConstantConstantConstraint(IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type) const =0
    Var Constant Constant Constraints.
    - +
    SequenceVarLocalSearchOperator(const std::vector< SequenceVar * > &vars)
    virtual void EndFiltering(const LocalSearchFilter *filter, bool reject)=0
    void EndVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
    - +
    SequenceVarLocalSearchHandler(SequenceVarLocalSearchOperator *op)
    virtual int64 GetBaseNodeRestartPosition(int base_index)
    Returns the index of the node to which the base node of index base_index must be set to when it reach...
    - +
    Demon proxy to a method on the constraint with no arguments.
    void Push(Solver *const s, T val)
    Solver::DemonPriority priority() const override
    This method returns the priority of the demon.
    -
    void Restore(Solver *const solver, const T &value_index)
    +
    void Restore(Solver *const solver, const T &value_index)
    void SetToOne(Solver *const solver, int64 index)
    Sets the 'index' bit.
    PathOperator(const std::vector< IntVar * > &next_vars, const std::vector< IntVar * > &path_vars, int number_of_base_nodes, bool skip_locally_optimal_paths, std::function< int(int64)> start_empty_path_class)
    Builds an instance of PathOperator from next and path variables.
    void Run(Solver *const s) override
    This is the main callback of the demon.
    -
    const SequenceContainer & SequenceVarContainer() const
    +
    const SequenceContainer & SequenceVarContainer() const
    - +
    virtual bool OnSamePathAsPreviousBase(int64 base_index)
    Returns true if a base node has to be on the same path as the "previous" base node (base node of inde...
    virtual void RankLast(SequenceVar *const var, int index)=0
    Demon * MakeDelayedConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
    - - + +
    bool IsSet(int64 index) const
    Returns whether the 'index' bit is set.
    - +
    virtual void InsertVarConstantConstantConstraint(Constraint *const ct, IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type)=0
    virtual bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta)=0
    virtual Constraint * FindVoidConstraint(VoidConstraintType type) const =0
    Void constraints.
    -
    A sequence variable is a variable whose domain is a set of possible orderings of the interval variabl...
    -
    This class encapsulates an objective.
    - +
    A sequence variable is a variable whose domain is a set of possible orderings of the interval variabl...
    +
    This class encapsulates an objective.
    +
    bool Contains(int64 v) const override
    This method returns whether the value 'v' is in the domain of the variable.
    -
    RevIntSet(int capacity)
    Capacity is the fixed size of the set (it cannot grow).
    +
    RevIntSet(int capacity)
    Capacity is the fixed size of the set (it cannot grow).
    SearchLog(Solver *const s, OptimizeVar *const obj, IntVar *const var, double scaling_factor, double offset, std::function< std::string()> display_callback, int period)
    void AcceptUncheckedNeighbor() override
    After accepting an unchecked neighbor during local search.
    @@ -244,38 +212,38 @@
    This is the base class for all expressions that are not variables.
    virtual void SetStartRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
    -
    The base class of all search logs that periodically outputs information when the search is running.
    +
    The base class of all search logs that periodically outputs information when the search is running.
    void VisitIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &arguments) override
    - +
    virtual void EndDemonRun(Demon *const demon)=0
    -
    void RankFirst(Solver *const solver, int elt)
    +
    void RankFirst(Solver *const solver, int elt)
    virtual IntExpr * FindVarArrayConstantArrayExpression(const std::vector< IntVar * > &vars, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type) const =0
    Var Array Constant Array Expressions.
    -
    void Clear(Solver *const solver)
    +
    void Clear(Solver *const solver)
    void EndVisitModel(const std::string &solver_name) override
    - +
    const T & LastValue() const
    Returns the last value in the FIFO.
    std::string DebugString() const override
    - +
    void AddToAssignment(SequenceVar *var, const std::vector< int > &value, bool active, std::vector< int > *assignment_indices, int64 index, Assignment *assignment) const
    -
    int64 PosIntDivUp(int64 e, int64 v)
    +
    int64 PosIntDivUp(int64 e, int64 v)
    int64 Path(int64 node_index) const
    Returns the index of the path to which the node of index node_index belongs in the current assignment...
    -
    std::string DebugString() const override
    +
    std::string DebugString() const override
    Demon proxy to a method on the constraint with three arguments.
    void SetToZero(Solver *const solver, int64 index)
    Erases the 'index' bit.
    -
    A Demon is the base element of a propagation queue.
    +
    A Demon is the base element of a propagation queue.
    bool RevSubtract(Solver *const solver, const std::vector< uint64 > &mask)
    This method subtracts the mask from the active bitset.
    Low-priority demon proxy to a method on the constraint with one argument.
    - +
    void SetToOne(Solver *const solver, int64 pos)
    Sets the 'pos' bit.
    virtual void RankSequence(SequenceVar *const var, const std::vector< int > &rank_first, const std::vector< int > &rank_last, const std::vector< int > &unperformed)=0
    -
    bool IsArrayInRange(const std::vector< IntVar * > &vars, T range_min, T range_max)
    - +
    bool IsArrayInRange(const std::vector< IntVar * > &vars, T range_min, T range_max)
    +
    bool ValueFromAssignent(const Assignment &assignment, SequenceVar *var, int64 index, std::vector< int > *value)
    - +
    virtual void BeginNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
    void Run(Solver *const s) override
    This is the main callback of the demon.
    - +
    SequenceVarLocalSearchHandler(const SequenceVarLocalSearchHandler &other)
    DelayedCallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
    IntVar * IsGreaterOrEqual(int64 constant) override
    @@ -284,121 +252,120 @@
    BaseLns(const std::vector< IntVar * > &vars)
    std::string DebugString() const override
    - +
    virtual void SetEndMax(IntervalVar *const var, int64 new_max)=0
    CallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
    - +
    virtual int64 GetSynchronizedObjectiveValue() const
    Objective value from last time Synchronize() was called.
    void SetIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
    DelayedCallMethod0(T *const ct, void(T::*method)(), const std::string &name)
    - +
    virtual void BeginMakeNextNeighbor(const LocalSearchOperator *op)=0
    Base class of the local search operators dedicated to path modifications (a path is a set of nodes li...
    void VisitIntegerVariable(const IntVar *const variable, IntExpr *const delegate) override
    -
    std::string BaseName() const override
    Returns a base name for automatic naming.
    +
    std::string BaseName() const override
    Returns a base name for automatic naming.
    virtual void BeginOperatorStart()=0
    Local search operator events.
    bool SkipUnchanged(int index) const override
    - -
    int64 word_size() const
    Returns the number of 64 bit words used to store the bitset.
    +
    int64 word_size() const
    Returns the number of 64 bit words used to store the bitset.
    bool RevAnd(Solver *const solver, const std::vector< uint64 > &mask)
    This method ANDs the mask with the active bitset.
    void SetForwardSequence(int64 index, const std::vector< int > &value)
    DelayedCallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
    - +
    bool HasFragments() const override
    virtual void SetMax(IntExpr *const expr, int64 new_max)=0
    - +
    virtual void InsertExprExprExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type)=0
    - - + +
    bool IsCardinalityZero() const
    Is bitset null?
    Demon * MakeConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
    void SetToZero(Solver *const solver, int64 pos)
    Erases the 'pos' bit.
    - +
    bool ContainsKey(const K &key) const
    Returns true if the multi-map contains at least one instance of 'key'.
    virtual void InsertExprExprConstantExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type)=0
    - +
    void Run(Solver *const s) override
    This is the main callback of the demon.
    - +
    const std::vector< int > & ForwardSequence() const
    This iterator is not stable with respect to deletion.
    - +
    virtual void SetValues(IntVar *const var, const std::vector< int64 > &values)=0
    -
    bool AreAllBooleans(const std::vector< IntVar * > &vars)
    -
    bool Bound() const override
    Returns true if the min and the max of the expression are equal.
    +
    bool AreAllBooleans(const std::vector< IntVar * > &vars)
    +
    bool Bound() const override
    Returns true if the min and the max of the expression are equal.
    - +
    void SetMin(int64 m) override
    void SetIntervalArgument(const std::string &arg_name, IntervalVar *const var)
    virtual Constraint * FindVarConstantConstraint(IntVar *const var, int64 value, VarConstantConstraintType type) const =0
    Var Constant Constraints.
    -
    const E & Element(const V *const var) const
    +
    const E & Element(const V *const var) const
    -
    virtual T Evaluate(int64 index) const
    +
    virtual T Evaluate(int64 index) const
    virtual Constraint * FindExprExprConstraint(IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type) const =0
    Expr Expr Constraints.
    int64 OldPath(int64 node_index) const
    int64 Next(int64 node_index) const
    Returns the index of the node after the node of index node_index in the current assignment.
    - +
    LocalSearchFilterManager(Solver *const solver, const std::vector< LocalSearchFilter * > &filters)
    - +
    virtual void SetStartMax(IntervalVar *const var, int64 new_max)=0
    void BeginVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
    virtual void EndFilterNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
    RevImmutableMultiMap(Solver *const solver, int initial_size)
    virtual IntExpr * FindVarArrayExpression(const std::vector< IntVar * > &vars, VarArrayExpressionType type) const =0
    Var Array Expressions.
    -
    Argument Holder: useful when visiting a model.
    - +
    Argument Holder: useful when visiting a model.
    + - +
    const T * Last() const
    Returns the last item of the FIFO.
    void VisitSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &arguments) override
    void AddVars(const std::vector< IntVar * > &vars)
    Add variables to "track" to the filter.
    - -
    bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
    -
    void SetValue(Solver *const s, const T &val)
    -
    SimpleRevFIFO< Demon * > delayed_bound_demons_
    + +
    bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
    +
    void SetValue(Solver *const s, const T &val)
    +
    SimpleRevFIFO< Demon * > delayed_bound_demons_
    ModelCache(Solver *const solver)
    - - + +
    virtual void RankNotLast(SequenceVar *const var, int index)=0
    void RemoveInterval(int64 l, int64 u) override
    This method removes the interval 'l' .
    - +
    bool IsCardinalityZero() const
    Is bitset null?
    void Synchronize(const Assignment *assignment, const Assignment *delta) override
    This method should not be overridden.
    CallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
    - +
    int64 GetFirstBit(int start) const
    Gets the index of the first bit set starting from start.
    -
    int64 Value() const override
    This method returns the value of the variable.
    +
    int64 Value() const override
    This method returns the value of the variable.
    bool MakeOneNeighbor() override
    This method should not be overridden. Override ModifyValue() instead.
    void VisitIntervalArgument(const std::string &arg_name, IntervalVar *const argument) override
    Visit interval argument.
    void EndInitialPropagation() override
    After the initial propagation.
    - +
    virtual int64 GetAcceptedObjectiveValue() const
    Objective value from the last time Accept() was called and returned true.
    void VisitIntegerExpressionArgument(const std::string &arg_name, IntExpr *const argument) override
    Variables.
    ArgumentHolder * Top() const
    -
    int ActiveWordSize() const
    This method returns the number of non null 64 bit words in the bitset representation.
    - +
    int ActiveWordSize() const
    This method returns the number of non null 64 bit words in the bitset representation.
    +
    VarTypes
    This enum is used internally to do dynamic typing on subclasses of integer variables.
    virtual void RankNotFirst(SequenceVar *const var, int index)=0
    -
    void WhenRange(Demon *d) override
    Attach a demon that will watch the min or the max of the expression.
    +
    void WhenRange(Demon *d) override
    Attach a demon that will watch the min or the max of the expression.
    virtual void RemoveValue(IntVar *const var, int64 value)=0
    virtual IntExpr * FindExprExprExpression(IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type) const =0
    Expr Expr Expressions.
    @@ -406,128 +373,127 @@
    const std::vector< int64 > & path_starts() const
    Returns the vector of path start nodes.
    int64 OldNext(int64 node_index) const
    - +
    const std::vector< IntVar * > & FindIntegerVariableArrayArgumentOrDie(const std::string &arg_name) const
    - -
    RevPartialSequence(const std::vector< int > &items)
    - + +
    RevPartialSequence(const std::vector< int > &items)
    +
    void Run(Solver *const s) override
    This is the main callback of the demon.
    - +
    int64 Cardinality() const
    Returns the number of bits set to one.
    std::string DebugString() const override
    - +
    Specialization of LocalSearchOperator built from an array of IntVars which specifies the scope of the...
    void AddIntegerVariableLessOrEqualValueClause(IntVar *const var, int64 value)
    - +
    Simple PathOperator wrapper that also stores the current previous nodes, and is thus able to provide ...
    void Init(Solver *const solver, const std::vector< uint64 > &mask)
    This methods overwrites the active bitset with the mask.
    -
    bool AreAllStrictlyPositive(const std::vector< T > &values)
    +
    bool AreAllStrictlyPositive(const std::vector< T > &values)
    virtual void SetDurationMin(IntervalVar *const var, int64 new_min)=0
    std::string ParameterDebugString(P param)
    void SetIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &vars)
    -
    IntVarLocalSearchFilter(const std::vector< IntVar * > &vars, Solver::ObjectiveWatcher objective_callback)
    virtual void InsertExprConstantExpression(IntExpr *const expression, IntExpr *const var, int64 value, ExprConstantExpressionType type)=0
    -
    This is a special class to represent a 'residual' set of T.
    +
    This is a special class to represent a 'residual' set of T.
    virtual void InsertExprExprConstraint(Constraint *const ct, IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type)=0
    -
    const IntContainer & IntVarContainer() const
    +
    const IntContainer & IntVarContainer() const
    virtual bool SkipUnchanged(int index) const
    - - + +
    void Install() override
    Install itself on the solver.
    - +
    bool IsCardinalityOne() const
    Does it contains only one bit set?
    -
    SimpleRevFIFO< Demon * > bound_demons_
    +
    SimpleRevFIFO< Demon * > bound_demons_
    void AddToAssignment(IntVar *var, int64 value, bool active, std::vector< int > *assignment_indices, int64 index, Assignment *assignment) const
    void VisitIntervalVariable(const IntervalVar *const variable, const std::string &operation, int64 value, IntervalVar *const delegate) override
    bool ReverseChain(int64 before_chain, int64 after_chain, int64 *chain_last)
    Reverses the chain starting after before_chain and ending before after_chain.
    V * Var(int64 index) const
    Returns the variable of given index.
    void BeginVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
    - +
    virtual void InsertVarConstantArrayExpression(IntExpr *const expression, IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type)=0
    -
    bool IsIncreasingContiguous(const std::vector< T > &values)
    +
    bool IsIncreasingContiguous(const std::vector< T > &values)
    Local Search Filters are used for fast neighbor pruning.
    virtual void Start(const Assignment *assignment)=0
    -
    SequenceContainer * MutableSequenceVarContainer()
    - +
    SequenceContainer * MutableSequenceVarContainer()
    +
    virtual void SetStartMin(IntervalVar *const var, int64 new_min)=0
    IntervalVar modifiers.
    - - + + -
    int64 MinVarArray(const std::vector< IntVar * > &vars)
    -
    std::string DebugString() const override
    +
    int64 MinVarArray(const std::vector< IntVar * > &vars)
    +
    std::string DebugString() const override
    void AddIntegerVariableEqualValueClause(IntVar *const var, int64 value)
    bool MoveChain(int64 before_chain, int64 chain_end, int64 destination)
    Moves the chain starting after the node before_chain and ending at the node chain_end after the node ...
    -
    A constraint is the main modeling object.
    +
    A constraint is the main modeling object.
    const std::vector< int64 > & FindIntegerArrayArgumentOrDie(const std::string &arg_name) const
    void SetIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &vars)
    - +
    IntVarElement * FastAdd(IntVar *const var)
    Adds without checking if variable has been previously added.
    - +
    virtual void OnStart()
    Called by Start() after synchronizing the operator with the current assignment.
    virtual void SetMin(IntExpr *const expr, int64 new_min)=0
    IntExpr modifiers.
    Solver::DemonPriority priority() const override
    This method returns the priority of the demon.
    DemonPriority
    This enum represents the three possible priorities for a demon in the Solver queue.
    -
    bool IsArrayConstant(const std::vector< T > &values, const T &value)
    +
    bool IsArrayConstant(const std::vector< T > &values, const T &value)
    std::vector< int64 > ToInt64Vector(const std::vector< int > &input)
    -
    bool AreAllOnes(const std::vector< T > &values)
    +
    bool AreAllOnes(const std::vector< T > &values)
    const IntTupleSet & FindIntegerMatrixArgumentOrDie(const std::string &arg_name) const
    virtual std::string name() const
    Object naming.
    This class represents a small reversible bitset (size <= 64).
    bool HasIntegerExpressionArgument(const std::string &arg_name) const
    Checks if arguments exist.
    - +
    void Run(Solver *const s) override
    This is the main callback of the demon.
    Demon proxy to a method on the constraint with two arguments.
    - - -
    bool AreAllNegative(const std::vector< T > &values)
    + + +
    bool AreAllNegative(const std::vector< T > &values)
    CallMethod0(T *const ct, void(T::*method)(), const std::string &name)
    void EndVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
    virtual bool Accept(const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max)=0
    Accepts a "delta" given the assignment with which the filter has been synchronized; the delta holds t...
    -
    const int & operator[](int index) const
    +
    const int & operator[](int index) const
    Low-priority demon proxy to a method on the constraint with no arguments.
    void ExitSearch() override
    End of the search.
    -
    A DecisionVisitor is used to inspect a decision.
    - -
    int64 bit_size() const
    Returns the number of bits given in the constructor of the bitset.
    +
    A DecisionVisitor is used to inspect a decision.
    + +
    int64 bit_size() const
    Returns the number of bits given in the constructor of the bitset.
    VarLocalSearchOperator(std::vector< V * > vars, Handler var_handler)
    void SetToZero(Solver *const solver, int64 row, int64 column)
    Erases the 'column' bit in the 'row' row.
    void BeginInitialPropagation() override
    Before the initial propagation.
    void SetValue(int64 index, const Val &value)
    virtual void OutputLine(const std::string &line)
    - - + +
    IntVar * IsDifferent(int64 constant) override
    virtual void BeginFilterNeighbor(const LocalSearchOperator *op)=0
    virtual void RankFirst(SequenceVar *const var, int index)=0
    SequenceVar modifiers.
    std::string DebugString() const override
    - - + +
    void BeginVisitModel(const std::string &solver_name) override
    Header/footers.
    - - + +
    UnsortedNullableRevBitset(int bit_size)
    Size is the number of bits to store in the bitset.
    LocalSearchMonitor(Solver *const solver)
    - +
    void RefuteDecision(Decision *const decision) override
    Before refuting the decision.
    VarLocalSearchOperator< SequenceVar, std::vector< int >, SequenceVarLocalSearchHandler > SequenceVarLocalSearchOperatorTemplate
    virtual void SetRange(IntExpr *const expr, int64 new_min, int64 new_max)=0
    virtual const LocalSearchOperator * Self() const
    - -
    This class is a reversible growing array.
    + +
    This class is a reversible growing array.
    virtual IntExpr * FindExprExprConstantExpression(IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type) const =0
    Expr Expr Constant Expressions.
    -
    bool AreAllBound(const std::vector< IntVar * > &vars)
    - +
    bool AreAllBound(const std::vector< IntVar * > &vars)
    +
    void MarkChange(int64 index)
    OnStart() should really be protected, but then SWIG doesn't see it.
    int64 BaseNode(int i) const
    Returns the index of the variable corresponding to the ith base node.
    @@ -538,30 +504,30 @@
    Defines operators which change the value of variables; each neighbor corresponds to one modified vari...
    virtual void BeginDemonRun(Demon *const demon)=0
    virtual void EndConstraintInitialPropagation(Constraint *const constraint)=0
    - +
    void Run(Solver *const s) override
    This is the main callback of the demon.
    - +
    bool MakeChainInactive(int64 before_chain, int64 chain_end)
    std::string DebugString() const override
    IntExpr * FindIntegerExpressionArgumentOrDie(const std::string &arg_name) const
    - +
    virtual void InsertVarArrayConstantExpression(IntExpr *const expression, const std::vector< IntVar * > &var, int64 value, VarArrayConstantExpressionType type)=0
    virtual bool InitPosition() const
    Returns true if operator needs to restart its initial position at each call to Start()
    int number_of_nexts() const
    Number of next variables.
    void SetForwardSequence(const std::vector< int > &forward_sequence)
    - -
    A BaseObject is the root of all reversibly allocated objects.
    + +
    A BaseObject is the root of all reversibly allocated objects.
    bool IsCardinalityOne() const
    Does it contains only one bit set?
    virtual IntExpr * FindVarConstantConstantExpression(IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type) const =0
    Var Constant Constant Expressions.
    -
    The class IntExpr is the base of all integer expressions in constraint programming.
    - +
    The class IntExpr is the base of all integer expressions in constraint programming.
    +
    int64 GetSynchronizedObjectiveValue() const override
    Objective value from last time Synchronize() was called.
    virtual IntExpr * FindVarConstantArrayExpression(IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type) const =0
    Var Constant Array Expressions.
    A reversible switch that can switch once from false to true.
    -
    A search monitor is a simple set of callbacks to monitor all search events.
    +
    A search monitor is a simple set of callbacks to monitor all search events.
    void SetIntegerExpressionArgument(const std::string &arg_name, IntExpr *const expr)
    IntVar * IsEqual(int64 constant) override
    IsEqual.
    @@ -569,63 +535,63 @@
    virtual void SetNextBaseToIncrement(int64 base_index)
    Set the next base to increment on next iteration.
    - - + +
    virtual IntExpr * FindExprExpression(IntExpr *const expr, ExprExpressionType type) const =0
    Expr Expressions.
    virtual void RemoveValues(IntVar *const var, const std::vector< int64 > &values)=0
    -
    void WhenDomain(Demon *d) override
    This method attaches a demon that will watch any domain modification of the domain of the variable.
    +
    void WhenDomain(Demon *d) override
    This method attaches a demon that will watch any domain modification of the domain of the variable.
    int64 GetFirstOne() const
    Gets the index of the first bit set starting from 0.
    - +
    IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)
    +
    std::string DebugString() const override
    - - + +
    void SynchronizeOnAssignment(const Assignment *assignment)
    - +
    void VisitIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &arguments) override
    IntVar * IsLessOrEqual(int64 constant) override
    -
    The class IntVar is a subset of IntExpr.
    - -
    --— RevPartialSequence --—
    -
    A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
    +
    The class IntVar is a subset of IntExpr.
    + +
    --— RevPartialSequence --—
    +
    A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
    IntVarIterator * MakeHoleIterator(bool reversible) const override
    Creates a hole iterator.
    int64 GetFirstBit(int row, int start) const
    Returns the first bit in the row 'row' which position is >= 'start'.
    - + - +
    void Switch(Solver *const solver)
    -
    virtual void InjectObjectiveValue(int64 objective_value)
    void PushIfNotTop(Solver *const s, T val)
    Pushes the var on top if is not a duplicate of the current top object.
    int64 GetAcceptedObjectiveValue() const override
    Objective value from the last time Accept() was called and returned true.
    virtual void EndNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
    The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
    virtual void InsertVarConstantConstraint(Constraint *const ct, IntVar *const var, int64 value, VarConstantConstraintType type)=0
    - -
    bool Contains(const V *const var) const
    - + +
    bool Contains(const V *const var) const
    +
    bool Accept(const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max) override
    Returns true iff all filters return true, and the sum of their accepted objectives is between objecti...
    -
    The class Iterator has two direct subclasses.
    +
    The class Iterator has two direct subclasses.
    virtual void SetDurationMax(IntervalVar *const var, int64 new_max)=0
    - + - -
    void RankLast(Solver *const solver, int elt)
    + +
    void RankLast(Solver *const solver, int elt)
    -
    ArrayWithOffset(int64 index_min, int64 index_max)
    -
    bool AreAllNull(const std::vector< T > &values)
    +
    ArrayWithOffset(int64 index_min, int64 index_max)
    +
    bool AreAllNull(const std::vector< T > &values)
    virtual void InsertVarArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &vars, VarArrayExpressionType type)=0
    - +
    void SetSequenceArgument(const std::string &arg_name, SequenceVar *const var)
    bool ApplyChanges(Assignment *delta, Assignment *deltadelta) const
    - +
    virtual IntExpr * FindVarArrayConstantExpression(const std::vector< IntVar * > &vars, int64 value, VarArrayConstantExpressionType type) const =0
    Var Array Constant Expressions.
    virtual IntExpr * FindExprConstantExpression(IntExpr *const expr, int64 value, ExprConstantExpressionType type) const =0
    Expr Constant Expressions.
    - +
    void SetSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &vars)
    const std::vector< int > & OldSequence(int64 index) const
    @@ -633,36 +599,36 @@
    Demon proxy to a method on the constraint with one argument.
    virtual int64 ModifyValue(int64 index, int64 value)=0
    PropagationMonitor(Solver *const solver)
    -
    bool AreAllPositive(const std::vector< T > &values)
    -
    int64 MaxVarArray(const std::vector< IntVar * > &vars)
    +
    bool AreAllPositive(const std::vector< T > &values)
    +
    int64 MaxVarArray(const std::vector< IntVar * > &vars)
    const Val & Value(int64 index) const
    Returns the value in the current assignment of the variable of given index.
    virtual void RegisterDemon(Demon *const demon)=0
    Demon * MakeDelayedConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
    void Run(Solver *const s) override
    This is the main callback of the demon.
    -
    void Insert(Solver *const solver, const T &elt)
    - +
    void Insert(Solver *const solver, const T &elt)
    +
    void SetIntegerArgument(const std::string &arg_name, int64 value)
    Setters.
    This class represents a reversible bitset.
    -
    A Decision represents a choice point in the search tree.
    +
    A Decision represents a choice point in the search tree.
    Demon * MakeDelayedConstraintDemon2(Solver *const s, T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
    void AppendToFragment(int index)
    void SetMax(int64 m) override
    Base operator class for operators manipulating IntVars.
    - -
    Interval variables are often used in scheduling.
    - + +
    Interval variables are often used in scheduling.
    +
    virtual void EndAcceptNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
    Demon * MakeConstraintDemon2(Solver *const s, T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
    virtual void Synchronize(const Assignment *assignment, const Assignment *delta)=0
    Synchronizes the filter with the current solution, delta being the difference with the solution passe...
    bool Intersects(const std::vector< uint64 > &mask, int *support_index)
    This method returns true iff the mask and the active bitset have a non null intersection.
    - +
    virtual void SetEndMin(IntervalVar *const var, int64 new_min)=0
    virtual bool NextFragment()=0
    -
    bool AreAllBoundTo(const std::vector< IntVar * > &vars, int64 value)
    Returns true if all variables are assigned to 'value'.
    - +
    bool AreAllBoundTo(const std::vector< IntVar * > &vars, int64 value)
    Returns true if all variables are assigned to 'value'.
    +
    virtual void InsertVoidConstraint(Constraint *const ct, VoidConstraintType type)=0
    void Install() override
    Install itself on the solver.
    @@ -670,72 +636,72 @@ - -
    int64 PosIntDivDown(int64 e, int64 v)
    + +
    int64 PosIntDivDown(int64 e, int64 v)
    void AddIntegerVariableGreaterOrEqualValueClause(IntVar *const var, int64 value)
    void Insert(const K &key, const V &value)
    Inserts (key, value) in the multi-map.
    bool MakeOneNeighbor() override
    This method should not be overridden. Override NextFragment() instead.
    - + - -
    RevIntSet(int capacity, int *shared_positions, int shared_positions_size)
    Capacity is the fixed size of the set (it cannot grow).
    - - - + +
    RevIntSet(int capacity, int *shared_positions, int shared_positions_size)
    Capacity is the fixed size of the set (it cannot grow).
    + + +
    void ResetPosition()
    Reset the position of the operator to its position when Start() was last called; this can be used to ...
    -
    This class represents a reversible bitset.
    +
    This class represents a reversible bitset.
    void ApplyDecision(Decision *const decision) override
    Before applying the decision.
    - +
    virtual void RemoveInterval(IntVar *const var, int64 imin, int64 imax)=0
    -
    void RevInsert(Solver *const solver, int64 index, T value)
    +
    void RevInsert(Solver *const solver, int64 index, T value)
    This is the base class for building an Lns operator.
    virtual void BeginAcceptNeighbor(const LocalSearchOperator *op)=0
    Solver::DemonPriority priority() const override
    This method returns the priority of the demon.
    -
    T * RevAlloc(T *object)
    Registers the given object as being reversible.
    - +
    T * RevAlloc(T *object)
    Registers the given object as being reversible.
    +
    void Start(const Assignment *assignment) override
    This method should not be overridden.
    std::string DebugString() const override
    uint64 Size() const override
    This method returns the number of values in the domain of the variable.
    - +
    virtual void StartProcessingIntegerVariable(IntVar *const var)=0
    int64 Cardinality() const
    Returns the number of bits set to one.
    bool AtSolution() override
    This method is called when a valid solution is found.
    -
    The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...
    -
    bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
    +
    The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...
    +
    bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
    Demon * MakeConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
    void VisitIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values) override
    - -
    An Assignment is a variable -> domains mapping, used to report solutions to the user.
    + +
    An Assignment is a variable -> domains mapping, used to report solutions to the user.
    virtual void BeginConstraintInitialPropagation(Constraint *const constraint)=0
    Propagation events.
    void ClearAll(Solver *const solver)
    Cleans all bits.
    The base class for all local search operators.
    - +
    void SetRange(int64 mi, int64 ma) override
    This method sets both the min and the max of the expression.
    int64 FindIntegerArgumentWithDefault(const std::string &arg_name, int64 def) const
    Getters.
    - +
    Reversible Immutable MultiMap class.
    -
    BooleanVar(Solver *const s, const std::string &name="")
    +
    BooleanVar(Solver *const s, const std::string &name="")
    ChangeValue(const std::vector< IntVar * > &vars)
    Demon * MakeConstraintDemon3(Solver *const s, T *const ct, void(T::*method)(P, Q, R), const std::string &name, P param1, Q param2, R param3)
    - +
    std::string DebugString() const override
    virtual bool RestartAtPathStartOnSynchronize()
    When the operator is being synchronized with a new solution (when Start() is called),...
    LocalSearchOperator * MakeLocalSearchOperator(Solver *solver, const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, std::function< int(int64)> start_empty_path_class)
    Operator Factories.
    virtual void SetPerformed(IntervalVar *const var, bool value)=0
    int64 FindIntegerArgumentOrDie(const std::string &arg_name) const
    - + -
    void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
    -
    bool IsIncreasing(const std::vector< T > &values)
    +
    void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
    +
    bool IsIncreasing(const std::vector< T > &values)
    diff --git a/docs/cpp_routing/dir_37019ba8edd362d5e2e12880bdfa4c61.html b/docs/cpp_routing/dir_37019ba8edd362d5e2e12880bdfa4c61.html index f2aca486f0..b9833ed059 100644 --- a/docs/cpp_routing/dir_37019ba8edd362d5e2e12880bdfa4c61.html +++ b/docs/cpp_routing/dir_37019ba8edd362d5e2e12880bdfa4c61.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/dir_a7cc1eeded8f693d0da6c729bc88c45a.html b/docs/cpp_routing/dir_a7cc1eeded8f693d0da6c729bc88c45a.html index d7faeef698..e83335302b 100644 --- a/docs/cpp_routing/dir_a7cc1eeded8f693d0da6c729bc88c45a.html +++ b/docs/cpp_routing/dir_a7cc1eeded8f693d0da6c729bc88c45a.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/dir_afbb39f66221aac28bbdefd1dca2b2b0.html b/docs/cpp_routing/dir_afbb39f66221aac28bbdefd1dca2b2b0.html index b853311587..cc26929a3a 100644 --- a/docs/cpp_routing/dir_afbb39f66221aac28bbdefd1dca2b2b0.html +++ b/docs/cpp_routing/dir_afbb39f66221aac28bbdefd1dca2b2b0.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/dir_b2c6d49957bf5d0c7726edb4b829cd4d.html b/docs/cpp_routing/dir_b2c6d49957bf5d0c7726edb4b829cd4d.html index c09a0d38c0..6b3b394a57 100644 --- a/docs/cpp_routing/dir_b2c6d49957bf5d0c7726edb4b829cd4d.html +++ b/docs/cpp_routing/dir_b2c6d49957bf5d0c7726edb4b829cd4d.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/dir_dd9e6105f85b4b8d1432afc92516bdf4.html b/docs/cpp_routing/dir_dd9e6105f85b4b8d1432afc92516bdf4.html index bb86b99d94..feebab60ad 100644 --- a/docs/cpp_routing/dir_dd9e6105f85b4b8d1432afc92516bdf4.html +++ b/docs/cpp_routing/dir_dd9e6105f85b4b8d1432afc92516bdf4.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/files.html b/docs/cpp_routing/files.html index e46cbcbcda..d01d7b4044 100644 --- a/docs/cpp_routing/files.html +++ b/docs/cpp_routing/files.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions.html b/docs/cpp_routing/functions.html index 68a83c2405..5e1f6b147e 100644 --- a/docs/cpp_routing/functions.html +++ b/docs/cpp_routing/functions.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_a.html b/docs/cpp_routing/functions_a.html index 813188dcfe..877994b32e 100644 --- a/docs/cpp_routing/functions_a.html +++ b/docs/cpp_routing/functions_a.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_b.html b/docs/cpp_routing/functions_b.html index 309c255312..b8f5fcc5e5 100644 --- a/docs/cpp_routing/functions_b.html +++ b/docs/cpp_routing/functions_b.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -152,7 +123,7 @@ : BaseObject
  • BasePathFilter() -: BasePathFilter +: BasePathFilter
  • begin() : InitAndGetValues diff --git a/docs/cpp_routing/functions_c.html b/docs/cpp_routing/functions_c.html index af1da12706..f6f62708b5 100644 --- a/docs/cpp_routing/functions_c.html +++ b/docs/cpp_routing/functions_c.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -138,9 +109,6 @@
  • CannotBePerformed() : IntervalVar
  • -
  • CanPropagateObjectiveValue() -: IntVarLocalSearchFilter -
  • Capacity() : RevIntSet< T >
  • @@ -317,7 +285,7 @@ : ComparatorCheapestAdditionFilteredDecisionBuilder
  • Compose() -: Solver +: Solver
  • ComputeCumulCostWithoutFixedTransits() : GlobalDimensionCumulOptimizer @@ -353,7 +321,7 @@ : SequenceVar
  • ConcatenateOperators() -: Solver +: Solver
  • ConsiderEmptyRouteCostsForVehicle() : RoutingModel @@ -369,7 +337,7 @@ : Solver
  • Contains() -: Assignment +: Assignment , AssignmentContainer< V, E > , BooleanVar , IntVar @@ -389,7 +357,7 @@
  • CopyFrom() : FirstSolutionStrategy -, LocalSearchMetaheuristic +, LocalSearchMetaheuristic
  • CopyIntersection() : Assignment diff --git a/docs/cpp_routing/functions_d.html b/docs/cpp_routing/functions_d.html index 20e9d0f4ac..03cd48bc2e 100644 --- a/docs/cpp_routing/functions_d.html +++ b/docs/cpp_routing/functions_d.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_e.html b/docs/cpp_routing/functions_e.html index 0af1cb546d..23bf3a4803 100644 --- a/docs/cpp_routing/functions_e.html +++ b/docs/cpp_routing/functions_e.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_enum.html b/docs/cpp_routing/functions_enum.html index bc3cb7fd22..3ee0ae71be 100644 --- a/docs/cpp_routing/functions_enum.html +++ b/docs/cpp_routing/functions_enum.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_eval.html b/docs/cpp_routing/functions_eval.html index 9963e2f713..60bf5c573d 100644 --- a/docs/cpp_routing/functions_eval.html +++ b/docs/cpp_routing/functions_eval.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_f.html b/docs/cpp_routing/functions_f.html index fcb2126782..253a28fd63 100644 --- a/docs/cpp_routing/functions_f.html +++ b/docs/cpp_routing/functions_f.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func.html b/docs/cpp_routing/functions_func.html index 420db5c892..30de0a66b3 100644 --- a/docs/cpp_routing/functions_func.html +++ b/docs/cpp_routing/functions_func.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_b.html b/docs/cpp_routing/functions_func_b.html index aa34f6dbaf..94e7012cb5 100644 --- a/docs/cpp_routing/functions_func_b.html +++ b/docs/cpp_routing/functions_func_b.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -145,7 +116,7 @@ : BaseObject
  • BasePathFilter() -: BasePathFilter +: BasePathFilter
  • begin() : InitAndGetValues diff --git a/docs/cpp_routing/functions_func_c.html b/docs/cpp_routing/functions_func_c.html index 37545ef61d..3838f4f990 100644 --- a/docs/cpp_routing/functions_func_c.html +++ b/docs/cpp_routing/functions_func_c.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -135,9 +106,6 @@
  • CannotBePerformed() : IntervalVar
  • -
  • CanPropagateObjectiveValue() -: IntVarLocalSearchFilter -
  • Capacity() : RevIntSet< T >
  • @@ -278,7 +246,7 @@ : SequenceVar
  • ConcatenateOperators() -: Solver +: Solver
  • ConsiderEmptyRouteCostsForVehicle() : RoutingModel @@ -290,7 +258,7 @@ : Solver
  • Contains() -: Assignment +: Assignment , AssignmentContainer< V, E > , BooleanVar , IntVar @@ -309,8 +277,8 @@ , SequenceVarElement
  • CopyFrom() -: FirstSolutionStrategy -, LocalSearchMetaheuristic +: FirstSolutionStrategy +, LocalSearchMetaheuristic
  • CopyIntersection() : Assignment diff --git a/docs/cpp_routing/functions_func_d.html b/docs/cpp_routing/functions_func_d.html index fe3aff7ce2..7e7b266fed 100644 --- a/docs/cpp_routing/functions_func_d.html +++ b/docs/cpp_routing/functions_func_d.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_e.html b/docs/cpp_routing/functions_func_e.html index 6784a7a4c7..5dcde71810 100644 --- a/docs/cpp_routing/functions_func_e.html +++ b/docs/cpp_routing/functions_func_e.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_f.html b/docs/cpp_routing/functions_func_f.html index b85aaa333c..e78a98259c 100644 --- a/docs/cpp_routing/functions_func_f.html +++ b/docs/cpp_routing/functions_func_f.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_g.html b/docs/cpp_routing/functions_func_g.html index fd5b584eed..987cac0cd7 100644 --- a/docs/cpp_routing/functions_func_g.html +++ b/docs/cpp_routing/functions_func_g.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_h.html b/docs/cpp_routing/functions_func_h.html index 06bd2c6679..bd18827ff8 100644 --- a/docs/cpp_routing/functions_func_h.html +++ b/docs/cpp_routing/functions_func_h.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_i.html b/docs/cpp_routing/functions_func_i.html index ceb5977551..105de0f314 100644 --- a/docs/cpp_routing/functions_func_i.html +++ b/docs/cpp_routing/functions_func_i.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -176,9 +147,6 @@
  • InitPosition() : PathOperator
  • -
  • InjectObjectiveValue() -: IntVarLocalSearchFilter -
  • Insert() : RevImmutableMultiMap< K, V > , RevIntSet< T > @@ -272,13 +240,13 @@ : Assignment
  • IntVarElement() -: IntVarElement +: IntVarElement
  • IntVarFilteredDecisionBuilder() : IntVarFilteredDecisionBuilder
  • IntVarLocalSearchFilter() -: IntVarLocalSearchFilter +: IntVarLocalSearchFilter
  • IntVarLocalSearchOperator() : IntVarLocalSearchOperator diff --git a/docs/cpp_routing/functions_func_l.html b/docs/cpp_routing/functions_func_l.html index 8c9f65cb11..f7063faf5c 100644 --- a/docs/cpp_routing/functions_func_l.html +++ b/docs/cpp_routing/functions_func_l.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_m.html b/docs/cpp_routing/functions_func_m.html index 153f6f13fa..52db49d9e6 100644 --- a/docs/cpp_routing/functions_func_m.html +++ b/docs/cpp_routing/functions_func_m.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -619,7 +590,7 @@ : Solver
  • MakePathPrecedenceConstraint() -: Solver +: Solver
  • MakePathSpansAndTotalSlacks() : RoutingModel @@ -676,7 +647,7 @@ : Solver
  • MakeSearchLog() -: Solver +: Solver
  • MakeSearchTrace() : Solver @@ -736,16 +707,16 @@ : Solver
  • MakeSumObjectiveFilter() -: Solver +: Solver
  • MakeSymmetryManager() -: Solver +: Solver
  • MakeTabuSearch() : Solver
  • MakeTemporalDisjunction() -: Solver +: Solver
  • MakeTimeLimit() : Solver @@ -772,13 +743,13 @@ : Solver
  • MakeWeightedMaximize() -: Solver +: Solver
  • MakeWeightedMinimize() : Solver
  • MakeWeightedOptimize() -: Solver +: Solver
  • MarkChange() : VarLocalSearchOperator< V, Val, Handler > @@ -797,7 +768,7 @@
  • MergeFrom() : FirstSolutionStrategy -, LocalSearchMetaheuristic +, LocalSearchMetaheuristic
  • MergePartialFromCodedStream() : FirstSolutionStrategy @@ -835,7 +806,7 @@ : IntervalVar
  • MutableElement() -: AssignmentContainer< V, E > +: AssignmentContainer< V, E >
  • MutableElementOrNull() : AssignmentContainer< V, E > diff --git a/docs/cpp_routing/functions_func_n.html b/docs/cpp_routing/functions_func_n.html index 69166a0455..72e6329492 100644 --- a/docs/cpp_routing/functions_func_n.html +++ b/docs/cpp_routing/functions_func_n.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_o.html b/docs/cpp_routing/functions_func_o.html index 46f332bfa9..e5d6e67366 100644 --- a/docs/cpp_routing/functions_func_o.html +++ b/docs/cpp_routing/functions_func_o.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_p.html b/docs/cpp_routing/functions_func_p.html index 41d07fbf3b..a06cd7131e 100644 --- a/docs/cpp_routing/functions_func_p.html +++ b/docs/cpp_routing/functions_func_p.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -229,9 +200,6 @@
  • PropagateDelayed() : Pack
  • -
  • PropagateObjectiveValue() -: IntVarLocalSearchFilter -
  • PropagationBaseObject() : PropagationBaseObject
  • @@ -239,7 +207,7 @@ : PropagationMonitor
  • PROTOBUF_SECTION_VARIABLE() -: TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fenums_2eproto +: TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fenums_2eproto
  • Push() : SimpleRevFIFO< T > diff --git a/docs/cpp_routing/functions_func_r.html b/docs/cpp_routing/functions_func_r.html index 30d7a1a7ad..79713ac314 100644 --- a/docs/cpp_routing/functions_func_r.html +++ b/docs/cpp_routing/functions_func_r.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_s.html b/docs/cpp_routing/functions_func_s.html index f970828abe..9314c0ad16 100644 --- a/docs/cpp_routing/functions_func_s.html +++ b/docs/cpp_routing/functions_func_s.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_t.html b/docs/cpp_routing/functions_func_t.html index e75d20d6d4..59a3973cf5 100644 --- a/docs/cpp_routing/functions_func_t.html +++ b/docs/cpp_routing/functions_func_t.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_u.html b/docs/cpp_routing/functions_func_u.html index f07503b321..b248b285d8 100644 --- a/docs/cpp_routing/functions_func_u.html +++ b/docs/cpp_routing/functions_func_u.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_v.html b/docs/cpp_routing/functions_func_v.html index 88f535eca9..7ce4e425e6 100644 --- a/docs/cpp_routing/functions_func_v.html +++ b/docs/cpp_routing/functions_func_v.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_w.html b/docs/cpp_routing/functions_func_w.html index 9ea455276f..10743e0f0f 100644 --- a/docs/cpp_routing/functions_func_w.html +++ b/docs/cpp_routing/functions_func_w.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_func_~.html b/docs/cpp_routing/functions_func_~.html index 01ce073cf3..2f21235780 100644 --- a/docs/cpp_routing/functions_func_~.html +++ b/docs/cpp_routing/functions_func_~.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_g.html b/docs/cpp_routing/functions_g.html index 5fe93f68dc..35e391ef93 100644 --- a/docs/cpp_routing/functions_g.html +++ b/docs/cpp_routing/functions_g.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_h.html b/docs/cpp_routing/functions_h.html index 1577df483e..607de859a1 100644 --- a/docs/cpp_routing/functions_h.html +++ b/docs/cpp_routing/functions_h.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_i.html b/docs/cpp_routing/functions_i.html index 20898ab4b5..a390360710 100644 --- a/docs/cpp_routing/functions_i.html +++ b/docs/cpp_routing/functions_i.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -212,12 +183,6 @@
  • InitPosition() : PathOperator
  • -
  • injected_objective_value_ -: IntVarLocalSearchFilter -
  • -
  • InjectObjectiveValue() -: IntVarLocalSearchFilter -
  • Insert() : RevImmutableMultiMap< K, V > , RevIntSet< T > diff --git a/docs/cpp_routing/functions_k.html b/docs/cpp_routing/functions_k.html index 1da75680bd..151908b967 100644 --- a/docs/cpp_routing/functions_k.html +++ b/docs/cpp_routing/functions_k.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_l.html b/docs/cpp_routing/functions_l.html index 1d0c9920d5..cd45509cf1 100644 --- a/docs/cpp_routing/functions_l.html +++ b/docs/cpp_routing/functions_l.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_m.html b/docs/cpp_routing/functions_m.html index 2a31c9fe68..7b74a102c5 100644 --- a/docs/cpp_routing/functions_m.html +++ b/docs/cpp_routing/functions_m.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -568,7 +539,7 @@ : Solver
  • MakeNestedOptimize() -: Solver +: Solver
  • MakeNextNeighbor() : IndexPairSwapActiveOperator @@ -643,7 +614,7 @@ : Solver
  • MakePhase() -: Solver +: Solver
  • MakePiecewiseLinearExpr() : Solver @@ -655,7 +626,7 @@ : Solver
  • MakeProd() -: Solver +: Solver
  • MakeRandomLnsOperator() : Solver @@ -673,7 +644,7 @@ : Solver
  • MakeScalProd() -: Solver +: Solver
  • MakeScalProdEquality() : Solver @@ -682,7 +653,7 @@ : Solver
  • MakeScalProdLessOrEqual() -: Solver +: Solver
  • MakeScheduleOrExpedite() : Solver @@ -691,7 +662,7 @@ : Solver
  • MakeSearchLog() -: Solver +: Solver
  • MakeSearchTrace() : Solver @@ -739,7 +710,7 @@ : Solver
  • MakeSum() -: Solver +: Solver
  • MakeSumEquality() : Solver @@ -754,13 +725,13 @@ : Solver
  • MakeSymmetryManager() -: Solver +: Solver
  • MakeTabuSearch() : Solver
  • MakeTemporalDisjunction() -: Solver +: Solver
  • MakeTimeLimit() : Solver diff --git a/docs/cpp_routing/functions_n.html b/docs/cpp_routing/functions_n.html index 9f8ac45aa7..b6f3a9a507 100644 --- a/docs/cpp_routing/functions_n.html +++ b/docs/cpp_routing/functions_n.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_o.html b/docs/cpp_routing/functions_o.html index c0bdbbd02e..854bbbb77b 100644 --- a/docs/cpp_routing/functions_o.html +++ b/docs/cpp_routing/functions_o.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -142,9 +113,6 @@
  • ObjectiveValue() : Assignment
  • -
  • ObjectiveWatcher -: Solver -
  • offset : RoutingDimension::NodePrecedence , Solver::SearchLogParameters diff --git a/docs/cpp_routing/functions_p.html b/docs/cpp_routing/functions_p.html index 0855714789..49207c97b7 100644 --- a/docs/cpp_routing/functions_p.html +++ b/docs/cpp_routing/functions_p.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -280,9 +251,6 @@
  • PropagateDelayed() : Pack
  • -
  • PropagateObjectiveValue() -: IntVarLocalSearchFilter -
  • PropagationBaseObject() : PropagationBaseObject , Solver @@ -291,7 +259,7 @@ : PropagationMonitor
  • PROTOBUF_SECTION_VARIABLE() -: TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fenums_2eproto +: TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fenums_2eproto
  • prototype_ : SolutionCollector diff --git a/docs/cpp_routing/functions_q.html b/docs/cpp_routing/functions_q.html index 1aa5ab8c23..3591248f28 100644 --- a/docs/cpp_routing/functions_q.html +++ b/docs/cpp_routing/functions_q.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_r.html b/docs/cpp_routing/functions_r.html index 59e5ca84ad..3819b3edb3 100644 --- a/docs/cpp_routing/functions_r.html +++ b/docs/cpp_routing/functions_r.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_rela.html b/docs/cpp_routing/functions_rela.html index 61e8eca4d6..7866be2fe9 100644 --- a/docs/cpp_routing/functions_rela.html +++ b/docs/cpp_routing/functions_rela.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_s.html b/docs/cpp_routing/functions_s.html index d98fa8b0fb..9497ffb0cf 100644 --- a/docs/cpp_routing/functions_s.html +++ b/docs/cpp_routing/functions_s.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -657,7 +628,7 @@ , SearchMonitor
  • Solver() -: Solver +: Solver
  • SolverState : Solver diff --git a/docs/cpp_routing/functions_t.html b/docs/cpp_routing/functions_t.html index 7ce5f85d57..6845545f20 100644 --- a/docs/cpp_routing/functions_t.html +++ b/docs/cpp_routing/functions_t.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    diff --git a/docs/cpp_routing/functions_type.html b/docs/cpp_routing/functions_type.html index 9bdf1bcff1..98956b647c 100644 --- a/docs/cpp_routing/functions_type.html +++ b/docs/cpp_routing/functions_type.html @@ -12,47 +12,18 @@ -
    -

    Reference

    -

    C++

    +

    C++ Reference

    -

    Python

    - -

    DotNET

    - -

    Java Documentation

    -
    @@ -96,7 +67,6 @@
  • g
  • i
  • n
  • -
  • o
  • p
  • s
  • t
  • @@ -189,13 +159,6 @@ -

    - o -

      -
    • ObjectiveWatcher -: Solver -
    • -
    - -

    - p -