From cd8092579faeeb860e56eddfff4ea6e1d3e1b890 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Fri, 12 Jul 2019 11:43:12 -0700 Subject: [PATCH] polish doc --- docs/cpp_algorithms/annotated.html | 18 +- docs/cpp_algorithms/annotated_dup.js | 4 + docs/cpp_algorithms/classes.html | 18 +- ...esearch_1_1BaseKnapsackSolver-members.html | 22 +- ...tions__research_1_1BaseKnapsackSolver.html | 49 +- ...rations__research_1_1BaseKnapsackSolver.js | 10 + ..._1_1BaseKnapsackSolver__inherit__graph.map | 4 - ..._1_1BaseKnapsackSolver__inherit__graph.md5 | 1 - ..._1_1BaseKnapsackSolver__inherit__graph.png | Bin 6428 -> 0 bytes ...arch_1_1DenseDoublyLinkedList-members.html | 22 +- ...ns__research_1_1DenseDoublyLinkedList.html | 34 +- ...ions__research_1_1DenseDoublyLinkedList.js | 8 + ..._research_1_1DynamicPartition-members.html | 22 +- ...rations__research_1_1DynamicPartition.html | 34 +- ...perations__research_1_1DynamicPartition.js | 22 + ...esearch_1_1DynamicPermutation-members.html | 22 +- ...tions__research_1_1DynamicPermutation.html | 34 +- ...rations__research_1_1DynamicPermutation.js | 14 + ...search_1_1GraphSymmetryFinder-members.html | 22 +- ...ions__research_1_1GraphSymmetryFinder.html | 34 +- ...ations__research_1_1GraphSymmetryFinder.js | 9 + ...1_1KnapsackCapacityPropagator-members.html | 22 +- ...esearch_1_1KnapsackCapacityPropagator.html | 68 +- ..._research_1_1KnapsackCapacityPropagator.js | 20 + ...napsackCapacityPropagator__coll__graph.map | 4 - ...napsackCapacityPropagator__coll__graph.md5 | 1 - ...napsackCapacityPropagator__coll__graph.png | Bin 6556 -> 0 bytes ...sackCapacityPropagator__inherit__graph.map | 4 - ...sackCapacityPropagator__inherit__graph.md5 | 1 - ...sackCapacityPropagator__inherit__graph.png | Bin 6556 -> 0 bytes ...arch_1_1KnapsackGenericSolver-members.html | 22 +- ...ns__research_1_1KnapsackGenericSolver.html | 60 +- ...ions__research_1_1KnapsackGenericSolver.js | 12 + ..._1_1KnapsackGenericSolver__coll__graph.map | 4 - ..._1_1KnapsackGenericSolver__coll__graph.md5 | 1 - ..._1_1KnapsackGenericSolver__coll__graph.png | Bin 6348 -> 0 bytes ...1KnapsackGenericSolver__inherit__graph.map | 4 - ...1KnapsackGenericSolver__inherit__graph.md5 | 1 - ...1KnapsackGenericSolver__inherit__graph.png | Bin 6348 -> 0 bytes ...esearch_1_1KnapsackPropagator-members.html | 22 +- ...tions__research_1_1KnapsackPropagator.html | 57 +- ...rations__research_1_1KnapsackPropagator.js | 20 + ..._1_1KnapsackPropagator__inherit__graph.map | 4 - ..._1_1KnapsackPropagator__inherit__graph.md5 | 1 - ..._1_1KnapsackPropagator__inherit__graph.png | Bin 6519 -> 0 bytes ...esearch_1_1KnapsackSearchNode-members.html | 22 +- ...tions__research_1_1KnapsackSearchNode.html | 52 +- ...rations__research_1_1KnapsackSearchNode.js | 13 + ...esearch_1_1KnapsackSearchPath-members.html | 22 +- ...tions__research_1_1KnapsackSearchPath.html | 40 +- ...rations__research_1_1KnapsackSearchPath.js | 9 + ...s__research_1_1KnapsackSolver-members.html | 22 +- ...perations__research_1_1KnapsackSolver.html | 75 +- ...soperations__research_1_1KnapsackSolver.js | 22 + ...ns__research_1_1KnapsackState-members.html | 22 +- ...operations__research_1_1KnapsackState.html | 40 +- ...ssoperations__research_1_1KnapsackState.js | 9 + ..._research_1_1MergingPartition-members.html | 22 +- ...rations__research_1_1MergingPartition.html | 34 +- ...perations__research_1_1MergingPartition.js | 15 + ...research_1_1SparsePermutation-members.html | 22 +- ...ations__research_1_1SparsePermutation.html | 34 +- ...erations__research_1_1SparsePermutation.js | 14 + .../dense__doubly__linked__list_8h.html | 41 +- .../dense__doubly__linked__list_8h__incl.map | 20 +- .../dense__doubly__linked__list_8h__incl.png | Bin 30722 -> 23215 bytes ...dense__doubly__linked__list_8h_source.html | 21 +- .../dir_80dda7a75b0dfcf996988638a63eb03a.html | 21 +- .../dir_a7cc1eeded8f693d0da6c729bc88c45a.html | 21 +- .../cpp_algorithms/dynamic__partition_8h.html | 33 +- .../dynamic__partition_8h__dep__incl.map | 4 +- .../dynamic__partition_8h__dep__incl.png | Bin 5539 -> 4557 bytes .../dynamic__partition_8h__incl.map | 8 +- .../dynamic__partition_8h__incl.png | Bin 9036 -> 6475 bytes .../dynamic__partition_8h_source.html | 21 +- .../dynamic__permutation_8h.html | 35 +- .../dynamic__permutation_8h__dep__incl.map | 4 +- .../dynamic__permutation_8h__dep__incl.png | Bin 5855 -> 4802 bytes .../dynamic__permutation_8h__incl.map | 10 +- .../dynamic__permutation_8h__incl.png | Bin 11874 -> 8507 bytes .../dynamic__permutation_8h_source.html | 21 +- docs/cpp_algorithms/files.html | 17 + docs/cpp_algorithms/files_dup.js | 23 + .../find__graph__symmetries_8h.html | 89 +- .../find__graph__symmetries_8h__incl.map | 68 +- .../find__graph__symmetries_8h__incl.png | Bin 151112 -> 115251 bytes .../find__graph__symmetries_8h_source.html | 21 +- docs/cpp_algorithms/functions.html | 18 +- docs/cpp_algorithms/functions_enum.html | 18 +- docs/cpp_algorithms/functions_eval.html | 18 +- docs/cpp_algorithms/functions_func.html | 18 +- docs/cpp_algorithms/functions_type.html | 18 +- docs/cpp_algorithms/functions_vars.html | 18 +- docs/cpp_algorithms/graph_legend.html | 17 + docs/cpp_algorithms/graph_legend.png | Bin 26272 -> 20323 bytes docs/cpp_algorithms/hierarchy.html | 18 +- docs/cpp_algorithms/hungarian_8h.html | 27 +- docs/cpp_algorithms/hungarian_8h.js | 5 + docs/cpp_algorithms/hungarian_8h__incl.map | 6 +- docs/cpp_algorithms/hungarian_8h__incl.png | Bin 7772 -> 6580 bytes docs/cpp_algorithms/hungarian_8h_source.html | 21 +- docs/cpp_algorithms/index.html | 17 + docs/cpp_algorithms/inherit_graph_15.map | 2 +- docs/cpp_algorithms/inherit_graph_15.png | Bin 4527 -> 3033 bytes docs/cpp_algorithms/inherit_graph_3.map | 2 +- docs/cpp_algorithms/inherit_graph_3.png | Bin 4892 -> 3329 bytes docs/cpp_algorithms/inherit_graph_5.map | 2 +- docs/cpp_algorithms/inherit_graph_5.png | Bin 4344 -> 3045 bytes docs/cpp_algorithms/inherits.html | 24 +- docs/cpp_algorithms/knapsack__solver_8h.html | 43 +- docs/cpp_algorithms/knapsack__solver_8h.js | 14 + .../knapsack__solver_8h__incl.map | 22 +- .../knapsack__solver_8h__incl.png | Bin 37092 -> 30803 bytes .../knapsack__solver_8h_source.html | 139 +- docs/cpp_algorithms/menudata.js | 1 - docs/cpp_algorithms/namespacemembers.html | 17 + .../cpp_algorithms/namespacemembers_func.html | 17 + .../cpp_algorithms/namespacemembers_type.html | 17 + .../namespaceoperations__research.html | 19 +- .../namespaceoperations__research.js | 19 + docs/cpp_algorithms/namespaces.html | 17 + docs/cpp_algorithms/namespaces_dup.js | 4 + docs/cpp_algorithms/navtree.css | 146 ++ docs/cpp_algorithms/navtree.js | 540 +++++++ docs/cpp_algorithms/navtreedata.js | 59 + docs/cpp_algorithms/navtreeindex0.js | 232 +++ docs/cpp_algorithms/pages.html | 48 - docs/cpp_algorithms/resize.js | 136 ++ .../sparse__permutation_8h.html | 29 +- .../sparse__permutation_8h__incl.map | 8 +- .../sparse__permutation_8h__incl.png | Bin 9155 -> 6466 bytes .../sparse__permutation_8h_source.html | 21 +- ...amicPartition_1_1IterablePart-members.html | 22 +- ...h_1_1DynamicPartition_1_1IterablePart.html | 34 +- ...rch_1_1DynamicPartition_1_1IterablePart.js | 12 + ...esearch_1_1KnapsackAssignment-members.html | 22 +- ...tions__research_1_1KnapsackAssignment.html | 40 +- ...rations__research_1_1KnapsackAssignment.js | 6 + ...ons__research_1_1KnapsackItem-members.html | 22 +- ...toperations__research_1_1KnapsackItem.html | 44 +- ...uctoperations__research_1_1KnapsackItem.js | 8 + ...SparsePermutation_1_1Iterator-members.html | 22 +- ...arch_1_1SparsePermutation_1_1Iterator.html | 34 +- ...search_1_1SparsePermutation_1_1Iterator.js | 12 + docs/cpp_algorithms/todo.html | 70 - docs/java.tag | 49 + docs/java/CpSolver_8java_source.html | 4 +- docs/java/RoutingModel_8java_source.html | 267 ++-- docs/java/RoutingParameters_8java_source.html | 2 +- ...earchParametersOrBuilder_8java_source.html | 7 +- .../RoutingSearchParameters_8java_source.html | 927 ++++++------ .../SatParametersOrBuilder_8java_source.html | 2 +- docs/java/SatParameters_8java_source.html | 1296 ++++++++--------- docs/java/annotated.html | 1 - ...1algorithms_1_1KnapsackSolver-members.html | 1 - ...tools_1_1algorithms_1_1KnapsackSolver.html | 3 +- ...onstraintsolver_1_1Assignment-members.html | 1 - ...ols_1_1constraintsolver_1_1Assignment.html | 25 +- ...ntsolver_1_1AssignmentElement-members.html | 1 - ...constraintsolver_1_1AssignmentElement.html | 16 +- ...ver_1_1AssignmentIntContainer-members.html | 1 - ...raintsolver_1_1AssignmentIntContainer.html | 3 +- ..._1AssignmentIntervalContainer-members.html | 1 - ...solver_1_1AssignmentIntervalContainer.html | 3 +- ..._1AssignmentSequenceContainer-members.html | 1 - ...solver_1_1AssignmentSequenceContainer.html | 3 +- ...nstraintsolver_1_1BaseIntExpr-members.html | 1 - ...ls_1_1constraintsolver_1_1BaseIntExpr.html | 27 +- ..._1constraintsolver_1_1BaseLns-members.html | 1 - ...rtools_1_1constraintsolver_1_1BaseLns.html | 29 +- ...onstraintsolver_1_1BaseObject-members.html | 1 - ...ols_1_1constraintsolver_1_1BaseObject.html | 61 +- ...raintsolver_1_1BasePathFilter-members.html | 1 - ...1_1constraintsolver_1_1BasePathFilter.html | 27 +- ...onstraintsolver_1_1BooleanVar-members.html | 1 - ...ols_1_1constraintsolver_1_1BooleanVar.html | 29 +- ...solver_1_1CPFeasibilityFilter-members.html | 1 - ...nstraintsolver_1_1CPFeasibilityFilter.html | 27 +- ...raintsolver_1_1CastConstraint-members.html | 1 - ...1_1constraintsolver_1_1CastConstraint.html | 27 +- ...nstraintsolver_1_1ChangeValue-members.html | 1 - ...ls_1_1constraintsolver_1_1ChangeValue.html | 29 +- ...ditionFilteredDecisionBuilder-members.html | 1 - ...eapestAdditionFilteredDecisionBuilder.html | 31 +- ...ertionFilteredDecisionBuilder-members.html | 1 - ...apestInsertionFilteredDecisionBuilder.html | 31 +- ...ofidesFilteredDecisionBuilder-members.html | 1 - ..._1ChristofidesFilteredDecisionBuilder.html | 29 +- ...ditionFilteredDecisionBuilder-members.html | 1 - ...eapestAdditionFilteredDecisionBuilder.html | 31 +- ...onstraintsolver_1_1Constraint-members.html | 1 - ...ols_1_1constraintsolver_1_1Constraint.html | 30 +- ...1_1ConstraintSolverParameters-members.html | 1 - ...tsolver_1_1ConstraintSolverParameters.html | 27 +- ...ntSolverParameters_1_1Builder-members.html | 1 - ...ConstraintSolverParameters_1_1Builder.html | 27 +- ...1constraintsolver_1_1Decision-members.html | 1 - ...tools_1_1constraintsolver_1_1Decision.html | 23 +- ...aintsolver_1_1DecisionBuilder-members.html | 1 - ..._1constraintsolver_1_1DecisionBuilder.html | 36 +- ...aintsolver_1_1DecisionVisitor-members.html | 1 - ..._1constraintsolver_1_1DecisionVisitor.html | 24 +- ...ver_1_1DefaultPhaseParameters-members.html | 1 - ...raintsolver_1_1DefaultPhaseParameters.html | 3 +- ..._1_1constraintsolver_1_1Demon-members.html | 1 - ...1ortools_1_1constraintsolver_1_1Demon.html | 23 +- ...lver_1_1DisjunctiveConstraint-members.html | 1 - ...traintsolver_1_1DisjunctiveConstraint.html | 27 +- ...ditionFilteredDecisionBuilder-members.html | 1 - ...eapestAdditionFilteredDecisionBuilder.html | 31 +- ...lver_1_1FirstSolutionStrategy-members.html | 1 - ...traintsolver_1_1FirstSolutionStrategy.html | 27 +- ...stSolutionStrategy_1_1Builder-members.html | 1 - ...r_1_1FirstSolutionStrategy_1_1Builder.html | 27 +- ...ertionFilteredDecisionBuilder-members.html | 1 - ...apestInsertionFilteredDecisionBuilder.html | 31 +- ...GlobalVehicleBreaksConstraint-members.html | 1 - ...lver_1_1GlobalVehicleBreaksConstraint.html | 27 +- ..._1constraintsolver_1_1IntExpr-members.html | 1 - ...rtools_1_1constraintsolver_1_1IntExpr.html | 28 +- ...nstraintsolver_1_1IntTupleSet-members.html | 1 - ...ls_1_1constraintsolver_1_1IntTupleSet.html | 3 +- ...1_1constraintsolver_1_1IntVar-members.html | 1 - ...ortools_1_1constraintsolver_1_1IntVar.html | 28 +- ...traintsolver_1_1IntVarElement-members.html | 1 - ..._1_1constraintsolver_1_1IntVarElement.html | 23 +- ...IntVarFilteredDecisionBuilder-members.html | 1 - ...lver_1_1IntVarFilteredDecisionBuilder.html | 36 +- ...raintsolver_1_1IntVarIterator-members.html | 1 - ...1_1constraintsolver_1_1IntVarIterator.html | 23 +- ...er_1_1IntVarLocalSearchFilter-members.html | 1 - ...aintsolver_1_1IntVarLocalSearchFilter.html | 27 +- ...r_1_1IntVarLocalSearchHandler-members.html | 1 - ...intsolver_1_1IntVarLocalSearchHandler.html | 3 +- ..._1_1IntVarLocalSearchOperator-members.html | 1 - ...ntsolver_1_1IntVarLocalSearchOperator.html | 31 +- ...arLocalSearchOperatorTemplate-members.html | 1 - ..._1_1IntVarLocalSearchOperatorTemplate.html | 30 +- ...nstraintsolver_1_1IntervalVar-members.html | 1 - ...ls_1_1constraintsolver_1_1IntervalVar.html | 25 +- ...tsolver_1_1IntervalVarElement-members.html | 1 - ...onstraintsolver_1_1IntervalVarElement.html | 23 +- ...solver_1_1JavaDecisionBuilder-members.html | 1 - ...nstraintsolver_1_1JavaDecisionBuilder.html | 25 +- ...ertionFilteredDecisionBuilder-members.html | 1 - ...apestInsertionFilteredDecisionBuilder.html | 31 +- ...ntsolver_1_1LocalSearchFilter-members.html | 1 - ...constraintsolver_1_1LocalSearchFilter.html | 26 +- ...r_1_1LocalSearchMetaheuristic-members.html | 1 - ...intsolver_1_1LocalSearchMetaheuristic.html | 27 +- ...earchMetaheuristic_1_1Builder-members.html | 1 - ..._1LocalSearchMetaheuristic_1_1Builder.html | 27 +- ...tsolver_1_1LocalSearchMonitor-members.html | 1 - ...onstraintsolver_1_1LocalSearchMonitor.html | 25 +- ...solver_1_1LocalSearchOperator-members.html | 1 - ...nstraintsolver_1_1LocalSearchOperator.html | 31 +- ...1_1LocalSearchPhaseParameters-members.html | 1 - ...tsolver_1_1LocalSearchPhaseParameters.html | 3 +- ...onstraintsolver_1_1ModelCache-members.html | 1 - ...ols_1_1constraintsolver_1_1ModelCache.html | 3 +- ...straintsolver_1_1ModelVisitor-members.html | 1 - ...s_1_1constraintsolver_1_1ModelVisitor.html | 23 +- ...nstraintsolver_1_1OptimizeVar-members.html | 1 - ...ls_1_1constraintsolver_1_1OptimizeVar.html | 25 +- ...s_1_1constraintsolver_1_1Pack-members.html | 1 - ..._1ortools_1_1constraintsolver_1_1Pack.html | 27 +- ...avingsFilteredDecisionBuilder-members.html | 1 - ...arallelSavingsFilteredDecisionBuilder.html | 31 +- ...straintsolver_1_1PathOperator-members.html | 1 - ...s_1_1constraintsolver_1_1PathOperator.html | 30 +- ...PathWithPreviousNodesOperator-members.html | 1 - ...lver_1_1PathWithPreviousNodesOperator.html | 31 +- ...lver_1_1PropagationBaseObject-members.html | 1 - ...traintsolver_1_1PropagationBaseObject.html | 36 +- ...tsolver_1_1PropagationMonitor-members.html | 1 - ...onstraintsolver_1_1PropagationMonitor.html | 25 +- ...straintsolver_1_1RegularLimit-members.html | 1 - ...s_1_1constraintsolver_1_1RegularLimit.html | 27 +- ...ver_1_1RegularLimitParameters-members.html | 1 - ...raintsolver_1_1RegularLimitParameters.html | 27 +- ...larLimitParameters_1_1Builder-members.html | 1 - ..._1_1RegularLimitParameters_1_1Builder.html | 27 +- ..._1constraintsolver_1_1RevBool-members.html | 1 - ...rtools_1_1constraintsolver_1_1RevBool.html | 3 +- ...onstraintsolver_1_1RevInteger-members.html | 1 - ...ols_1_1constraintsolver_1_1RevInteger.html | 3 +- ..._1constraintsolver_1_1RevLong-members.html | 1 - ...rtools_1_1constraintsolver_1_1RevLong.html | 3 +- ...tsolver_1_1RevPartialSequence-members.html | 1 - ...onstraintsolver_1_1RevPartialSequence.html | 3 +- ...intsolver_1_1RoutingDimension-members.html | 1 - ...1constraintsolver_1_1RoutingDimension.html | 3 +- ...straintsolver_1_1RoutingEnums-members.html | 1 - ...s_1_1constraintsolver_1_1RoutingEnums.html | 3 +- ...outingFilteredDecisionBuilder-members.html | 1 - ...ver_1_1RoutingFilteredDecisionBuilder.html | 37 +- ...solver_1_1RoutingIndexManager-members.html | 1 - ...nstraintsolver_1_1RoutingIndexManager.html | 3 +- ...straintsolver_1_1RoutingModel-members.html | 86 +- ...s_1_1constraintsolver_1_1RoutingModel.html | 299 ++-- ...ver_1_1RoutingModelParameters-members.html | 1 - ...raintsolver_1_1RoutingModelParameters.html | 27 +- ...ingModelParameters_1_1Builder-members.html | 1 - ..._1_1RoutingModelParameters_1_1Builder.html | 27 +- ...solver_1_1RoutingModelVisitor-members.html | 1 - ...nstraintsolver_1_1RoutingModelVisitor.html | 23 +- ...ntsolver_1_1RoutingParameters-members.html | 1 - ...constraintsolver_1_1RoutingParameters.html | 3 +- ...er_1_1RoutingSearchParameters-members.html | 69 +- ...aintsolver_1_1RoutingSearchParameters.html | 262 ++-- ...ngSearchParameters_1_1Builder-members.html | 118 +- ...1_1RoutingSearchParameters_1_1Builder.html | 365 +++-- ...Neigh1ddde2979ba9541ef1853d37306a859e.html | 1 - ...alSearchNeighborhoodOperators-members.html | 1 - ...s_1_1LocalSearchNeighborhoodOperators.html | 245 ++-- ...earchNeighborhoodOperators_1_1Builder.html | 327 ++--- ...avingsFilteredDecisionBuilder-members.html | 1 - ...ver_1_1SavingsFilteredDecisionBuilder.html | 31 +- ...nBuilder_1_1SavingsParameters-members.html | 1 - ...dDecisionBuilder_1_1SavingsParameters.html | 3 +- ...nstraintsolver_1_1SearchLimit-members.html | 1 - ...ls_1_1constraintsolver_1_1SearchLimit.html | 26 +- ...solver_1_1SearchLimitProtobuf-members.html | 1 - ...nstraintsolver_1_1SearchLimitProtobuf.html | 3 +- ...constraintsolver_1_1SearchLog-members.html | 1 - ...ools_1_1constraintsolver_1_1SearchLog.html | 25 +- ...traintsolver_1_1SearchMonitor-members.html | 1 - ..._1_1constraintsolver_1_1SearchMonitor.html | 30 +- ...nstraintsolver_1_1SequenceVar-members.html | 1 - ...ls_1_1constraintsolver_1_1SequenceVar.html | 25 +- ...tsolver_1_1SequenceVarElement-members.html | 1 - ...onstraintsolver_1_1SequenceVarElement.html | 23 +- ...SequenceVarLocalSearchHandler-members.html | 1 - ...lver_1_1SequenceVarLocalSearchHandler.html | 3 +- ...equenceVarLocalSearchOperator-members.html | 1 - ...ver_1_1SequenceVarLocalSearchOperator.html | 27 +- ...arLocalSearchOperatorTemplate-members.html | 1 - ...equenceVarLocalSearchOperatorTemplate.html | 26 +- ...avingsFilteredDecisionBuilder-members.html | 1 - ...uentialSavingsFilteredDecisionBuilder.html | 31 +- ...ntsolver_1_1SolutionCollector-members.html | 1 - ...constraintsolver_1_1SolutionCollector.html | 25 +- ...straintsolver_1_1SolutionPool-members.html | 1 - ...s_1_1constraintsolver_1_1SolutionPool.html | 23 +- ...1_1constraintsolver_1_1Solver-members.html | 1 - ...ortools_1_1constraintsolver_1_1Solver.html | 3 +- ...intsolver_1_1SolverParameters-members.html | 1 - ...1constraintsolver_1_1SolverParameters.html | 3 +- ...er_1_1Solver_1_1FailException-members.html | 1 - ...aintsolver_1_1Solver_1_1FailException.html | 23 +- ..._1_1Solver_1_1IntegerCastInfo-members.html | 1 - ...ntsolver_1_1Solver_1_1IntegerCastInfo.html | 3 +- ...aintsolver_1_1SymmetryBreaker-members.html | 1 - ..._1constraintsolver_1_1SymmetryBreaker.html | 25 +- ...1_1TypeIncompatibilityChecker-members.html | 1 - ...tsolver_1_1TypeIncompatibilityChecker.html | 23 +- ...ver_1_1TypeRegulationsChecker-members.html | 1 - ...raintsolver_1_1TypeRegulationsChecker.html | 15 +- ..._1_1TypeRegulationsConstraint-members.html | 1 - ...ntsolver_1_1TypeRegulationsConstraint.html | 27 +- ...ver_1_1TypeRequirementChecker-members.html | 1 - ...raintsolver_1_1TypeRequirementChecker.html | 23 +- ...1graph_1_1LinearSumAssignment-members.html | 1 - ...tools_1_1graph_1_1LinearSumAssignment.html | 3 +- ..._1ortools_1_1graph_1_1MaxFlow-members.html | 1 - ...google_1_1ortools_1_1graph_1_1MaxFlow.html | 3 +- ...tools_1_1graph_1_1MinCostFlow-members.html | 1 - ...le_1_1ortools_1_1graph_1_1MinCostFlow.html | 23 +- ...s_1_1graph_1_1MinCostFlowBase-members.html | 1 - ..._1ortools_1_1graph_1_1MinCostFlowBase.html | 14 +- ...1linearsolver_1_1LinearSolver-members.html | 1 - ...tools_1_1linearsolver_1_1LinearSolver.html | 3 +- ...1linearsolver_1_1MPConstraint-members.html | 1 - ...tools_1_1linearsolver_1_1MPConstraint.html | 3 +- ...arsolver_1_1MPConstraintProto-members.html | 1 - ..._1_1linearsolver_1_1MPConstraintProto.html | 27 +- ...1MPConstraintProto_1_1Builder-members.html | 1 - ...olver_1_1MPConstraintProto_1_1Builder.html | 27 +- ...r_1_1MPGeneralConstraintProto-members.html | 1 - ...earsolver_1_1MPGeneralConstraintProto.html | 27 +- ...ralConstraintProto_1_1Builder-members.html | 1 - ..._1MPGeneralConstraintProto_1_1Builder.html | 27 +- ...lver_1_1MPIndicatorConstraint-members.html | 1 - ...linearsolver_1_1MPIndicatorConstraint.html | 27 +- ...ndicatorConstraint_1_1Builder-members.html | 1 - ...r_1_1MPIndicatorConstraint_1_1Builder.html | 27 +- ...olver_1_1MPModelExportOptions-members.html | 1 - ...1linearsolver_1_1MPModelExportOptions.html | 3 +- ...1linearsolver_1_1MPModelProto-members.html | 1 - ...tools_1_1linearsolver_1_1MPModelProto.html | 27 +- ...er_1_1MPModelProto_1_1Builder-members.html | 1 - ...nearsolver_1_1MPModelProto_1_1Builder.html | 27 +- ...inearsolver_1_1MPModelRequest-members.html | 1 - ...ols_1_1linearsolver_1_1MPModelRequest.html | 27 +- ..._1_1MPModelRequest_1_1Builder-members.html | 1 - ...arsolver_1_1MPModelRequest_1_1Builder.html | 27 +- ..._1linearsolver_1_1MPObjective-members.html | 1 - ...rtools_1_1linearsolver_1_1MPObjective.html | 3 +- ...rsolver_1_1MPSolutionResponse-members.html | 1 - ...1_1linearsolver_1_1MPSolutionResponse.html | 27 +- ...MPSolutionResponse_1_1Builder-members.html | 1 - ...lver_1_1MPSolutionResponse_1_1Builder.html | 27 +- ...s_1_1linearsolver_1_1MPSolver-members.html | 1 - ..._1ortools_1_1linearsolver_1_1MPSolver.html | 3 +- ...r_1_1MPSolverCommonParameters-members.html | 1 - ...earsolver_1_1MPSolverCommonParameters.html | 27 +- ...erCommonParameters_1_1Builder-members.html | 1 - ..._1MPSolverCommonParameters_1_1Builder.html | 27 +- ...rsolver_1_1MPSolverParameters-members.html | 1 - ...1_1linearsolver_1_1MPSolverParameters.html | 3 +- ...nearsolver_1_1MPSosConstraint-members.html | 1 - ...ls_1_1linearsolver_1_1MPSosConstraint.html | 27 +- ...1_1MPSosConstraint_1_1Builder-members.html | 1 - ...rsolver_1_1MPSosConstraint_1_1Builder.html | 27 +- ...1_1linearsolver_1_1MPVariable-members.html | 1 - ...ortools_1_1linearsolver_1_1MPVariable.html | 3 +- ...nearsolver_1_1MPVariableProto-members.html | 1 - ...ls_1_1linearsolver_1_1MPVariableProto.html | 27 +- ...1_1MPVariableProto_1_1Builder-members.html | 1 - ...rsolver_1_1MPVariableProto_1_1Builder.html | 27 +- ...inearsolver_1_1OptionalDouble-members.html | 1 - ...ols_1_1linearsolver_1_1OptionalDouble.html | 27 +- ..._1_1OptionalDouble_1_1Builder-members.html | 1 - ...arsolver_1_1OptionalDouble_1_1Builder.html | 27 +- ..._1_1PartialVariableAssignment-members.html | 1 - ...arsolver_1_1PartialVariableAssignment.html | 27 +- ...VariableAssignment_1_1Builder-members.html | 1 - ...1PartialVariableAssignment_1_1Builder.html | 27 +- ...ver_1_1main__research__linear__solver.html | 3 +- ...__research__linear__solverJNI-members.html | 1 - ..._1_1main__research__linear__solverJNI.html | 3 +- ...1ortools_1_1sat_1_1Constraint-members.html | 1 - ...oogle_1_1ortools_1_1sat_1_1Constraint.html | 3 +- ..._1_1ortools_1_1sat_1_1CpModel-members.html | 1 - ..._1google_1_1ortools_1_1sat_1_1CpModel.html | 3 +- ...rtools_1_1sat_1_1CpModelProto-members.html | 1 - ...gle_1_1ortools_1_1sat_1_1CpModelProto.html | 25 +- ...at_1_1CpModelProto_1_1Builder-members.html | 1 - ...ols_1_1sat_1_1CpModelProto_1_1Builder.html | 25 +- ...del_1_1MismatchedArrayLengths-members.html | 1 - ..._1_1CpModel_1_1MismatchedArrayLengths.html | 25 +- ...sat_1_1CpModel_1_1WrongLength-members.html | 1 - ...ools_1_1sat_1_1CpModel_1_1WrongLength.html | 25 +- ...1_1ortools_1_1sat_1_1CpSolver-members.html | 1 - ...1google_1_1ortools_1_1sat_1_1CpSolver.html | 3 +- ...t_1_1CpSolverSolutionCallback-members.html | 1 - ...ls_1_1sat_1_1CpSolverSolutionCallback.html | 23 +- ...e_1_1ortools_1_1sat_1_1IntVar-members.html | 1 - ...1_1google_1_1ortools_1_1sat_1_1IntVar.html | 25 +- ...ortools_1_1sat_1_1IntervalVar-members.html | 1 - ...ogle_1_1ortools_1_1sat_1_1IntervalVar.html | 3 +- ...tools_1_1sat_1_1SatParameters-members.html | 1 - ...le_1_1ortools_1_1sat_1_1SatParameters.html | 377 +++-- ...t_1_1SatParameters_1_1Builder-members.html | 1 - ...ls_1_1sat_1_1SatParameters_1_1Builder.html | 1021 +++++++------ ..._1_1ortools_1_1util_1_1Domain-members.html | 1 - ..._1google_1_1ortools_1_1util_1_1Domain.html | 3 +- ..._1_1OptionalBooleanOuterClass-members.html | 1 - ..._1_1util_1_1OptionalBooleanOuterClass.html | 3 +- ...1_1SortedDisjointIntervalList-members.html | 1 - ...1_1util_1_1SortedDisjointIntervalList.html | 3 +- docs/java/classes.html | 1 - ...1KnapsackSolver_1_1SolverType-members.html | 1 - ...ithms_1_1KnapsackSolver_1_1SolverType.html | 3 +- ...arameters_1_1TrailCompression-members.html | 1 - ...tSolverParameters_1_1TrailCompression.html | 23 +- ...irstSolutionStrategy_1_1Value-members.html | 1 - ...ver_1_1FirstSolutionStrategy_1_1Value.html | 23 +- ...lSearchMetaheuristic_1_1Value-members.html | 1 - ..._1_1LocalSearchMetaheuristic_1_1Value.html | 23 +- ...LinearSumAssignment_1_1Status-members.html | 1 - ...raph_1_1LinearSumAssignment_1_1Status.html | 3 +- ...1_1graph_1_1MaxFlow_1_1Status-members.html | 1 - ...ortools_1_1graph_1_1MaxFlow_1_1Status.html | 3 +- ..._1_1MinCostFlowBase_1_1Status-members.html | 1 - ...1_1graph_1_1MinCostFlowBase_1_1Status.html | 3 +- ...roto_1_1GeneralConstraintCase-members.html | 1 - ...straintProto_1_1GeneralConstraintCase.html | 23 +- ...1MPModelRequest_1_1SolverType-members.html | 1 - ...olver_1_1MPModelRequest_1_1SolverType.html | 23 +- ...rameters_1_1LPAlgorithmValues-members.html | 1 - ...CommonParameters_1_1LPAlgorithmValues.html | 23 +- ...lverParameters_1_1DoubleParam-members.html | 1 - ..._1_1MPSolverParameters_1_1DoubleParam.html | 3 +- ...eters_1_1IncrementalityValues-members.html | 1 - ...verParameters_1_1IncrementalityValues.html | 3 +- ...verParameters_1_1IntegerParam-members.html | 1 - ...1_1MPSolverParameters_1_1IntegerParam.html | 3 +- ...rameters_1_1LpAlgorithmValues-members.html | 1 - ...SolverParameters_1_1LpAlgorithmValues.html | 3 +- ...rParameters_1_1PresolveValues-members.html | 1 - ...1MPSolverParameters_1_1PresolveValues.html | 3 +- ...erParameters_1_1ScalingValues-members.html | 1 - ..._1MPSolverParameters_1_1ScalingValues.html | 3 +- ...ver_1_1MPSolverResponseStatus-members.html | 1 - ...inearsolver_1_1MPSolverResponseStatus.html | 23 +- ...er_1_1MPSolver_1_1BasisStatus-members.html | 1 - ...nearsolver_1_1MPSolver_1_1BasisStatus.html | 3 +- ...er_1_1OptimizationProblemType-members.html | 1 - ..._1MPSolver_1_1OptimizationProblemType.html | 3 +- ...r_1_1MPSolver_1_1ResultStatus-members.html | 1 - ...earsolver_1_1MPSolver_1_1ResultStatus.html | 3 +- ...er_1_1MPSosConstraint_1_1Type-members.html | 1 - ...nearsolver_1_1MPSosConstraint_1_1Type.html | 23 +- ..._1_1BinaryMinizationAlgorithm-members.html | 1 - ...rameters_1_1BinaryMinizationAlgorithm.html | 23 +- ...tParameters_1_1ClauseOrdering-members.html | 1 - ...at_1_1SatParameters_1_1ClauseOrdering.html | 23 +- ...arameters_1_1ClauseProtection-members.html | 1 - ..._1_1SatParameters_1_1ClauseProtection.html | 23 +- ...ConflictMinimizationAlgorithm-members.html | 1 - ...ters_1_1ConflictMinimizationAlgorithm.html | 23 +- ...ters_1_1MaxSatAssumptionOrder-members.html | 1 - ...atParameters_1_1MaxSatAssumptionOrder.html | 23 +- ...MaxSatStratificationAlgorithm-members.html | 1 - ...ters_1_1MaxSatStratificationAlgorithm.html | 23 +- ..._1_1SatParameters_1_1Polarity-members.html | 1 - ...s_1_1sat_1_1SatParameters_1_1Polarity.html | 23 +- ...arameters_1_1RestartAlgorithm-members.html | 1 - ..._1_1SatParameters_1_1RestartAlgorithm.html | 23 +- ...Parameters_1_1SearchBranching-members.html | 1 - ...t_1_1SatParameters_1_1SearchBranching.html | 23 +- ...atParameters_1_1VariableOrder-members.html | 1 - ...sat_1_1SatParameters_1_1VariableOrder.html | 23 +- ...ls_1_1util_1_1OptionalBoolean-members.html | 1 - ...1_1ortools_1_1util_1_1OptionalBoolean.html | 23 +- docs/java/functions.html | 1 - docs/java/functions_b.html | 1 - docs/java/functions_c.html | 8 +- docs/java/functions_d.html | 1 - docs/java/functions_e.html | 1 - docs/java/functions_f.html | 1 - docs/java/functions_func.html | 1 - docs/java/functions_func_b.html | 1 - docs/java/functions_func_c.html | 8 +- docs/java/functions_func_d.html | 1 - docs/java/functions_func_e.html | 1 - docs/java/functions_func_f.html | 1 - docs/java/functions_func_g.html | 8 +- docs/java/functions_func_h.html | 1 - docs/java/functions_func_i.html | 1 - docs/java/functions_func_k.html | 1 - docs/java/functions_func_l.html | 1 - docs/java/functions_func_m.html | 1 - docs/java/functions_func_n.html | 1 - docs/java/functions_func_o.html | 1 - docs/java/functions_func_p.html | 1 - docs/java/functions_func_r.html | 12 +- docs/java/functions_func_s.html | 32 +- docs/java/functions_func_t.html | 1 - docs/java/functions_func_u.html | 1 - docs/java/functions_func_v.html | 1 - docs/java/functions_func_w.html | 1 - docs/java/functions_g.html | 6 +- docs/java/functions_h.html | 1 - docs/java/functions_i.html | 1 - docs/java/functions_k.html | 1 - docs/java/functions_l.html | 4 +- docs/java/functions_m.html | 5 +- docs/java/functions_n.html | 1 - docs/java/functions_o.html | 1 - docs/java/functions_p.html | 29 +- docs/java/functions_r.html | 8 +- docs/java/functions_s.html | 26 +- docs/java/functions_t.html | 1 - docs/java/functions_u.html | 1 - docs/java/functions_v.html | 1 - docs/java/functions_vars.html | 1 - docs/java/functions_vars_b.html | 1 - docs/java/functions_vars_c.html | 1 - docs/java/functions_vars_d.html | 1 - docs/java/functions_vars_e.html | 1 - docs/java/functions_vars_f.html | 1 - docs/java/functions_vars_g.html | 1 - docs/java/functions_vars_h.html | 1 - docs/java/functions_vars_i.html | 1 - docs/java/functions_vars_k.html | 1 - docs/java/functions_vars_l.html | 4 +- docs/java/functions_vars_m.html | 1 - docs/java/functions_vars_n.html | 1 - docs/java/functions_vars_o.html | 1 - docs/java/functions_vars_p.html | 1 - docs/java/functions_vars_r.html | 1 - docs/java/functions_vars_s.html | 1 - docs/java/functions_vars_t.html | 1 - docs/java/functions_vars_u.html | 1 - docs/java/functions_vars_v.html | 1 - docs/java/functions_vars_w.html | 1 - docs/java/functions_w.html | 1 - docs/java/hierarchy.html | 1 - docs/java/inherits.html | 1 - ...aintSolverParametersOrBuilder-members.html | 1 - ..._1ConstraintSolverParametersOrBuilder.html | 25 +- ...ver_1_1FirstSolutionStrategyOrBuilder.html | 25 +- ...olver_1_1IntIntToLongFunction-members.html | 1 - ...straintsolver_1_1IntIntToLongFunction.html | 3 +- ..._1_1LocalSearchMetaheuristicOrBuilder.html | 25 +- ...solver_1_1LongTernaryOperator-members.html | 1 - ...nstraintsolver_1_1LongTernaryOperator.html | 3 +- ...olver_1_1LongTernaryPredicate-members.html | 1 - ...straintsolver_1_1LongTernaryPredicate.html | 3 +- ...gularLimitParametersOrBuilder-members.html | 1 - ...er_1_1RegularLimitParametersOrBuilder.html | 25 +- ...utingModelParametersOrBuilder-members.html | 1 - ...er_1_1RoutingModelParametersOrBuilder.html | 25 +- ...tingSearchParametersOrBuilder-members.html | 48 +- ...r_1_1RoutingSearchParametersOrBuilder.html | 52 +- ...archN24d62a356c206353b5061700b5c103f6.html | 1 - ...lSearchNeighborhoodOperatorsOrBuilder.html | 27 +- ...traintsolver_1_1mainConstants-members.html | 1 - ..._1_1constraintsolver_1_1mainConstants.html | 3 +- ...1_1MPConstraintProtoOrBuilder-members.html | 1 - ...rsolver_1_1MPConstraintProtoOrBuilder.html | 25 +- ...neralConstraintProtoOrBuilder-members.html | 1 - ..._1_1MPGeneralConstraintProtoOrBuilder.html | 25 +- ...PIndicatorConstraintOrBuilder-members.html | 1 - ...ver_1_1MPIndicatorConstraintOrBuilder.html | 25 +- ...lver_1_1MPModelProtoOrBuilder-members.html | 1 - ...linearsolver_1_1MPModelProtoOrBuilder.html | 25 +- ...er_1_1MPModelRequestOrBuilder-members.html | 1 - ...nearsolver_1_1MPModelRequestOrBuilder.html | 25 +- ..._1MPSolutionResponseOrBuilder-members.html | 1 - ...solver_1_1MPSolutionResponseOrBuilder.html | 25 +- ...lverCommonParametersOrBuilder-members.html | 1 - ..._1_1MPSolverCommonParametersOrBuilder.html | 25 +- ...r_1_1MPSosConstraintOrBuilder-members.html | 1 - ...earsolver_1_1MPSosConstraintOrBuilder.html | 25 +- ...r_1_1MPVariableProtoOrBuilder-members.html | 1 - ...earsolver_1_1MPVariableProtoOrBuilder.html | 25 +- ...er_1_1OptionalDoubleOrBuilder-members.html | 1 - ...nearsolver_1_1OptionalDoubleOrBuilder.html | 25 +- ...alVariableAssignmentOrBuilder-members.html | 1 - ...1_1PartialVariableAssignmentOrBuilder.html | 25 +- ...1ortools_1_1sat_1_1LinearExpr-members.html | 1 - ...oogle_1_1ortools_1_1sat_1_1LinearExpr.html | 14 +- ..._1_1ortools_1_1sat_1_1Literal-members.html | 1 - ..._1google_1_1ortools_1_1sat_1_1Literal.html | 14 +- ...sat_1_1SatParametersOrBuilder-members.html | 1 - ...ools_1_1sat_1_1SatParametersOrBuilder.html | 41 +- docs/java/menudata.js | 1 - .../ortools/constraint_solver/pywrapcp.html | 18 + tools/doc/DoxygenLayout.xml | 80 +- tools/doc/cpp_algorithms.doxy | 8 +- 643 files changed, 6475 insertions(+), 7689 deletions(-) create mode 100644 docs/cpp_algorithms/annotated_dup.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver.js delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver__inherit__graph.map delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver__inherit__graph.md5 delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1BaseKnapsackSolver__inherit__graph.png create mode 100644 docs/cpp_algorithms/classoperations__research_1_1DenseDoublyLinkedList.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1DynamicPartition.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1DynamicPermutation.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1GraphSymmetryFinder.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator.js delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator__coll__graph.map delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator__coll__graph.md5 delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator__coll__graph.png delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator__inherit__graph.map delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator__inherit__graph.md5 delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackCapacityPropagator__inherit__graph.png create mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver.js delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver__coll__graph.map delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver__coll__graph.md5 delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver__coll__graph.png delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver__inherit__graph.map delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver__inherit__graph.md5 delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackGenericSolver__inherit__graph.png create mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator.js delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator__inherit__graph.map delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator__inherit__graph.md5 delete mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackPropagator__inherit__graph.png create mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchNode.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackSearchPath.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackSolver.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1KnapsackState.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1MergingPartition.js create mode 100644 docs/cpp_algorithms/classoperations__research_1_1SparsePermutation.js create mode 100644 docs/cpp_algorithms/files_dup.js create mode 100644 docs/cpp_algorithms/hungarian_8h.js create mode 100644 docs/cpp_algorithms/knapsack__solver_8h.js create mode 100644 docs/cpp_algorithms/namespaceoperations__research.js create mode 100644 docs/cpp_algorithms/namespaces_dup.js create mode 100644 docs/cpp_algorithms/navtree.css create mode 100644 docs/cpp_algorithms/navtree.js create mode 100644 docs/cpp_algorithms/navtreedata.js create mode 100644 docs/cpp_algorithms/navtreeindex0.js delete mode 100644 docs/cpp_algorithms/pages.html create mode 100644 docs/cpp_algorithms/resize.js create mode 100644 docs/cpp_algorithms/structoperations__research_1_1DynamicPartition_1_1IterablePart.js create mode 100644 docs/cpp_algorithms/structoperations__research_1_1KnapsackAssignment.js create mode 100644 docs/cpp_algorithms/structoperations__research_1_1KnapsackItem.js create mode 100644 docs/cpp_algorithms/structoperations__research_1_1SparsePermutation_1_1Iterator.js delete mode 100644 docs/cpp_algorithms/todo.html diff --git a/docs/cpp_algorithms/annotated.html b/docs/cpp_algorithms/annotated.html index 5806a92961..0d7959edd2 100644 --- a/docs/cpp_algorithms/annotated.html +++ b/docs/cpp_algorithms/annotated.html @@ -30,11 +30,26 @@ +
+ +
+
+
+ +
Class List
@@ -64,6 +79,7 @@
+ +
+ +
+
+
+ +
Class Index
@@ -64,6 +79,7 @@
b | d | g | i | k | m | s
+
+
+ +
+
+
+ +
operations_research::BaseKnapsackSolver Member List
@@ -55,6 +66,7 @@ Solve(TimeLimit *time_limit, bool *is_solution_optimal)=0operations_research::BaseKnapsackSolverpure virtual ~BaseKnapsackSolver()operations_research::BaseKnapsackSolverinlinevirtual
+
+
+ +
+
+
+ +
Public Member Functions | @@ -47,18 +58,10 @@
operations_research::BaseKnapsackSolver Class Referenceabstract
- -

#include <knapsack_solver.h>

-
-Inheritance diagram for operations_research::BaseKnapsackSolver:
-
-
Inheritance graph
- - - - -
[legend]
- +

Detailed Description

+
+

Definition at line 553 of file knapsack_solver.h.

+
@@ -76,10 +79,7 @@ Public Member Functions

Public Member Functions

 BaseKnapsackSolver (const std::string &solver_name)
virtual std::string GetName () const
 
-

Detailed Description

-
-

Definition at line 552 of file knapsack_solver.h.

-

Constructor & Destructor Documentation

+

Constructor & Destructor Documentation

◆ BaseKnapsackSolver()

@@ -104,7 +104,7 @@ Public Member Functions
-

Definition at line 554 of file knapsack_solver.h.

+

Definition at line 555 of file knapsack_solver.h.

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

Definition at line 556 of file knapsack_solver.h.

+

Definition at line 557 of file knapsack_solver.h.

@@ -237,7 +237,7 @@ Public Member Functions
-

Definition at line 576 of file knapsack_solver.h.

+

Definition at line 577 of file knapsack_solver.h.

@@ -327,6 +327,7 @@ Public Member Functions
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::DenseDoublyLinkedList Member List
    @@ -53,6 +64,7 @@ Remove(int i)operations_research::DenseDoublyLinkedListinline Size() constoperations_research::DenseDoublyLinkedListinline
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -47,9 +58,10 @@
    operations_research::DenseDoublyLinkedList Class Reference
    - -

    #include <dense_doubly_linked_list.h>

    - +

    Detailed Description

    +
    +

    Definition at line 29 of file dense_doubly_linked_list.h.

    +
    @@ -64,10 +76,7 @@ Public Member Functions

    Public Member Functions

    template<class T >
    void Remove (int i)
     
    -

    Detailed Description

    -
    -

    Definition at line 29 of file dense_doubly_linked_list.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ DenseDoublyLinkedList()

    @@ -214,6 +223,7 @@ template<class T >
  • dense_doubly_linked_list.h
  • + +
    + +
    +
    +
    + +
    operations_research::DynamicPartition Member List
    @@ -65,6 +76,7 @@ SORT_LEXICOGRAPHICALLY enum valueoperations_research::DynamicPartition UndoRefineUntilNumPartsEqual(int original_num_parts)operations_research::DynamicPartition
    +
    +
    + +
    +
    +
    + +
    Classes | @@ -49,9 +60,10 @@
    operations_research::DynamicPartition Class Reference
    - -

    #include <dynamic_partition.h>

    - +

    Detailed Description

    +
    +

    Definition at line 49 of file dynamic_partition.h.

    +
    @@ -95,10 +107,7 @@ Public Member Functions

    Classes

    struct  IterablePart
    const std::vector< int > & ElementsInHierarchicalOrder () const
     
    -

    Detailed Description

    -
    -

    Definition at line 49 of file dynamic_partition.h.

    -

    Member Enumeration Documentation

    +

    Member Enumeration Documentation

    ◆ DebugStringSorting

    @@ -480,6 +489,7 @@ Public Member Functions
  • dynamic_partition.h
  • +
    +
    + +
    +
    +
    + +
    operations_research::DynamicPermutation Member List
    @@ -59,6 +70,7 @@ Size() constoperations_research::DynamicPermutationinline UndoLastMappings(std::vector< int > *undone_mapping_src)operations_research::DynamicPermutation
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -47,9 +58,10 @@
    operations_research::DynamicPermutation Class Reference
    - -

    #include <dynamic_permutation.h>

    - +

    Detailed Description

    +
    +

    Definition at line 33 of file dynamic_permutation.h.

    +
    @@ -75,10 +87,7 @@ Public Member Functions

    Public Member Functions

     DynamicPermutation (int n)
    std::string DebugString () const
     
    -

    Detailed Description

    -
    -

    Definition at line 33 of file dynamic_permutation.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ DynamicPermutation()

    @@ -344,6 +353,7 @@ Public Member Functions
  • dynamic_permutation.h
  • +
    +
    + +
    +
    +
    + +
    operations_research::GraphSymmetryFinder Member List
    @@ -54,6 +65,7 @@ IsGraphAutomorphism(const DynamicPermutation &permutation) constoperations_research::GraphSymmetryFinder RecursivelyRefinePartitionByAdjacency(int first_unrefined_part_index, DynamicPartition *partition)operations_research::GraphSymmetryFinder
    +
    +
    + +
    +
    +
    + +
    Public Types | @@ -48,9 +59,10 @@
    operations_research::GraphSymmetryFinder Class Reference
    - -

    #include <find_graph_symmetries.h>

    - +

    Detailed Description

    +
    +

    Definition at line 43 of file find_graph_symmetries.h.

    +
    @@ -69,10 +81,7 @@ Public Member Functions

    Public Types

    typedef ::util::StaticGraph Graph
    void DistinguishNodeInPartition (int node, DynamicPartition *partition, std::vector< int > *new_singletons_or_null)
     
    -

    Detailed Description

    -
    -

    Definition at line 43 of file find_graph_symmetries.h.

    -

    Member Typedef Documentation

    +

    Member Typedef Documentation

    ◆ Graph

    @@ -243,6 +252,7 @@ Public Member Functions
  • find_graph_symmetries.h
  • +
    +
    + +
    +
    +
    + +
    operations_research::KnapsackCapacityPropagator Member List
    @@ -67,6 +78,7 @@ ~KnapsackCapacityPropagator() overrideoperations_research::KnapsackCapacityPropagator ~KnapsackPropagator()operations_research::KnapsackPropagatorvirtual
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -48,27 +59,10 @@
    operations_research::KnapsackCapacityPropagator Class Reference
    - -

    #include <knapsack_solver.h>

    -
    -Inheritance diagram for operations_research::KnapsackCapacityPropagator:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for operations_research::KnapsackCapacityPropagator:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - +

    Detailed Description

    +
    +

    Definition at line 513 of file knapsack_solver.h.

    +
    @@ -109,10 +103,7 @@ Protected Member Functions

    Public Member Functions

     KnapsackCapacityPropagator (const KnapsackState &state, int64 capacity)
    void set_profit_upper_bound (int64 profit)
     
    -

    Detailed Description

    -
    -

    Definition at line 512 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackCapacityPropagator()

    @@ -281,7 +272,7 @@ Protected Member Functions
    -

    Definition at line 445 of file knapsack_solver.h.

    +

    Definition at line 446 of file knapsack_solver.h.

    @@ -310,7 +301,7 @@ Protected Member Functions

    Implements operations_research::KnapsackPropagator.

    -

    Definition at line 517 of file knapsack_solver.h.

    +

    Definition at line 518 of file knapsack_solver.h.

    @@ -400,7 +391,7 @@ Protected Member Functions
    -

    Definition at line 477 of file knapsack_solver.h.

    +

    Definition at line 478 of file knapsack_solver.h.

    @@ -427,7 +418,7 @@ Protected Member Functions
    -

    Definition at line 446 of file knapsack_solver.h.

    +

    Definition at line 447 of file knapsack_solver.h.

    @@ -454,7 +445,7 @@ Protected Member Functions
    -

    Definition at line 447 of file knapsack_solver.h.

    +

    Definition at line 448 of file knapsack_solver.h.

    @@ -482,7 +473,7 @@ Protected Member Functions
    -

    Definition at line 479 of file knapsack_solver.h.

    +

    Definition at line 480 of file knapsack_solver.h.

    @@ -510,7 +501,7 @@ Protected Member Functions
    -

    Definition at line 480 of file knapsack_solver.h.

    +

    Definition at line 481 of file knapsack_solver.h.

    @@ -537,7 +528,7 @@ Protected Member Functions
    -

    Definition at line 476 of file knapsack_solver.h.

    +

    Definition at line 477 of file knapsack_solver.h.

    @@ -619,6 +610,7 @@ Protected Member Functions
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::KnapsackGenericSolver Member List
    @@ -59,6 +70,7 @@ ~BaseKnapsackSolver()operations_research::BaseKnapsackSolverinlinevirtual ~KnapsackGenericSolver() overrideoperations_research::KnapsackGenericSolver
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -47,27 +58,10 @@
    operations_research::KnapsackGenericSolver Class Reference
    - -

    #include <knapsack_solver.h>

    -
    -Inheritance diagram for operations_research::KnapsackGenericSolver:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for operations_research::KnapsackGenericSolver:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - +

    Detailed Description

    +
    +

    Definition at line 592 of file knapsack_solver.h.

    +
    @@ -89,10 +83,7 @@ Public Member Functions

    Public Member Functions

     KnapsackGenericSolver (const std::string &solver_name)
    virtual std::string GetName () const
     
    -

    Detailed Description

    -
    -

    Definition at line 591 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackGenericSolver()

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

    Implements operations_research::BaseKnapsackSolver.

    -

    Definition at line 615 of file knapsack_solver.h.

    +

    Definition at line 616 of file knapsack_solver.h.

    @@ -248,7 +239,7 @@ Public Member Functions
    -

    Definition at line 576 of file knapsack_solver.h.

    +

    Definition at line 577 of file knapsack_solver.h.

    @@ -275,7 +266,7 @@ Public Member Functions
    -

    Definition at line 600 of file knapsack_solver.h.

    +

    Definition at line 601 of file knapsack_solver.h.

    @@ -347,7 +338,7 @@ Public Member Functions
    -

    Definition at line 608 of file knapsack_solver.h.

    +

    Definition at line 609 of file knapsack_solver.h.

    @@ -393,6 +384,7 @@ Public Member Functions
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::KnapsackPropagator Member List
    @@ -65,6 +76,7 @@ UpdatePropagator(bool revert, const KnapsackAssignment &assignment)=0operations_research::KnapsackPropagatorprotectedpure virtual ~KnapsackPropagator()operations_research::KnapsackPropagatorvirtual
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -48,18 +59,10 @@
    operations_research::KnapsackPropagator Class Referenceabstract
    - -

    #include <knapsack_solver.h>

    -
    -Inheritance diagram for operations_research::KnapsackPropagator:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    - +

    Detailed Description

    +
    +

    Definition at line 427 of file knapsack_solver.h.

    +
    @@ -100,10 +103,7 @@ Protected Member Functions

    Public Member Functions

     KnapsackPropagator (const KnapsackState &state)
    void set_profit_upper_bound (int64 profit)
     
    -

    Detailed Description

    -
    -

    Definition at line 426 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackPropagator()

    @@ -262,7 +262,7 @@ Protected Member Functions
    -

    Definition at line 445 of file knapsack_solver.h.

    +

    Definition at line 446 of file knapsack_solver.h.

    @@ -371,7 +371,7 @@ Protected Member Functions
    -

    Definition at line 477 of file knapsack_solver.h.

    +

    Definition at line 478 of file knapsack_solver.h.

    @@ -398,7 +398,7 @@ Protected Member Functions
    -

    Definition at line 446 of file knapsack_solver.h.

    +

    Definition at line 447 of file knapsack_solver.h.

    @@ -425,7 +425,7 @@ Protected Member Functions
    -

    Definition at line 447 of file knapsack_solver.h.

    +

    Definition at line 448 of file knapsack_solver.h.

    @@ -453,7 +453,7 @@ Protected Member Functions
    -

    Definition at line 479 of file knapsack_solver.h.

    +

    Definition at line 480 of file knapsack_solver.h.

    @@ -481,7 +481,7 @@ Protected Member Functions
    -

    Definition at line 480 of file knapsack_solver.h.

    +

    Definition at line 481 of file knapsack_solver.h.

    @@ -508,7 +508,7 @@ Protected Member Functions
    -

    Definition at line 476 of file knapsack_solver.h.

    +

    Definition at line 477 of file knapsack_solver.h.

    @@ -582,6 +582,7 @@ Protected Member Functions
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::KnapsackSearchNode Member List
    @@ -58,6 +69,7 @@ set_next_item_id(int id)operations_research::KnapsackSearchNodeinline set_profit_upper_bound(int64 profit)operations_research::KnapsackSearchNodeinline
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -47,9 +58,10 @@
    operations_research::KnapsackSearchNode Class Reference
    - -

    #include <knapsack_solver.h>

    - +

    Detailed Description

    +
    +

    Definition at line 318 of file knapsack_solver.h.

    +
    @@ -73,10 +85,7 @@ Public Member Functions

    Public Member Functions

     KnapsackSearchNode (const KnapsackSearchNode *const parent, const KnapsackAssignment &assignment)
    void set_next_item_id (int id)
     
    -

    Detailed Description

    -
    -

    Definition at line 317 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackSearchNode()

    @@ -129,7 +138,7 @@ Public Member Functions
    -

    Definition at line 323 of file knapsack_solver.h.

    +

    Definition at line 324 of file knapsack_solver.h.

    @@ -156,7 +165,7 @@ Public Member Functions
    -

    Definition at line 325 of file knapsack_solver.h.

    +

    Definition at line 326 of file knapsack_solver.h.

    @@ -183,7 +192,7 @@ Public Member Functions
    -

    Definition at line 321 of file knapsack_solver.h.

    +

    Definition at line 322 of file knapsack_solver.h.

    @@ -210,7 +219,7 @@ Public Member Functions
    -

    Definition at line 331 of file knapsack_solver.h.

    +

    Definition at line 332 of file knapsack_solver.h.

    @@ -237,7 +246,7 @@ Public Member Functions
    -

    Definition at line 322 of file knapsack_solver.h.

    +

    Definition at line 323 of file knapsack_solver.h.

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

    Definition at line 328 of file knapsack_solver.h.

    +

    Definition at line 329 of file knapsack_solver.h.

    @@ -292,7 +301,7 @@ Public Member Functions
    -

    Definition at line 326 of file knapsack_solver.h.

    +

    Definition at line 327 of file knapsack_solver.h.

    @@ -320,7 +329,7 @@ Public Member Functions
    -

    Definition at line 332 of file knapsack_solver.h.

    +

    Definition at line 333 of file knapsack_solver.h.

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

    Definition at line 329 of file knapsack_solver.h.

    +

    Definition at line 330 of file knapsack_solver.h.

    @@ -356,6 +365,7 @@ Public Member Functions
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::KnapsackSearchPath Member List
    @@ -54,6 +65,7 @@ to() constoperations_research::KnapsackSearchPathinline via() constoperations_research::KnapsackSearchPathinline
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -47,9 +58,10 @@
    operations_research::KnapsackSearchPath Class Reference
    - -

    #include <knapsack_solver.h>

    - +

    Detailed Description

    +
    +

    Definition at line 372 of file knapsack_solver.h.

    +
    @@ -65,10 +77,7 @@ Public Member Functions

    Public Member Functions

     KnapsackSearchPath (const KnapsackSearchNode &from, const KnapsackSearchNode &to)
    const KnapsackSearchNodeMoveUpToDepth (const KnapsackSearchNode &node, int depth) const
     
    -

    Detailed Description

    -
    -

    Definition at line 371 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackSearchPath()

    @@ -121,7 +130,7 @@ Public Member Functions
    -

    Definition at line 376 of file knapsack_solver.h.

    +

    Definition at line 377 of file knapsack_solver.h.

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

    Definition at line 378 of file knapsack_solver.h.

    +

    Definition at line 379 of file knapsack_solver.h.

    @@ -220,7 +229,7 @@ Public Member Functions
    -

    Definition at line 377 of file knapsack_solver.h.

    +

    Definition at line 378 of file knapsack_solver.h.

    @@ -228,6 +237,7 @@ Public Member Functions
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::KnapsackSolver Member List
    @@ -66,6 +77,7 @@ use_reduction() constoperations_research::KnapsackSolverinline ~KnapsackSolver()operations_research::KnapsackSolvervirtual
    +
    +
    + +
    +
    +
    + +
    Public Types | @@ -48,12 +59,24 @@
    operations_research::KnapsackSolver Class Reference
    - -

    This library solves knapsack problems. - More...

    - -

    #include <knapsack_solver.h>

    - +

    Detailed Description

    +

    This library solves knapsack problems.

    +

    Problems the library solves include:

      +
    • 0-1 knapsack problems,
    • +
    • Multi-dimensional knapsack problems,
    • +
    +

    Given n items, each with a profit and a weight, given a knapsack of capacity c, the goal is to find a subset of items which fits inside c and maximizes the total profit. The knapsack problem can easily be extended from 1 to d dimensions. As an example, this can be useful to constrain the maximum number of items inside the knapsack. Without loss of generality, profits and weights are assumed to be positive.

    +

    From a mathematical point of view, the multi-dimensional knapsack problem can be modeled by d linear constraints:

    ForEach(j:1..d)(Sum(i:1..n)(weight_ij * item_i) <= c_j
    +    where item_i is a 0-1 integer variable.
    +

    Then the goal is to maximize:

    Sum(i:1..n)(profit_i * item_i).
    +

    There are several ways to solve knapsack problems. One of the most efficient is based on dynamic programming (mainly when weights, profits and dimensions are small, and the algorithm runs in pseudo polynomial time). Unfortunately, when adding conflict constraints the problem becomes strongly NP-hard, i.e. there is no pseudo-polynomial algorithm to solve it. That's the reason why the most of the following code is based on branch and bound search.

    +

    For instance to solve a 2-dimensional knapsack problem with 9 items, one just has to feed a profit vector with the 9 profits, a vector of 2 vectors for weights, and a vector of capacities. E.g.:

    +

    Python:

    +
    profits = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
    weights = [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
    [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
    ]
    capacities = [ 34, 4 ]
    solver = pywrapknapsack_solver.KnapsackSolver(
    pywrapknapsack_solver.KnapsackSolver
    .KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER,
    'Multi-dimensional solver')
    solver.Init(profits, weights, capacities)
    profit = solver.Solve()

    C++:

    +
    const std::vector<int64> profits = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    const std::vector<std::vector<int64>> weights =
    { { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1 } };
    const std::vector<int64> capacities = { 34, 4 };
    "Multi-dimensional solver");
    solver.Init(profits, weights, capacities);
    const int64 profit = solver.Solve();

    Java:

    +
    final long[] profits = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    final long[][] weights = { { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1 } };
    final long[] capacities = { 34, 4 };
    KnapsackSolver.SolverType.KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER,
    "Multi-dimensional solver");
    solver.init(profits, weights, capacities);
    final long profit = solver.solve();
    +

    Definition at line 120 of file knapsack_solver.h.

    +

    Public Types

    enum  SolverType {
    @@ -99,24 +122,7 @@ Public Member Functions
     Time limit in seconds. More...
     
    -

    Detailed Description

    -

    This library solves knapsack problems.

    -

    Problems the library solves include:

      -
    • 0-1 knapsack problems,
    • -
    • Multi-dimensional knapsack problems,
    • -
    -

    Given n items, each with a profit and a weight, given a knapsack of capacity c, the goal is to find a subset of items which fits inside c and maximizes the total profit. The knapsack problem can easily be extended from 1 to d dimensions. As an example, this can be useful to constrain the maximum number of items inside the knapsack. Without loss of generality, profits and weights are assumed to be positive.

    -

    From a mathematical point of view, the multi-dimensional knapsack problem can be modeled by d linear constraints:

    ForEach(j:1..d)(Sum(i:1..n)(weight_ij * item_i) <= c_j
    -    where item_i is a 0-1 integer variable.
    -

    Then the goal is to maximize:

    Sum(i:1..n)(profit_i * item_i).
    -

    There are several ways to solve knapsack problems. One of the most efficient is based on dynamic programming (mainly when weights, profits and dimensions are small, and the algorithm runs in pseudo polynomial time). Unfortunately, when adding conflict constraints the problem becomes strongly NP-hard, i.e. there is no pseudo-polynomial algorithm to solve it. That's the reason why the most of the following code is based on branch and bound search.

    -

    For instance to solve a 2-dimensional knapsack problem with 9 items, one just has to feed a profit vector with the 9 profits, a vector of 2 vectors for weights, and a vector of capacities. E.g.:

    -

    Python:

    -
    profits = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
    weights = [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
    [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
    ]
    capacities = [ 34, 4 ]
    solver = pywrapknapsack_solver.KnapsackSolver(
    pywrapknapsack_solver.KnapsackSolver
    .KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER,
    'Multi-dimensional solver')
    solver.Init(profits, weights, capacities)
    profit = solver.Solve()

    C++:

    -
    const std::vector<int64> profits = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    const std::vector<std::vector<int64>> weights =
    { { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1 } };
    const std::vector<int64> capacities = { 34, 4 };
    "Multi-dimensional solver");
    solver.Init(profits, weights, capacities);
    const int64 profit = solver.Solve();

    Java:

    -
    final long[] profits = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    final long[][] weights = { { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1 } };
    final long[] capacities = { 34, 4 };
    KnapsackSolver.SolverType.KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER, "Multi-dimensional solver");
    solver.init(values, weights, capacities);
    final long computedValue = solver.solve();
    -

    Definition at line 119 of file knapsack_solver.h.

    -

    Member Enumeration Documentation

    +

    Member Enumeration Documentation

    ◆ SolverType

    @@ -161,7 +167,7 @@ dimensions. This solver is based on Integer Programming solver SCIP. -

    Definition at line 126 of file knapsack_solver.h.

    +

    Definition at line 127 of file knapsack_solver.h.

    @@ -344,7 +350,7 @@ dimensions. This solver is based on Integer Programming solver SCIP.

    Returns true if the solution was proven optimal.

    -

    Definition at line 200 of file knapsack_solver.h.

    +

    Definition at line 201 of file knapsack_solver.h.

    @@ -375,7 +381,7 @@ dimensions. This solver is based on Integer Programming solver SCIP.

    Time limit in seconds.

    When a finite time limit is set the solution obtained might not be optimal if the limit is reached.

    -

    Definition at line 213 of file knapsack_solver.h.

    +

    Definition at line 214 of file knapsack_solver.h.

    @@ -403,7 +409,7 @@ dimensions. This solver is based on Integer Programming solver SCIP.
    -

    Definition at line 204 of file knapsack_solver.h.

    +

    Definition at line 205 of file knapsack_solver.h.

    @@ -449,7 +455,7 @@ dimensions. This solver is based on Integer Programming solver SCIP.
    -

    Definition at line 203 of file knapsack_solver.h.

    +

    Definition at line 204 of file knapsack_solver.h.

    @@ -457,6 +463,7 @@ dimensions. This solver is based on Integer Programming solver SCIP.
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::KnapsackState Member List
    @@ -54,6 +65,7 @@ KnapsackState()operations_research::KnapsackState UpdateState(bool revert, const KnapsackAssignment &assignment)operations_research::KnapsackState
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -47,9 +58,10 @@
    operations_research::KnapsackState Class Reference
    - -

    #include <knapsack_solver.h>

    - +

    Detailed Description

    +
    +

    Definition at line 393 of file knapsack_solver.h.

    +
    @@ -65,10 +77,7 @@ Public Member Functions

    Public Member Functions

     KnapsackState ()
    bool is_in (int id) const
     
    -

    Detailed Description

    -
    -

    Definition at line 392 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackState()

    @@ -110,7 +119,7 @@ Public Member Functions
    -

    Definition at line 403 of file knapsack_solver.h.

    +

    Definition at line 404 of file knapsack_solver.h.

    @@ -156,7 +165,7 @@ Public Member Functions
    -

    Definition at line 404 of file knapsack_solver.h.

    +

    Definition at line 405 of file knapsack_solver.h.

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

    Definition at line 405 of file knapsack_solver.h.

    +

    Definition at line 406 of file knapsack_solver.h.

    @@ -220,6 +229,7 @@ Public Member Functions
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::MergingPartition Member List
    @@ -60,6 +71,7 @@ Reset(int num_nodes)operations_research::MergingPartition ResetNode(int node)operations_research::MergingPartitioninline
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -47,9 +58,10 @@
    operations_research::MergingPartition Class Reference
    - -

    #include <dynamic_partition.h>

    - +

    Detailed Description

    +
    +

    Definition at line 203 of file dynamic_partition.h.

    +
    @@ -77,10 +89,7 @@ Public Member Functions

    Public Member Functions

     MergingPartition ()
    int GetRoot (int node) const
     
    -

    Detailed Description

    -
    -

    Definition at line 203 of file dynamic_partition.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ MergingPartition() [1/2]

    @@ -369,6 +378,7 @@ Public Member Functions
  • dynamic_partition.h
  • +
    +
    + +
    +
    +
    + +
    operations_research::SparsePermutation Member List
    @@ -58,6 +69,7 @@ SparsePermutation(int size)operations_research::SparsePermutationinlineexplicit Support() constoperations_research::SparsePermutationinline
    +
    +
    + +
    +
    +
    + +
    Classes | @@ -48,9 +59,10 @@
    operations_research::SparsePermutation Class Reference
    - -

    #include <sparse_permutation.h>

    - +

    Detailed Description

    +
    +

    Definition at line 27 of file sparse_permutation.h.

    +
    @@ -79,10 +91,7 @@ Public Member Functions

    Classes

    struct  Iterator
    std::string DebugString () const
     
    -

    Detailed Description

    -
    -

    Definition at line 27 of file sparse_permutation.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ SparsePermutation()

    @@ -343,6 +352,7 @@ Public Member Functions
  • sparse_permutation.h
  • +
    +
    + +
    +
    +
    + +
    Classes | @@ -51,16 +63,16 @@ Include dependency graph for dense_doubly_linked_list.h:
    - - - - - - - - - - + + + + + + + + + +
    @@ -77,6 +89,7 @@ Namespaces  
    + +
    + +
    +
    +
    + +
    dense_doubly_linked_list.h
    @@ -49,6 +61,7 @@
    + +
    + +
    +
    +
    + +
    algorithms Directory Reference
    @@ -60,6 +72,7 @@ Files  
    +
    +
    + +
    +
    +
    + +
    ortools Directory Reference
    @@ -48,6 +60,7 @@ Directories  
    +
    +
    + +
    +
    +
    + +
    Classes | @@ -52,10 +64,10 @@ Include dependency graph for dynamic_partition.h:
    - - - - + + + +
    @@ -63,8 +75,8 @@ This graph shows which files directly or indirectly include this file:
    - - + +
    @@ -85,6 +97,7 @@ Namespaces  
    + +
    + +
    +
    +
    + +
    dynamic_partition.h
    @@ -83,6 +95,7 @@
    int MergePartsOf(int node1, int node2)
    + +
    + +
    +
    +
    + +
    Classes | @@ -53,11 +65,11 @@ Include dependency graph for dynamic_permutation.h:
    - - - - - + + + + +
    @@ -65,8 +77,8 @@ This graph shows which files directly or indirectly include this file:
    - - + +
    @@ -83,6 +95,7 @@ Namespaces  
    + +
    + +
    +
    +
    + +
    dynamic_permutation.h
    @@ -55,6 +67,7 @@
    const std::set< int > & LooseEnds() const
    + +
    + +
    +
    +
    + +
    File List
    @@ -49,6 +65,7 @@
    + +
    + +
    +
    +
    + +
    Classes | @@ -58,40 +70,40 @@ Include dependency graph for find_graph_symmetries.h:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    @@ -108,6 +120,7 @@ Namespaces  
    + +
    + +
    +
    +
    + +
    find_graph_symmetries.h
    @@ -54,6 +66,7 @@
    util::Status FindSymmetries(double time_limit_seconds, std::vector< int > *node_equivalence_classes_io, std::vector< std::unique_ptr< SparsePermutation > > *generators, std::vector< int > *factorized_automorphism_group_size)
    void RecursivelyRefinePartitionByAdjacency(int first_unrefined_part_index, DynamicPartition *partition)
    + +
    + +
    +
    +
    + +
    Here is a list of all class members with links to the classes they belong to:
    @@ -574,6 +589,7 @@
    +
    +
    + +
    +
    +
    + +
     
    • DebugStringSorting @@ -55,6 +70,7 @@
    +
    +
    + +
    +
    +
    + +
     
    • KNAPSACK_64ITEMS_SOLVER @@ -73,6 +88,7 @@
    +
    +
    + +
    +
    +
    + +
      @@ -507,6 +522,7 @@
    +
    +
    + +
    +
    +
    + +
     
    • const_iterator @@ -60,6 +75,7 @@
    +
    +
    + +
    +
    +
    + +
     
    • begin_ @@ -72,6 +87,7 @@
    +
    +
    + +
    +
    +
    + +
    Graph Legend
    @@ -60,6 +76,7 @@ A purple dashed arrow is used if a class is contained or used by another class. A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    +
    +
    + +
    +
    +
    + +
    Class Hierarchy
    @@ -65,6 +80,7 @@ This inheritance list is sorted roughly, but not completely, alphabetically:
    + +
    + +
    +
    +
    + +
    Namespaces | @@ -51,9 +63,9 @@ Include dependency graph for hungarian.h:
    - - - + + +
    @@ -72,6 +84,7 @@ Functions  
    + +
    + +
    +
    +
    + +
    hungarian.h
    @@ -45,6 +57,7 @@
    void MinimizeLinearAssignment(const std::vector< std::vector< double > > &cost, absl::flat_hash_map< int, int > *direct_assignment, absl::flat_hash_map< int, int > *reverse_assignment)
    + +
    + +
    +
    +
    + +
    OR-Tools Documentation
    +
    +
    + +
    +
    +
    + +
    Class Hierarchy
    @@ -61,7 +76,7 @@ - + @@ -71,7 +86,7 @@ - + @@ -122,11 +137,12 @@ - +
    +
    +
    + +
    +
    +
    + +
    Classes | @@ -60,17 +72,17 @@ Include dependency graph for knapsack_solver.h:
    - - - - - - - - - - - + + + + + + + + + + +
    @@ -111,6 +123,7 @@ Typedefs  
    + +
    + +
    +
    +
    + +
    knapsack_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 
    14 #ifndef OR_TOOLS_ALGORITHMS_KNAPSACK_SOLVER_H_
    15 #define OR_TOOLS_ALGORITHMS_KNAPSACK_SOLVER_H_
    16 
    17 #include <math.h>
    18 
    19 #include <memory>
    20 #include <string>
    21 #include <vector>
    22 
    23 #include "absl/memory/memory.h"
    24 #include "ortools/base/basictypes.h"
    25 #include "ortools/base/integral_types.h"
    26 #include "ortools/base/logging.h"
    27 #include "ortools/base/macros.h"
    28 #include "ortools/util/time_limit.h"
    29 
    30 namespace operations_research {
    31 
    32 class BaseKnapsackSolver;
    33 
    120  public:
    126  enum SolverType {
    134 
    142 
    150 
    151 #if defined(USE_CBC)
    152 
    158 #endif // USE_CBC
    159 
    166 
    167 #if defined(USE_SCIP)
    168 
    174 #endif // USE_SCIP
    175  };
    176 
    177  explicit KnapsackSolver(const std::string &solver_name);
    178  KnapsackSolver(SolverType solver_type, const std::string &solver_name);
    179  virtual ~KnapsackSolver();
    180 
    184  void Init(const std::vector<int64> &profits,
    185  const std::vector<std::vector<int64>> &weights,
    186  const std::vector<int64> &capacities);
    187 
    191  int64 Solve();
    192 
    196  bool BestSolutionContains(int item_id) const;
    200  bool IsSolutionOptimal() const { return is_solution_optimal_; }
    201  std::string GetName() const;
    202 
    203  bool use_reduction() const { return use_reduction_; }
    205  use_reduction_ = use_reduction;
    206  }
    207 
    213  void set_time_limit(double time_limit_seconds) {
    214  time_limit_seconds_ = time_limit_seconds;
    215  time_limit_ = absl::make_unique<TimeLimit>(time_limit_seconds_);
    216  }
    217 
    218  private:
    219  // Trivial reduction of capacity constraints when the capacity is higher than
    220  // the sum of the weights of the items. Returns the number of reduced items.
    221  int ReduceCapacities(int num_items,
    222  const std::vector<std::vector<int64> >& weights,
    223  const std::vector<int64>& capacities,
    224  std::vector<std::vector<int64> >* reduced_weights,
    225  std::vector<int64>* reduced_capacities);
    226  int ReduceProblem(int num_items);
    227  void ComputeAdditionalProfit(const std::vector<int64>& profits);
    228  void InitReducedProblem(const std::vector<int64>& profits,
    229  const std::vector<std::vector<int64> >& weights,
    230  const std::vector<int64>& capacities);
    231 
    232  std::unique_ptr<BaseKnapsackSolver> solver_;
    233  std::vector<bool> known_value_;
    234  std::vector<bool> best_solution_;
    235  bool is_solution_optimal_ = false;
    236  std::vector<int> mapping_reduced_item_id_;
    237  bool is_problem_solved_;
    238  int64 additional_profit_;
    239  bool use_reduction_;
    240  double time_limit_seconds_;
    241  std::unique_ptr<TimeLimit> time_limit_;
    242 
    243  DISALLOW_COPY_AND_ASSIGN(KnapsackSolver);
    244 };
    245 
    246 #if !defined(SWIG)
    247 // The following code defines needed classes for the KnapsackGenericSolver
    248 // class which is the entry point to extend knapsack with new constraints such
    249 // as conflicts between items.
    250 //
    251 // Constraints are enforced using KnapsackPropagator objects, in the current
    252 // code there is one propagator per dimension (KnapsackCapacityPropagator).
    253 // One of those propagators, named master propagator, is used to guide the
    254 // search, i.e. decides which item should be assigned next.
    255 // Roughly speaking the search algorithm is:
    256 // - While not optimal
    257 // - Select next search node to expand
    258 // - Select next item_i to assign (using master propagator)
    259 // - Generate a new search node where item_i is in the knapsack
    260 // - Check validity of this new partial solution (using propagators)
    261 // - If valid, add this new search node to the search
    262 // - Generate a new search node where item_i is not in the knapsack
    263 // - Check validity of this new partial solution (using propagators)
    264 // - If valid, add this new search node to the search
    265 //
    266 // TODO(user): Add a new propagator class for conflict constraint.
    267 // TODO(user): Add a new propagator class used as a guide when the problem has
    268 // several dimensions.
    269 
    270 // ----- KnapsackAssignement -----
    271 // KnapsackAssignement is a small struct used to pair an item with its
    272 // assignment. It is mainly used for search nodes and updates.
    274  KnapsackAssignment(int _item_id, bool _is_in)
    275  : item_id(_item_id), is_in(_is_in) {}
    276  int item_id;
    277  bool is_in;
    278 };
    279 
    280 // ----- KnapsackItem -----
    281 // KnapsackItem is a small struct to pair an item weight with its
    282 // corresponding profit.
    283 // The aim of the knapsack problem is to pack as many valuable items as
    284 // possible. A straight forward heuristic is to take those with the greatest
    285 // profit-per-unit-weight. This ratio is called efficiency in this
    286 // implementation. So items will be grouped in vectors, and sorted by
    287 // decreasing efficiency.
    288 // Note that profits are duplicated for each dimension. This is done to
    289 // simplify the code, especially the GetEfficiency method and vector sorting.
    290 // As there usually are only few dimensions, the overhead should not be an
    291 // issue.
    292 struct KnapsackItem {
    293  KnapsackItem(int _id, int64 _weight, int64 _profit)
    294  : id(_id), weight(_weight), profit(_profit) {}
    295  double GetEfficiency(int64 profit_max) const {
    296  return (weight > 0)
    297  ? static_cast<double>(profit) / static_cast<double>(weight)
    298  : static_cast<double>(profit_max);
    299  }
    300 
    301  // The 'id' field is used to retrieve the initial item in order to
    302  // communicate with other propagators and state.
    303  const int id;
    304  const int64 weight;
    305  const int64 profit;
    306 };
    308 
    309 // ----- KnapsackSearchNode -----
    310 // KnapsackSearchNode is a class used to describe a decision in the decision
    311 // search tree.
    312 // The node is defined by a pointer to the parent search node and an
    313 // assignment (see KnapsackAssignement).
    314 // As the current state is not explicitly stored in a search node, one should
    315 // go through the search tree to incrementally build a partial solution from
    316 // a previous search node.
    318  public:
    321  int depth() const { return depth_; }
    322  const KnapsackSearchNode* const parent() const { return parent_; }
    323  const KnapsackAssignment& assignment() const { return assignment_; }
    324 
    325  int64 current_profit() const { return current_profit_; }
    326  void set_current_profit(int64 profit) { current_profit_ = profit; }
    327 
    328  int64 profit_upper_bound() const { return profit_upper_bound_; }
    329  void set_profit_upper_bound(int64 profit) { profit_upper_bound_ = profit; }
    330 
    331  int next_item_id() const { return next_item_id_; }
    332  void set_next_item_id(int id) { next_item_id_ = id; }
    333 
    334  private:
    335  // 'depth' field is used to navigate efficiently through the search tree
    336  // (see KnapsackSearchPath).
    337  int depth_;
    338  const KnapsackSearchNode* const parent_;
    339  KnapsackAssignment assignment_;
    340 
    341  // 'current_profit' and 'profit_upper_bound' fields are used to sort search
    342  // nodes using a priority queue. That allows to pop the node with the best
    343  // upper bound, and more importantly to stop the search when optimality is
    344  // proved.
    345  int64 current_profit_;
    346  int64 profit_upper_bound_;
    347 
    348  // 'next_item_id' field allows to avoid an O(number_of_items) scan to find
    349  // next item to select. This is done for free by the upper bound computation.
    350  int next_item_id_;
    351 
    352  DISALLOW_COPY_AND_ASSIGN(KnapsackSearchNode);
    353 };
    354 
    355 // ----- KnapsackSearchPath -----
    356 // KnapsackSearchPath is a small class used to represent the path between a
    357 // node to another node in the search tree.
    358 // As the solution state is not stored for each search node, the state should
    359 // be rebuilt at each node. One simple solution is to apply all decisions
    360 // between the node 'to' and the root. This can be computed in
    361 // O(number_of_items).
    362 //
    363 // However, it is possible to achieve better average complexity. Two
    364 // consecutively explored nodes are usually close enough (i.e., much less than
    365 // number_of_items) to benefit from an incremental update from the node
    366 // 'from' to the node 'to'.
    367 //
    368 // The 'via' field is the common parent of 'from' field and 'to' field.
    369 // So the state can be built by reverting all decisions from 'from' to 'via'
    370 // and then applying all decisions from 'via' to 'to'.
    372  public:
    374  const KnapsackSearchNode& to);
    375  void Init();
    376  const KnapsackSearchNode& from() const { return from_; }
    377  const KnapsackSearchNode& via() const { return *via_; }
    378  const KnapsackSearchNode& to() const { return to_; }
    380  int depth) const;
    381 
    382  private:
    383  const KnapsackSearchNode& from_;
    384  const KnapsackSearchNode* via_; // Computed in 'Init'.
    385  const KnapsackSearchNode& to_;
    386 
    387  DISALLOW_COPY_AND_ASSIGN(KnapsackSearchPath);
    388 };
    389 
    390 // ----- KnapsackState -----
    391 // KnapsackState represents a partial solution to the knapsack problem.
    393  public:
    394  KnapsackState();
    395 
    396  // Initializes vectors with number_of_items set to false (i.e. not bound yet).
    397  void Init(int number_of_items);
    398  // Updates the state by applying or reverting a decision.
    399  // Returns false if fails, i.e. trying to apply an inconsistent decision
    400  // to an already assigned item.
    401  bool UpdateState(bool revert, const KnapsackAssignment& assignment);
    402 
    403  int GetNumberOfItems() const { return is_bound_.size(); }
    404  bool is_bound(int id) const { return is_bound_.at(id); }
    405  bool is_in(int id) const { return is_in_.at(id); }
    406 
    407  private:
    408  // Vectors 'is_bound_' and 'is_in_' contain a boolean value for each item.
    409  // 'is_bound_(item_i)' is false when there is no decision for item_i yet.
    410  // When item_i is bound, 'is_in_(item_i)' represents the presence (true) or
    411  // the absence (false) of item_i in the current solution.
    412  std::vector<bool> is_bound_;
    413  std::vector<bool> is_in_;
    414 
    415  DISALLOW_COPY_AND_ASSIGN(KnapsackState);
    416 };
    417 
    418 // ----- KnapsackPropagator -----
    419 // KnapsackPropagator is the base class for modeling and propagating a
    420 // constraint given an assignment.
    421 //
    422 // When some work has to be done both by the base and the derived class,
    423 // a protected pure virtual method ending by 'Propagator' is defined.
    424 // For instance, 'Init' creates a vector of items, and then calls
    425 // 'InitPropagator' to let the derived class perform its own initialization.
    427  public:
    428  explicit KnapsackPropagator(const KnapsackState& state);
    429  virtual ~KnapsackPropagator();
    430 
    431  // Initializes data structure and then calls InitPropagator.
    432  void Init(const std::vector<int64>& profits,
    433  const std::vector<int64>& weights);
    434 
    435  // Updates data structure and then calls UpdatePropagator.
    436  // Returns false when failure.
    437  bool Update(bool revert, const KnapsackAssignment& assignment);
    438  // ComputeProfitBounds should set 'profit_lower_bound_' and
    439  // 'profit_upper_bound_' which are constraint specific.
    440  virtual void ComputeProfitBounds() = 0;
    441  // Returns the id of next item to assign.
    442  // Returns kNoSelection when all items are bound.
    443  virtual int GetNextItemId() const = 0;
    444 
    445  int64 current_profit() const { return current_profit_; }
    446  int64 profit_lower_bound() const { return profit_lower_bound_; }
    447  int64 profit_upper_bound() const { return profit_upper_bound_; }
    448 
    449  // Copies the current state into 'solution'.
    450  // All unbound items are set to false (i.e. not in the knapsack).
    451  // When 'has_one_propagator' is true, CopyCurrentSolutionPropagator is called
    452  // to have a better solution. When there is only one propagator
    453  // there is no need to check the solution with other propagators, so the
    454  // partial solution can be smartly completed.
    455  void CopyCurrentStateToSolution(bool has_one_propagator,
    456  std::vector<bool>* solution) const;
    457 
    458  protected:
    459  // Initializes data structure. This method is called after initialization
    460  // of KnapsackPropagator data structure.
    461  virtual void InitPropagator() = 0;
    462 
    463  // Updates internal data structure incrementally. This method is called
    464  // after update of KnapsackPropagator data structure.
    465  virtual bool UpdatePropagator(bool revert,
    466  const KnapsackAssignment& assignment) = 0;
    467 
    468  // Copies the current state into 'solution'.
    469  // Only unbound items have to be copied as CopyCurrentSolution was already
    470  // called with current state.
    471  // This method is useful when a propagator is able to find a better solution
    472  // than the blind instantiation to false of unbound items.
    474  std::vector<bool>* solution) const = 0;
    475 
    476  const KnapsackState& state() const { return state_; }
    477  const std::vector<KnapsackItemPtr>& items() const { return items_; }
    478 
    479  void set_profit_lower_bound(int64 profit) { profit_lower_bound_ = profit; }
    480  void set_profit_upper_bound(int64 profit) { profit_upper_bound_ = profit; }
    481 
    482  private:
    483  std::vector<KnapsackItemPtr> items_;
    484  int64 current_profit_;
    485  int64 profit_lower_bound_;
    486  int64 profit_upper_bound_;
    487  const KnapsackState& state_;
    488 
    489  DISALLOW_COPY_AND_ASSIGN(KnapsackPropagator);
    490 };
    491 
    492 // ----- KnapsackCapacityPropagator -----
    493 // KnapsackCapacityPropagator is a KnapsackPropagator used to enforce
    494 // a capacity constraint.
    495 // As a KnapsackPropagator is supposed to compute profit lower and upper
    496 // bounds, and get the next item to select, it can be seen as a 0-1 Knapsack
    497 // solver. The most efficient way to compute the upper bound is to iterate on
    498 // items in profit-per-unit-weight decreasing order. The break item is
    499 // commonly defined as the first item for which there is not enough remaining
    500 // capacity. Selecting this break item as the next-item-to-assign usually
    501 // gives the best results (see Greenberg & Hegerich).
    502 //
    503 // This is exactly what is implemented in this class.
    504 //
    505 // When there is only one propagator, it is possible to compute a better
    506 // profit lower bound almost for free. During the scan to find the
    507 // break element all unbound items are added just as if they were part of
    508 // the current solution. This is used in both ComputeProfitBounds and
    509 // CopyCurrentSolutionPropagator.
    510 // For incrementality reasons, the ith item should be accessible in O(1). That's
    511 // the reason why the item vector has to be duplicated 'sorted_items_'.
    513  public:
    514  KnapsackCapacityPropagator(const KnapsackState& state, int64 capacity);
    515  ~KnapsackCapacityPropagator() override;
    516  void ComputeProfitBounds() override;
    517  int GetNextItemId() const override { return break_item_id_; }
    518 
    519  protected:
    520  // Initializes KnapsackCapacityPropagator (e.g., sort items in decreasing
    521  // order).
    522  void InitPropagator() override;
    523  // Updates internal data structure incrementally (i.e., 'consumed_capacity_')
    524  // to avoid a O(number_of_items) scan.
    525  bool UpdatePropagator(bool revert,
    526  const KnapsackAssignment& assignment) override;
    528  std::vector<bool>* solution) const override;
    529 
    530  private:
    531  // An obvious additional profit upper bound corresponds to the linear
    532  // relaxation: remaining_capacity * efficiency of the break item.
    533  // It is possible to do better in O(1), using Martello-Toth bound U2.
    534  // The main idea is to enforce integrality constraint on the break item,
    535  // ie. either the break item is part of the solution, either it is not.
    536  // So basically the linear relaxation is done on the item before the break
    537  // item, or the one after the break item.
    538  // This is what GetAdditionalProfit method implements.
    539  int64 GetAdditionalProfit(int64 remaining_capacity, int break_item_id) const;
    540 
    541  const int64 capacity_;
    542  int64 consumed_capacity_;
    543  int break_item_id_;
    544  std::vector<KnapsackItemPtr> sorted_items_;
    545  int64 profit_max_;
    546 
    547  DISALLOW_COPY_AND_ASSIGN(KnapsackCapacityPropagator);
    548 };
    549 
    550 // ----- BaseKnapsackSolver -----
    551 // This is the base class for knapsack solvers.
    553  public:
    554  explicit BaseKnapsackSolver(const std::string& solver_name)
    555  : solver_name_(solver_name) {}
    556  virtual ~BaseKnapsackSolver() {}
    557 
    558  // Initializes the solver and enters the problem to be solved.
    559  virtual void Init(const std::vector<int64>& profits,
    560  const std::vector<std::vector<int64> >& weights,
    561  const std::vector<int64>& capacities) = 0;
    562 
    563  // Gets the lower and upper bound when the item is in or out of the knapsack.
    564  // To ensure objects are correctly initialized, this method should not be
    565  // called before ::Init.
    566  virtual void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in,
    567  int64* lower_bound,
    568  int64* upper_bound);
    569 
    570  // Solves the problem and returns the profit of the optimal solution.
    571  virtual int64 Solve(TimeLimit* time_limit, bool* is_solution_optimal) = 0;
    572 
    573  // Returns true if the item 'item_id' is packed in the optimal knapsack.
    574  virtual bool best_solution(int item_id) const = 0;
    575 
    576  virtual std::string GetName() const { return solver_name_; }
    577 
    578  private:
    579  const std::string solver_name_;
    580 };
    581 
    582 // ----- KnapsackGenericSolver -----
    583 // KnapsackGenericSolver is the multi-dimensional knapsack solver class.
    584 // In the current implementation, the next item to assign is given by the
    585 // master propagator. Using SetMasterPropagator allows changing the default
    586 // (propagator of the first dimension), and selecting another dimension when
    587 // more constrained.
    588 // TODO(user): In the case of a multi-dimensional knapsack problem, implement
    589 // an aggregated propagator to combine all dimensions and give a better guide
    590 // to select the next item (see, for instance, Dobson's aggregated efficiency).
    592  public:
    593  explicit KnapsackGenericSolver(const std::string& solver_name);
    594  ~KnapsackGenericSolver() override;
    595 
    596  // Initializes the solver and enters the problem to be solved.
    597  void Init(const std::vector<int64>& profits,
    598  const std::vector<std::vector<int64> >& weights,
    599  const std::vector<int64>& capacities) override;
    600  int GetNumberOfItems() const { return state_.GetNumberOfItems(); }
    601  void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in,
    602  int64* lower_bound,
    603  int64* upper_bound) override;
    604 
    605  // Sets which propagator should be used to guide the search.
    606  // 'master_propagator_id' should be in 0..p-1 with p the number of
    607  // propagators.
    608  void set_master_propagator_id(int master_propagator_id) {
    609  master_propagator_id_ = master_propagator_id;
    610  }
    611 
    612  // Solves the problem and returns the profit of the optimal solution.
    613  int64 Solve(TimeLimit* time_limit, bool* is_solution_optimal) override;
    614  // Returns true if the item 'item_id' is packed in the optimal knapsack.
    615  bool best_solution(int item_id) const override {
    616  return best_solution_.at(item_id);
    617  }
    618 
    619  private:
    620  // Clears internal data structure.
    621  void Clear();
    622 
    623  // Updates all propagators reverting/applying all decision on the path.
    624  // Returns true if fails. Note that, even if fails, all propagators should
    625  // be updated to be in a stable state in order to stay incremental.
    626  bool UpdatePropagators(const KnapsackSearchPath& path);
    627  // Updates all propagators reverting/applying one decision.
    628  // Return true if fails. Note that, even if fails, all propagators should
    629  // be updated to be in a stable state in order to stay incremental.
    630  bool IncrementalUpdate(bool revert, const KnapsackAssignment& assignment);
    631  // Updates the best solution if the current solution has a better profit.
    632  void UpdateBestSolution();
    633 
    634  // Returns true if new relevant search node was added to the nodes array, that
    635  // means this node should be added to the search queue too.
    636  bool MakeNewNode(const KnapsackSearchNode& node, bool is_in);
    637 
    638  // Gets the aggregated (min) profit upper bound among all propagators.
    639  int64 GetAggregatedProfitUpperBound() const;
    640  bool HasOnePropagator() const { return propagators_.size() == 1; }
    641  int64 GetCurrentProfit() const {
    642  return propagators_.at(master_propagator_id_)->current_profit();
    643  }
    644  int64 GetNextItemId() const {
    645  return propagators_.at(master_propagator_id_)->GetNextItemId();
    646  }
    647 
    648  std::vector<KnapsackPropagator*> propagators_;
    649  int master_propagator_id_;
    650  std::vector<KnapsackSearchNode*> search_nodes_;
    651  KnapsackState state_;
    652  int64 best_solution_profit_;
    653  std::vector<bool> best_solution_;
    654 
    655  DISALLOW_COPY_AND_ASSIGN(KnapsackGenericSolver);
    656 };
    657 #endif // SWIG
    658 } // namespace operations_research
    659 
    660 #endif // OR_TOOLS_ALGORITHMS_KNAPSACK_SOLVER_H_
    const KnapsackSearchNode & to() const
    - -
    const KnapsackSearchNode & via() const
    -
    KnapsackItem(int _id, int64 _weight, int64 _profit)
    - -
    KnapsackAssignment(int _item_id, bool _is_in)
    -
    const KnapsackState & state() const
    -
    const std::vector< KnapsackItemPtr > & items() const
    - +Go to the documentation of this file.
    1 // Copyright 2010-2018 Google LLC
    2 // Licensed under the Apache License, Version 2.0 (the "License");
    3 // you may not use this file except in compliance with the License.
    4 // You may obtain a copy of the License at
    5 //
    6 // http://www.apache.org/licenses/LICENSE-2.0
    7 //
    8 // Unless required by applicable law or agreed to in writing, software
    9 // distributed under the License is distributed on an "AS IS" BASIS,
    10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11 // See the License for the specific language governing permissions and
    12 // limitations under the License.
    13 
    14 #ifndef OR_TOOLS_ALGORITHMS_KNAPSACK_SOLVER_H_
    15 #define OR_TOOLS_ALGORITHMS_KNAPSACK_SOLVER_H_
    16 
    17 #include <math.h>
    18 
    19 #include <memory>
    20 #include <string>
    21 #include <vector>
    22 
    23 #include "absl/memory/memory.h"
    24 #include "ortools/base/basictypes.h"
    25 #include "ortools/base/integral_types.h"
    26 #include "ortools/base/logging.h"
    27 #include "ortools/base/macros.h"
    28 #include "ortools/util/time_limit.h"
    29 
    30 namespace operations_research {
    31 
    32 class BaseKnapsackSolver;
    33 
    121  public:
    127  enum SolverType {
    135 
    143 
    151 
    152 #if defined(USE_CBC)
    153 
    159 #endif // USE_CBC
    160 
    167 
    168 #if defined(USE_SCIP)
    169 
    175 #endif // USE_SCIP
    176  };
    177 
    178  explicit KnapsackSolver(const std::string &solver_name);
    179  KnapsackSolver(SolverType solver_type, const std::string &solver_name);
    180  virtual ~KnapsackSolver();
    181 
    185  void Init(const std::vector<int64> &profits,
    186  const std::vector<std::vector<int64>> &weights,
    187  const std::vector<int64> &capacities);
    188 
    192  int64 Solve();
    193 
    197  bool BestSolutionContains(int item_id) const;
    201  bool IsSolutionOptimal() const { return is_solution_optimal_; }
    202  std::string GetName() const;
    203 
    204  bool use_reduction() const { return use_reduction_; }
    206  use_reduction_ = use_reduction;
    207  }
    208 
    214  void set_time_limit(double time_limit_seconds) {
    215  time_limit_seconds_ = time_limit_seconds;
    216  time_limit_ = absl::make_unique<TimeLimit>(time_limit_seconds_);
    217  }
    218 
    219  private:
    220  // Trivial reduction of capacity constraints when the capacity is higher than
    221  // the sum of the weights of the items. Returns the number of reduced items.
    222  int ReduceCapacities(int num_items,
    223  const std::vector<std::vector<int64> >& weights,
    224  const std::vector<int64>& capacities,
    225  std::vector<std::vector<int64> >* reduced_weights,
    226  std::vector<int64>* reduced_capacities);
    227  int ReduceProblem(int num_items);
    228  void ComputeAdditionalProfit(const std::vector<int64>& profits);
    229  void InitReducedProblem(const std::vector<int64>& profits,
    230  const std::vector<std::vector<int64> >& weights,
    231  const std::vector<int64>& capacities);
    232 
    233  std::unique_ptr<BaseKnapsackSolver> solver_;
    234  std::vector<bool> known_value_;
    235  std::vector<bool> best_solution_;
    236  bool is_solution_optimal_ = false;
    237  std::vector<int> mapping_reduced_item_id_;
    238  bool is_problem_solved_;
    239  int64 additional_profit_;
    240  bool use_reduction_;
    241  double time_limit_seconds_;
    242  std::unique_ptr<TimeLimit> time_limit_;
    243 
    244  DISALLOW_COPY_AND_ASSIGN(KnapsackSolver);
    245 };
    246 
    247 #if !defined(SWIG)
    248 // The following code defines needed classes for the KnapsackGenericSolver
    249 // class which is the entry point to extend knapsack with new constraints such
    250 // as conflicts between items.
    251 //
    252 // Constraints are enforced using KnapsackPropagator objects, in the current
    253 // code there is one propagator per dimension (KnapsackCapacityPropagator).
    254 // One of those propagators, named master propagator, is used to guide the
    255 // search, i.e. decides which item should be assigned next.
    256 // Roughly speaking the search algorithm is:
    257 // - While not optimal
    258 // - Select next search node to expand
    259 // - Select next item_i to assign (using master propagator)
    260 // - Generate a new search node where item_i is in the knapsack
    261 // - Check validity of this new partial solution (using propagators)
    262 // - If valid, add this new search node to the search
    263 // - Generate a new search node where item_i is not in the knapsack
    264 // - Check validity of this new partial solution (using propagators)
    265 // - If valid, add this new search node to the search
    266 //
    267 // TODO(user): Add a new propagator class for conflict constraint.
    268 // TODO(user): Add a new propagator class used as a guide when the problem has
    269 // several dimensions.
    270 
    271 // ----- KnapsackAssignement -----
    272 // KnapsackAssignement is a small struct used to pair an item with its
    273 // assignment. It is mainly used for search nodes and updates.
    275  KnapsackAssignment(int _item_id, bool _is_in)
    276  : item_id(_item_id), is_in(_is_in) {}
    277  int item_id;
    278  bool is_in;
    279 };
    280 
    281 // ----- KnapsackItem -----
    282 // KnapsackItem is a small struct to pair an item weight with its
    283 // corresponding profit.
    284 // The aim of the knapsack problem is to pack as many valuable items as
    285 // possible. A straight forward heuristic is to take those with the greatest
    286 // profit-per-unit-weight. This ratio is called efficiency in this
    287 // implementation. So items will be grouped in vectors, and sorted by
    288 // decreasing efficiency.
    289 // Note that profits are duplicated for each dimension. This is done to
    290 // simplify the code, especially the GetEfficiency method and vector sorting.
    291 // As there usually are only few dimensions, the overhead should not be an
    292 // issue.
    293 struct KnapsackItem {
    294  KnapsackItem(int _id, int64 _weight, int64 _profit)
    295  : id(_id), weight(_weight), profit(_profit) {}
    296  double GetEfficiency(int64 profit_max) const {
    297  return (weight > 0)
    298  ? static_cast<double>(profit) / static_cast<double>(weight)
    299  : static_cast<double>(profit_max);
    300  }
    301 
    302  // The 'id' field is used to retrieve the initial item in order to
    303  // communicate with other propagators and state.
    304  const int id;
    305  const int64 weight;
    306  const int64 profit;
    307 };
    309 
    310 // ----- KnapsackSearchNode -----
    311 // KnapsackSearchNode is a class used to describe a decision in the decision
    312 // search tree.
    313 // The node is defined by a pointer to the parent search node and an
    314 // assignment (see KnapsackAssignement).
    315 // As the current state is not explicitly stored in a search node, one should
    316 // go through the search tree to incrementally build a partial solution from
    317 // a previous search node.
    319  public:
    322  int depth() const { return depth_; }
    323  const KnapsackSearchNode* const parent() const { return parent_; }
    324  const KnapsackAssignment& assignment() const { return assignment_; }
    325 
    326  int64 current_profit() const { return current_profit_; }
    327  void set_current_profit(int64 profit) { current_profit_ = profit; }
    328 
    329  int64 profit_upper_bound() const { return profit_upper_bound_; }
    330  void set_profit_upper_bound(int64 profit) { profit_upper_bound_ = profit; }
    331 
    332  int next_item_id() const { return next_item_id_; }
    333  void set_next_item_id(int id) { next_item_id_ = id; }
    334 
    335  private:
    336  // 'depth' field is used to navigate efficiently through the search tree
    337  // (see KnapsackSearchPath).
    338  int depth_;
    339  const KnapsackSearchNode* const parent_;
    340  KnapsackAssignment assignment_;
    341 
    342  // 'current_profit' and 'profit_upper_bound' fields are used to sort search
    343  // nodes using a priority queue. That allows to pop the node with the best
    344  // upper bound, and more importantly to stop the search when optimality is
    345  // proved.
    346  int64 current_profit_;
    347  int64 profit_upper_bound_;
    348 
    349  // 'next_item_id' field allows to avoid an O(number_of_items) scan to find
    350  // next item to select. This is done for free by the upper bound computation.
    351  int next_item_id_;
    352 
    353  DISALLOW_COPY_AND_ASSIGN(KnapsackSearchNode);
    354 };
    355 
    356 // ----- KnapsackSearchPath -----
    357 // KnapsackSearchPath is a small class used to represent the path between a
    358 // node to another node in the search tree.
    359 // As the solution state is not stored for each search node, the state should
    360 // be rebuilt at each node. One simple solution is to apply all decisions
    361 // between the node 'to' and the root. This can be computed in
    362 // O(number_of_items).
    363 //
    364 // However, it is possible to achieve better average complexity. Two
    365 // consecutively explored nodes are usually close enough (i.e., much less than
    366 // number_of_items) to benefit from an incremental update from the node
    367 // 'from' to the node 'to'.
    368 //
    369 // The 'via' field is the common parent of 'from' field and 'to' field.
    370 // So the state can be built by reverting all decisions from 'from' to 'via'
    371 // and then applying all decisions from 'via' to 'to'.
    373  public:
    375  const KnapsackSearchNode& to);
    376  void Init();
    377  const KnapsackSearchNode& from() const { return from_; }
    378  const KnapsackSearchNode& via() const { return *via_; }
    379  const KnapsackSearchNode& to() const { return to_; }
    381  int depth) const;
    382 
    383  private:
    384  const KnapsackSearchNode& from_;
    385  const KnapsackSearchNode* via_; // Computed in 'Init'.
    386  const KnapsackSearchNode& to_;
    387 
    388  DISALLOW_COPY_AND_ASSIGN(KnapsackSearchPath);
    389 };
    390 
    391 // ----- KnapsackState -----
    392 // KnapsackState represents a partial solution to the knapsack problem.
    394  public:
    395  KnapsackState();
    396 
    397  // Initializes vectors with number_of_items set to false (i.e. not bound yet).
    398  void Init(int number_of_items);
    399  // Updates the state by applying or reverting a decision.
    400  // Returns false if fails, i.e. trying to apply an inconsistent decision
    401  // to an already assigned item.
    402  bool UpdateState(bool revert, const KnapsackAssignment& assignment);
    403 
    404  int GetNumberOfItems() const { return is_bound_.size(); }
    405  bool is_bound(int id) const { return is_bound_.at(id); }
    406  bool is_in(int id) const { return is_in_.at(id); }
    407 
    408  private:
    409  // Vectors 'is_bound_' and 'is_in_' contain a boolean value for each item.
    410  // 'is_bound_(item_i)' is false when there is no decision for item_i yet.
    411  // When item_i is bound, 'is_in_(item_i)' represents the presence (true) or
    412  // the absence (false) of item_i in the current solution.
    413  std::vector<bool> is_bound_;
    414  std::vector<bool> is_in_;
    415 
    416  DISALLOW_COPY_AND_ASSIGN(KnapsackState);
    417 };
    418 
    419 // ----- KnapsackPropagator -----
    420 // KnapsackPropagator is the base class for modeling and propagating a
    421 // constraint given an assignment.
    422 //
    423 // When some work has to be done both by the base and the derived class,
    424 // a protected pure virtual method ending by 'Propagator' is defined.
    425 // For instance, 'Init' creates a vector of items, and then calls
    426 // 'InitPropagator' to let the derived class perform its own initialization.
    428  public:
    429  explicit KnapsackPropagator(const KnapsackState& state);
    430  virtual ~KnapsackPropagator();
    431 
    432  // Initializes data structure and then calls InitPropagator.
    433  void Init(const std::vector<int64>& profits,
    434  const std::vector<int64>& weights);
    435 
    436  // Updates data structure and then calls UpdatePropagator.
    437  // Returns false when failure.
    438  bool Update(bool revert, const KnapsackAssignment& assignment);
    439  // ComputeProfitBounds should set 'profit_lower_bound_' and
    440  // 'profit_upper_bound_' which are constraint specific.
    441  virtual void ComputeProfitBounds() = 0;
    442  // Returns the id of next item to assign.
    443  // Returns kNoSelection when all items are bound.
    444  virtual int GetNextItemId() const = 0;
    445 
    446  int64 current_profit() const { return current_profit_; }
    447  int64 profit_lower_bound() const { return profit_lower_bound_; }
    448  int64 profit_upper_bound() const { return profit_upper_bound_; }
    449 
    450  // Copies the current state into 'solution'.
    451  // All unbound items are set to false (i.e. not in the knapsack).
    452  // When 'has_one_propagator' is true, CopyCurrentSolutionPropagator is called
    453  // to have a better solution. When there is only one propagator
    454  // there is no need to check the solution with other propagators, so the
    455  // partial solution can be smartly completed.
    456  void CopyCurrentStateToSolution(bool has_one_propagator,
    457  std::vector<bool>* solution) const;
    458 
    459  protected:
    460  // Initializes data structure. This method is called after initialization
    461  // of KnapsackPropagator data structure.
    462  virtual void InitPropagator() = 0;
    463 
    464  // Updates internal data structure incrementally. This method is called
    465  // after update of KnapsackPropagator data structure.
    466  virtual bool UpdatePropagator(bool revert,
    467  const KnapsackAssignment& assignment) = 0;
    468 
    469  // Copies the current state into 'solution'.
    470  // Only unbound items have to be copied as CopyCurrentSolution was already
    471  // called with current state.
    472  // This method is useful when a propagator is able to find a better solution
    473  // than the blind instantiation to false of unbound items.
    475  std::vector<bool>* solution) const = 0;
    476 
    477  const KnapsackState& state() const { return state_; }
    478  const std::vector<KnapsackItemPtr>& items() const { return items_; }
    479 
    480  void set_profit_lower_bound(int64 profit) { profit_lower_bound_ = profit; }
    481  void set_profit_upper_bound(int64 profit) { profit_upper_bound_ = profit; }
    482 
    483  private:
    484  std::vector<KnapsackItemPtr> items_;
    485  int64 current_profit_;
    486  int64 profit_lower_bound_;
    487  int64 profit_upper_bound_;
    488  const KnapsackState& state_;
    489 
    490  DISALLOW_COPY_AND_ASSIGN(KnapsackPropagator);
    491 };
    492 
    493 // ----- KnapsackCapacityPropagator -----
    494 // KnapsackCapacityPropagator is a KnapsackPropagator used to enforce
    495 // a capacity constraint.
    496 // As a KnapsackPropagator is supposed to compute profit lower and upper
    497 // bounds, and get the next item to select, it can be seen as a 0-1 Knapsack
    498 // solver. The most efficient way to compute the upper bound is to iterate on
    499 // items in profit-per-unit-weight decreasing order. The break item is
    500 // commonly defined as the first item for which there is not enough remaining
    501 // capacity. Selecting this break item as the next-item-to-assign usually
    502 // gives the best results (see Greenberg & Hegerich).
    503 //
    504 // This is exactly what is implemented in this class.
    505 //
    506 // When there is only one propagator, it is possible to compute a better
    507 // profit lower bound almost for free. During the scan to find the
    508 // break element all unbound items are added just as if they were part of
    509 // the current solution. This is used in both ComputeProfitBounds and
    510 // CopyCurrentSolutionPropagator.
    511 // For incrementality reasons, the ith item should be accessible in O(1). That's
    512 // the reason why the item vector has to be duplicated 'sorted_items_'.
    514  public:
    515  KnapsackCapacityPropagator(const KnapsackState& state, int64 capacity);
    516  ~KnapsackCapacityPropagator() override;
    517  void ComputeProfitBounds() override;
    518  int GetNextItemId() const override { return break_item_id_; }
    519 
    520  protected:
    521  // Initializes KnapsackCapacityPropagator (e.g., sort items in decreasing
    522  // order).
    523  void InitPropagator() override;
    524  // Updates internal data structure incrementally (i.e., 'consumed_capacity_')
    525  // to avoid a O(number_of_items) scan.
    526  bool UpdatePropagator(bool revert,
    527  const KnapsackAssignment& assignment) override;
    529  std::vector<bool>* solution) const override;
    530 
    531  private:
    532  // An obvious additional profit upper bound corresponds to the linear
    533  // relaxation: remaining_capacity * efficiency of the break item.
    534  // It is possible to do better in O(1), using Martello-Toth bound U2.
    535  // The main idea is to enforce integrality constraint on the break item,
    536  // ie. either the break item is part of the solution, either it is not.
    537  // So basically the linear relaxation is done on the item before the break
    538  // item, or the one after the break item.
    539  // This is what GetAdditionalProfit method implements.
    540  int64 GetAdditionalProfit(int64 remaining_capacity, int break_item_id) const;
    541 
    542  const int64 capacity_;
    543  int64 consumed_capacity_;
    544  int break_item_id_;
    545  std::vector<KnapsackItemPtr> sorted_items_;
    546  int64 profit_max_;
    547 
    548  DISALLOW_COPY_AND_ASSIGN(KnapsackCapacityPropagator);
    549 };
    550 
    551 // ----- BaseKnapsackSolver -----
    552 // This is the base class for knapsack solvers.
    554  public:
    555  explicit BaseKnapsackSolver(const std::string& solver_name)
    556  : solver_name_(solver_name) {}
    557  virtual ~BaseKnapsackSolver() {}
    558 
    559  // Initializes the solver and enters the problem to be solved.
    560  virtual void Init(const std::vector<int64>& profits,
    561  const std::vector<std::vector<int64> >& weights,
    562  const std::vector<int64>& capacities) = 0;
    563 
    564  // Gets the lower and upper bound when the item is in or out of the knapsack.
    565  // To ensure objects are correctly initialized, this method should not be
    566  // called before ::Init.
    567  virtual void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in,
    568  int64* lower_bound,
    569  int64* upper_bound);
    570 
    571  // Solves the problem and returns the profit of the optimal solution.
    572  virtual int64 Solve(TimeLimit* time_limit, bool* is_solution_optimal) = 0;
    573 
    574  // Returns true if the item 'item_id' is packed in the optimal knapsack.
    575  virtual bool best_solution(int item_id) const = 0;
    576 
    577  virtual std::string GetName() const { return solver_name_; }
    578 
    579  private:
    580  const std::string solver_name_;
    581 };
    582 
    583 // ----- KnapsackGenericSolver -----
    584 // KnapsackGenericSolver is the multi-dimensional knapsack solver class.
    585 // In the current implementation, the next item to assign is given by the
    586 // master propagator. Using SetMasterPropagator allows changing the default
    587 // (propagator of the first dimension), and selecting another dimension when
    588 // more constrained.
    589 // TODO(user): In the case of a multi-dimensional knapsack problem, implement
    590 // an aggregated propagator to combine all dimensions and give a better guide
    591 // to select the next item (see, for instance, Dobson's aggregated efficiency).
    593  public:
    594  explicit KnapsackGenericSolver(const std::string& solver_name);
    595  ~KnapsackGenericSolver() override;
    596 
    597  // Initializes the solver and enters the problem to be solved.
    598  void Init(const std::vector<int64>& profits,
    599  const std::vector<std::vector<int64> >& weights,
    600  const std::vector<int64>& capacities) override;
    601  int GetNumberOfItems() const { return state_.GetNumberOfItems(); }
    602  void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in,
    603  int64* lower_bound,
    604  int64* upper_bound) override;
    605 
    606  // Sets which propagator should be used to guide the search.
    607  // 'master_propagator_id' should be in 0..p-1 with p the number of
    608  // propagators.
    609  void set_master_propagator_id(int master_propagator_id) {
    610  master_propagator_id_ = master_propagator_id;
    611  }
    612 
    613  // Solves the problem and returns the profit of the optimal solution.
    614  int64 Solve(TimeLimit* time_limit, bool* is_solution_optimal) override;
    615  // Returns true if the item 'item_id' is packed in the optimal knapsack.
    616  bool best_solution(int item_id) const override {
    617  return best_solution_.at(item_id);
    618  }
    619 
    620  private:
    621  // Clears internal data structure.
    622  void Clear();
    623 
    624  // Updates all propagators reverting/applying all decision on the path.
    625  // Returns true if fails. Note that, even if fails, all propagators should
    626  // be updated to be in a stable state in order to stay incremental.
    627  bool UpdatePropagators(const KnapsackSearchPath& path);
    628  // Updates all propagators reverting/applying one decision.
    629  // Return true if fails. Note that, even if fails, all propagators should
    630  // be updated to be in a stable state in order to stay incremental.
    631  bool IncrementalUpdate(bool revert, const KnapsackAssignment& assignment);
    632  // Updates the best solution if the current solution has a better profit.
    633  void UpdateBestSolution();
    634 
    635  // Returns true if new relevant search node was added to the nodes array, that
    636  // means this node should be added to the search queue too.
    637  bool MakeNewNode(const KnapsackSearchNode& node, bool is_in);
    638 
    639  // Gets the aggregated (min) profit upper bound among all propagators.
    640  int64 GetAggregatedProfitUpperBound() const;
    641  bool HasOnePropagator() const { return propagators_.size() == 1; }
    642  int64 GetCurrentProfit() const {
    643  return propagators_.at(master_propagator_id_)->current_profit();
    644  }
    645  int64 GetNextItemId() const {
    646  return propagators_.at(master_propagator_id_)->GetNextItemId();
    647  }
    648 
    649  std::vector<KnapsackPropagator*> propagators_;
    650  int master_propagator_id_;
    651  std::vector<KnapsackSearchNode*> search_nodes_;
    652  KnapsackState state_;
    653  int64 best_solution_profit_;
    654  std::vector<bool> best_solution_;
    655 
    656  DISALLOW_COPY_AND_ASSIGN(KnapsackGenericSolver);
    657 };
    658 #endif // SWIG
    659 } // namespace operations_research
    660 
    661 #endif // OR_TOOLS_ALGORITHMS_KNAPSACK_SOLVER_H_
    const KnapsackSearchNode & to() const
    + +
    const KnapsackSearchNode & via() const
    +
    KnapsackItem(int _id, int64 _weight, int64 _profit)
    + +
    KnapsackAssignment(int _item_id, bool _is_in)
    +
    const KnapsackState & state() const
    +
    const std::vector< KnapsackItemPtr > & items() const
    +
    void Init(int number_of_items)
    bool Update(bool revert, const KnapsackAssignment &assignment)
    void CopyCurrentStateToSolutionPropagator(std::vector< bool > *solution) const override
    virtual void Init(const std::vector< int64 > &profits, const std::vector< std::vector< int64 > > &weights, const std::vector< int64 > &capacities)=0
    - +
    bool BestSolutionContains(int item_id) const
    Returns true if the item 'item_id' is packed in the optimal knapsack.
    -
    const KnapsackSearchNode & from() const
    - -
    double GetEfficiency(int64 profit_max) const
    - - -
    bool IsSolutionOptimal() const
    Returns true if the solution was proven optimal.
    - - -
    bool best_solution(int item_id) const override
    +
    const KnapsackSearchNode & from() const
    + +
    double GetEfficiency(int64 profit_max) const
    + + +
    bool IsSolutionOptimal() const
    Returns true if the solution was proven optimal.
    + + +
    bool best_solution(int item_id) const override
    -
    void set_master_propagator_id(int master_propagator_id)
    +
    void set_master_propagator_id(int master_propagator_id)
    - - - + + +
    KnapsackSearchPath(const KnapsackSearchNode &from, const KnapsackSearchNode &to)
    virtual bool UpdatePropagator(bool revert, const KnapsackAssignment &assignment)=0
    KnapsackSearchNode(const KnapsackSearchNode *const parent, const KnapsackAssignment &assignment)
    virtual bool best_solution(int item_id) const =0
    -
    This library solves knapsack problems.
    - - - - +
    This library solves knapsack problems.
    + + + +
    void Init(const std::vector< int64 > &profits, const std::vector< std::vector< int64 > > &weights, const std::vector< int64 > &capacities) override
    - -
    const KnapsackAssignment & assignment() const
    -
    SolverType
    Enum controlling which underlying algorithm is used.
    + +
    const KnapsackAssignment & assignment() const
    +
    SolverType
    Enum controlling which underlying algorithm is used.
    -
    void set_use_reduction(bool use_reduction)
    - +
    void set_use_reduction(bool use_reduction)
    +
    virtual void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in, int64 *lower_bound, int64 *upper_bound)
    - +
    void Init(const std::vector< int64 > &profits, const std::vector< int64 > &weights)
    - -
    const KnapsackSearchNode *const parent() const
    + +
    const KnapsackSearchNode *const parent() const
    KnapsackSolver(const std::string &solver_name)
    - -
    BaseKnapsackSolver(const std::string &solver_name)
    + +
    BaseKnapsackSolver(const std::string &solver_name)
    KnapsackCapacityPropagator(const KnapsackState &state, int64 capacity)
    int64 Solve(TimeLimit *time_limit, bool *is_solution_optimal) override
    bool UpdatePropagator(bool revert, const KnapsackAssignment &assignment) override
    - + - - -
    Dynamic Programming approach for single dimension problems.
    - + + +
    Dynamic Programming approach for single dimension problems.
    +
    virtual int64 Solve(TimeLimit *time_limit, bool *is_solution_optimal)=0
    - +
    void Init(const std::vector< int64 > &profits, const std::vector< std::vector< int64 >> &weights, const std::vector< int64 > &capacities)
    Initializes the solver and enters the problem to be solved.
    virtual void CopyCurrentStateToSolutionPropagator(std::vector< bool > *solution) const =0
    - - + +
    const KnapsackSearchNode * MoveUpToDepth(const KnapsackSearchNode &node, int depth) const
    - -
    void set_time_limit(double time_limit_seconds)
    Time limit in seconds.
    - + +
    void set_time_limit(double time_limit_seconds)
    Time limit in seconds.
    +
    KnapsackGenericSolver(const std::string &solver_name)
    - + - +
    bool UpdateState(bool revert, const KnapsackAssignment &assignment)
    void CopyCurrentStateToSolution(bool has_one_propagator, std::vector< bool > *solution) const
    virtual int GetNextItemId() const =0
    void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in, int64 *lower_bound, int64 *upper_bound) override
    - +
    KnapsackPropagator(const KnapsackState &state)
    - -
    Optimized method for single dimension small problems.
    - + +
    Optimized method for single dimension small problems.
    +
    int64 Solve()
    Solves the problem and returns the profit of the optimal solution.
    -
    KnapsackItem * KnapsackItemPtr
    -
    virtual std::string GetName() const
    - - +
    KnapsackItem * KnapsackItemPtr
    +
    virtual std::string GetName() const
    + +
    +
    +
    + +
    +
    +
    + +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    • KnapsackItemPtr @@ -53,6 +69,7 @@
    +
    +
    + +
    +
    +
    + +
     
    • MaximizeLinearAssignment() @@ -50,6 +66,7 @@
    +
    +
    + +
    +
    +
    + +
     
    • KnapsackItemPtr @@ -47,6 +63,7 @@
    +
    +
    + +
    +
    +
    + +
    Classes | @@ -104,7 +120,7 @@ Functions
    -

    Definition at line 307 of file knapsack_solver.h.

    +

    Definition at line 308 of file knapsack_solver.h.

    @@ -178,6 +194,7 @@ Functions
    + +
    + +
    +
    +
    + +
    Namespace List
    @@ -44,6 +60,7 @@
    + - +
    + +
    +
    +
    + +
    Classes | @@ -52,10 +64,10 @@ Include dependency graph for sparse_permutation.h:
    - - - - + + + +
    @@ -74,6 +86,7 @@ Namespaces  
    + +
    + +
    +
    +
    + + + +
    + +
    +
    +
    + +
    operations_research::DynamicPartition::IterablePart Member List
    @@ -57,6 +68,7 @@ size() constoperations_research::DynamicPartition::IterablePartinline value_type typedefoperations_research::DynamicPartition::IterablePart
    +
    +
    + +
    +
    +
    + +
    Public Types | @@ -49,9 +60,10 @@
    operations_research::DynamicPartition::IterablePart Struct Reference
    - -

    #include <dynamic_partition.h>

    - +

    Detailed Description

    +
    +

    Definition at line 183 of file dynamic_partition.h.

    +
    @@ -79,10 +91,7 @@ Public Attributes

    Public Types

    typedef int value_type
    std::vector< int >::const_iterator end_
     
    -

    Detailed Description

    -
    -

    Definition at line 183 of file dynamic_partition.h.

    -

    Member Typedef Documentation

    +

    Member Typedef Documentation

    ◆ const_iterator

    @@ -300,6 +309,7 @@ Public Attributes
  • dynamic_partition.h
  • +
    +
    + +
    +
    +
    + +
    operations_research::KnapsackAssignment Member List
    @@ -51,6 +62,7 @@ item_idoperations_research::KnapsackAssignment KnapsackAssignment(int _item_id, bool _is_in)operations_research::KnapsackAssignmentinline
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -48,9 +59,10 @@
    operations_research::KnapsackAssignment Struct Reference
    - -

    #include <knapsack_solver.h>

    - +

    Detailed Description

    +
    +

    Definition at line 274 of file knapsack_solver.h.

    +
    @@ -63,10 +75,7 @@ Public Attributes

    Public Member Functions

     KnapsackAssignment (int _item_id, bool _is_in)
    bool is_in
     
    -

    Detailed Description

    -
    -

    Definition at line 273 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackAssignment()

    @@ -101,7 +110,7 @@ Public Attributes
    -

    Definition at line 274 of file knapsack_solver.h.

    +

    Definition at line 275 of file knapsack_solver.h.

    @@ -118,7 +127,7 @@ Public Attributes
    -

    Definition at line 277 of file knapsack_solver.h.

    +

    Definition at line 278 of file knapsack_solver.h.

    @@ -134,7 +143,7 @@ Public Attributes
    -

    Definition at line 276 of file knapsack_solver.h.

    +

    Definition at line 277 of file knapsack_solver.h.

    @@ -142,6 +151,7 @@ Public Attributes
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::KnapsackItem Member List
    @@ -53,6 +64,7 @@ profitoperations_research::KnapsackItem weightoperations_research::KnapsackItem
    +
    +
    + +
    +
    +
    + +
    Public Member Functions | @@ -48,9 +59,10 @@
    operations_research::KnapsackItem Struct Reference
    - -

    #include <knapsack_solver.h>

    - +

    Detailed Description

    +
    +

    Definition at line 293 of file knapsack_solver.h.

    +
    @@ -67,10 +79,7 @@ Public Attributes

    Public Member Functions

     KnapsackItem (int _id, int64 _weight, int64 _profit)
    const int64 profit
     
    -

    Detailed Description

    -
    -

    Definition at line 292 of file knapsack_solver.h.

    -

    Constructor & Destructor Documentation

    +

    Constructor & Destructor Documentation

    ◆ KnapsackItem()

    @@ -111,7 +120,7 @@ Public Attributes
    -

    Definition at line 293 of file knapsack_solver.h.

    +

    Definition at line 294 of file knapsack_solver.h.

    @@ -140,7 +149,7 @@ Public Attributes
    -

    Definition at line 295 of file knapsack_solver.h.

    +

    Definition at line 296 of file knapsack_solver.h.

    @@ -157,7 +166,7 @@ Public Attributes
    -

    Definition at line 303 of file knapsack_solver.h.

    +

    Definition at line 304 of file knapsack_solver.h.

    @@ -173,7 +182,7 @@ Public Attributes
    -

    Definition at line 305 of file knapsack_solver.h.

    +

    Definition at line 306 of file knapsack_solver.h.

    @@ -189,7 +198,7 @@ Public Attributes
    -

    Definition at line 304 of file knapsack_solver.h.

    +

    Definition at line 305 of file knapsack_solver.h.

    @@ -197,6 +206,7 @@ Public Attributes
  • knapsack_solver.h
  • + +
    + +
    +
    +
    + +
    operations_research::SparsePermutation::Iterator Member List
    @@ -57,6 +68,7 @@ size() constoperations_research::SparsePermutation::Iteratorinline value_type typedefoperations_research::SparsePermutation::Iterator
    +
    +
    + +
    +
    +
    + +
    Public Types | @@ -49,9 +60,10 @@
    operations_research::SparsePermutation::Iterator Struct Reference
    - -

    #include <sparse_permutation.h>

    - +

    Detailed Description

    +
    +

    Definition at line 99 of file sparse_permutation.h.

    +
    @@ -79,10 +91,7 @@ Public Attributes

    Public Types

    typedef int value_type
    const std::vector< int >::const_iterator end_
     
    -

    Detailed Description

    -
    -

    Definition at line 99 of file sparse_permutation.h.

    -

    Member Typedef Documentation

    +

    Member Typedef Documentation

    ◆ const_iterator

    @@ -300,6 +309,7 @@ Public Attributes
  • sparse_permutation.h
  • +
    -Go to the documentation of this file.
    1 /* ----------------------------------------------------------------------------
    2  * This file was automatically generated by SWIG (http://www.swig.org).
    3  * Version 4.0.0
    4  *
    5  * Do not make changes to this file unless you know what you are doing--modify
    6  * the SWIG interface file instead.
    7  * ----------------------------------------------------------------------------- */
    8 
    9 package com.google.ortools.constraintsolver;
    10 
    11 // Used to wrap RoutingTransitCallback2
    12 // see https://docs.oracle.com/javase/8/docs/api/java/util/function/LongBinaryOperator.html
    13 import java.util.function.LongBinaryOperator;
    14 // Used to wrap RoutingTransitCallback1
    15 // see https://docs.oracle.com/javase/8/docs/api/java/util/function/LongUnaryOperator.html
    16 import java.util.function.LongUnaryOperator;
    17 
    18 public class RoutingModel {
    19  private transient long swigCPtr;
    20  protected transient boolean swigCMemOwn;
    21 
    22  protected RoutingModel(long cPtr, boolean cMemoryOwn) {
    23  swigCMemOwn = cMemoryOwn;
    24  swigCPtr = cPtr;
    25  }
    26 
    27  protected static long getCPtr(RoutingModel obj) {
    28  return (obj == null) ? 0 : obj.swigCPtr;
    29  }
    30 
    31  @SuppressWarnings("deprecation")
    32  protected void finalize() {
    33  delete();
    34  }
    35 
    36  public synchronized void delete() {
    37  if (swigCPtr != 0) {
    38  if (swigCMemOwn) {
    39  swigCMemOwn = false;
    40  mainJNI.delete_RoutingModel(swigCPtr);
    41  }
    42  swigCPtr = 0;
    43  }
    44  }
    45 
    49  public static long getKNoPenalty() {
    50  return mainJNI.RoutingModel_kNoPenalty_get();
    51  }
    52 
    56  public static int getKNoDisjunction() {
    57  return mainJNI.RoutingModel_kNoDisjunction_get();
    58 }
    59 
    63  public static int getKNoDimension() {
    64  return mainJNI.RoutingModel_kNoDimension_get();
    65 }
    66 
    70  public RoutingModel(RoutingIndexManager index_manager) {
    71  this(mainJNI.new_RoutingModel__SWIG_0(RoutingIndexManager.getCPtr(index_manager), index_manager), true);
    72  }
    73 
    75  this(mainJNI.new_RoutingModel__SWIG_1(RoutingIndexManager.getCPtr(index_manager), index_manager, parameters.toByteArray()), true);
    76  }
    77 
    81  public int registerUnaryTransitCallback(LongUnaryOperator callback) {
    82  return mainJNI.RoutingModel_registerUnaryTransitCallback(swigCPtr, this, callback);
    83  }
    84 
    85  public int registerTransitCallback(LongBinaryOperator callback) {
    86  return mainJNI.RoutingModel_registerTransitCallback(swigCPtr, this, callback);
    87  }
    88 
    89  public int registerPositiveTransitCallback(LongBinaryOperator callback) {
    90  return mainJNI.RoutingModel_registerPositiveTransitCallback(swigCPtr, this, callback);
    91  }
    92 
    96  public boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
    97  return mainJNI.RoutingModel_addDimension(swigCPtr, this, evaluator_index, slack_max, capacity, fix_start_cumul_to_zero, name);
    98  }
    99 
    100  public boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
    101  return mainJNI.RoutingModel_addDimensionWithVehicleTransits(swigCPtr, this, evaluator_indices, slack_max, capacity, fix_start_cumul_to_zero, name);
    102  }
    103 
    104  public boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
    105  return mainJNI.RoutingModel_addDimensionWithVehicleCapacity(swigCPtr, this, evaluator_index, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
    106  }
    107 
    108  public boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
    109  return mainJNI.RoutingModel_addDimensionWithVehicleTransitAndCapacity(swigCPtr, this, evaluator_indices, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
    110  }
    111 
    115  public boolean addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name) {
    116  return mainJNI.RoutingModel_addConstantDimensionWithSlack(swigCPtr, this, value, capacity, slack_max, fix_start_cumul_to_zero, name);
    117  }
    118 
    119  public boolean addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name) {
    120  return mainJNI.RoutingModel_addConstantDimension(swigCPtr, this, value, capacity, fix_start_cumul_to_zero, name);
    121  }
    122 
    126  public boolean addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
    127  return mainJNI.RoutingModel_addVectorDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name);
    128  }
    129 
    133  public Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks) {
    134  long cPtr = mainJNI.RoutingModel_MakePathSpansAndTotalSlacks(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, spans, total_slacks);
    135  return (cPtr == 0) ? null : new Constraint(cPtr, false);
    136  }
    137 
    141  public SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForGlobalCumulOptimizers() {
    142  return new SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t(mainJNI.RoutingModel_GetDimensionsForGlobalCumulOptimizers(swigCPtr, this), false);
    143  }
    144 
    145  public SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForLocalCumulOptimizers() {
    146  return new SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t(mainJNI.RoutingModel_GetDimensionsForLocalCumulOptimizers(swigCPtr, this), false);
    147  }
    148 
    152  public boolean hasDimension(String dimension_name) {
    153  return mainJNI.RoutingModel_hasDimension(swigCPtr, this, dimension_name);
    154  }
    155 
    159  public RoutingDimension getDimensionOrDie(String dimension_name) {
    160  return new RoutingDimension(mainJNI.RoutingModel_getDimensionOrDie(swigCPtr, this, dimension_name), false);
    161  }
    162 
    166  public RoutingDimension getMutableDimension(String dimension_name) {
    167  long cPtr = mainJNI.RoutingModel_getMutableDimension(swigCPtr, this, dimension_name);
    168  return (cPtr == 0) ? null : new RoutingDimension(cPtr, false);
    169  }
    170 
    174  public void setPrimaryConstrainedDimension(String dimension_name) {
    175  mainJNI.RoutingModel_setPrimaryConstrainedDimension(swigCPtr, this, dimension_name);
    176  }
    177 
    182  return mainJNI.RoutingModel_getPrimaryConstrainedDimension(swigCPtr, this);
    183  }
    184 
    188  public int addDisjunction(long[] indices, long penalty, long max_cardinality) {
    189  return mainJNI.RoutingModel_addDisjunction__SWIG_0(swigCPtr, this, indices, penalty, max_cardinality);
    190 }
    191 
    195  public int addDisjunction(long[] indices, long penalty) {
    196  return mainJNI.RoutingModel_addDisjunction__SWIG_1(swigCPtr, this, indices, penalty);
    197 }
    198 
    202  public int addDisjunction(long[] indices) {
    203  return mainJNI.RoutingModel_addDisjunction__SWIG_2(swigCPtr, this, indices);
    204 }
    205 
    209  public int[] getDisjunctionIndices(long index) {
    210  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_0(swigCPtr, this, index);
    211 }
    212 
    216  public long[] getDisjunctionIndices(int index) {
    217  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_1(swigCPtr, this, index);
    218 }
    219 
    223  public long getDisjunctionPenalty(int index) {
    224  return mainJNI.RoutingModel_getDisjunctionPenalty(swigCPtr, this, index);
    225  }
    226 
    230  public long getDisjunctionMaxCardinality(int index) {
    231  return mainJNI.RoutingModel_getDisjunctionMaxCardinality(swigCPtr, this, index);
    232  }
    233 
    237  public int getNumberOfDisjunctions() {
    238  return mainJNI.RoutingModel_getNumberOfDisjunctions(swigCPtr, this);
    239  }
    240 
    245  mainJNI.RoutingModel_ignoreDisjunctionsAlreadyForcedToZero(swigCPtr, this);
    246  }
    247 
    251  public void addSoftSameVehicleConstraint(long[] indices, long cost) {
    252  mainJNI.RoutingModel_addSoftSameVehicleConstraint(swigCPtr, this, indices, cost);
    253  }
    254 
    258  public void setAllowedVehiclesForIndex(int[] vehicles, long index) {
    259  mainJNI.RoutingModel_setAllowedVehiclesForIndex(swigCPtr, this, vehicles, index);
    260  }
    261 
    265  public boolean isVehicleAllowedForIndex(int vehicle, long index) {
    266  return mainJNI.RoutingModel_isVehicleAllowedForIndex(swigCPtr, this, vehicle, index);
    267  }
    268 
    272  public void addPickupAndDelivery(long pickup, long delivery) {
    273  mainJNI.RoutingModel_addPickupAndDelivery(swigCPtr, this, pickup, delivery);
    274  }
    275 
    279  public void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction) {
    280  mainJNI.RoutingModel_addPickupAndDeliverySets(swigCPtr, this, pickup_disjunction, delivery_disjunction);
    281  }
    282 
    286  public void setPickupAndDeliveryPolicyOfAllVehicles(int policy) {
    287  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfAllVehicles(swigCPtr, this, policy);
    288  }
    289 
    290  public void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle) {
    291  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, policy, vehicle);
    292  }
    293 
    294  public int getPickupAndDeliveryPolicyOfVehicle(int vehicle) {
    295  return mainJNI.RoutingModel_getPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, vehicle);
    296  }
    297 
    301  public int getNumOfSingletonNodes() {
    302  return mainJNI.RoutingModel_getNumOfSingletonNodes(swigCPtr, this);
    303  }
    304 
    308  public void setVisitType(long index, int type) {
    309  mainJNI.RoutingModel_setVisitType(swigCPtr, this, index, type);
    310  }
    311 
    312  public int getVisitType(long index) {
    313  return mainJNI.RoutingModel_getVisitType(swigCPtr, this, index);
    314  }
    315 
    316  public int getNumberOfVisitTypes() {
    317  return mainJNI.RoutingModel_getNumberOfVisitTypes(swigCPtr, this);
    318  }
    319 
    323  public long unperformedPenalty(long var_index) {
    324  return mainJNI.RoutingModel_unperformedPenalty(swigCPtr, this, var_index);
    325  }
    326 
    330  public long unperformedPenaltyOrValue(long default_value, long var_index) {
    331  return mainJNI.RoutingModel_unperformedPenaltyOrValue(swigCPtr, this, default_value, var_index);
    332  }
    333 
    337  public long getDepot() {
    338  return mainJNI.RoutingModel_getDepot(swigCPtr, this);
    339  }
    340 
    344  public void setArcCostEvaluatorOfAllVehicles(int evaluator_index) {
    345  mainJNI.RoutingModel_setArcCostEvaluatorOfAllVehicles(swigCPtr, this, evaluator_index);
    346  }
    347 
    351  public void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle) {
    352  mainJNI.RoutingModel_setArcCostEvaluatorOfVehicle(swigCPtr, this, evaluator_index, vehicle);
    353  }
    354 
    358  public void setFixedCostOfAllVehicles(long cost) {
    359  mainJNI.RoutingModel_setFixedCostOfAllVehicles(swigCPtr, this, cost);
    360  }
    361 
    365  public void setFixedCostOfVehicle(long cost, int vehicle) {
    366  mainJNI.RoutingModel_setFixedCostOfVehicle(swigCPtr, this, cost, vehicle);
    367  }
    368 
    372  public long getFixedCostOfVehicle(int vehicle) {
    373  return mainJNI.RoutingModel_getFixedCostOfVehicle(swigCPtr, this, vehicle);
    374  }
    375 
    379  public void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor) {
    380  mainJNI.RoutingModel_setAmortizedCostFactorsOfAllVehicles(swigCPtr, this, linear_cost_factor, quadratic_cost_factor);
    381  }
    382 
    386  public void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle) {
    387  mainJNI.RoutingModel_setAmortizedCostFactorsOfVehicle(swigCPtr, this, linear_cost_factor, quadratic_cost_factor, vehicle);
    388  }
    389 
    391  return mainJNI.RoutingModel_getAmortizedLinearCostFactorOfVehicles(swigCPtr, this);
    392 }
    393 
    395  return mainJNI.RoutingModel_getAmortizedQuadraticCostFactorOfVehicles(swigCPtr, this);
    396 }
    397 
    398  public void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle) {
    399  mainJNI.RoutingModel_ConsiderEmptyRouteCostsForVehicle(swigCPtr, this, consider_costs, vehicle);
    400  }
    401 
    402  public boolean AreEmptyRouteCostsConsideredForVehicle(int vehicle) {
    403  return mainJNI.RoutingModel_AreEmptyRouteCostsConsideredForVehicle(swigCPtr, this, vehicle);
    404  }
    405 
    409  public void setFirstSolutionEvaluator(LongBinaryOperator evaluator) {
    410  mainJNI.RoutingModel_setFirstSolutionEvaluator(swigCPtr, this, evaluator);
    411  }
    412 
    416  public void addLocalSearchOperator(LocalSearchOperator ls_operator) {
    417  mainJNI.RoutingModel_addLocalSearchOperator(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator);
    418  }
    419 
    423  public void addSearchMonitor(SearchMonitor monitor) {
    424  mainJNI.RoutingModel_addSearchMonitor(swigCPtr, this, SearchMonitor.getCPtr(monitor), monitor);
    425  }
    426 
    430  public void addAtSolutionCallback(Runnable callback) {
    431  mainJNI.RoutingModel_addAtSolutionCallback(swigCPtr, this, callback);
    432  }
    433 
    438  mainJNI.RoutingModel_addVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
    439  }
    440 
    445  mainJNI.RoutingModel_addVariableMaximizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
    446  }
    447 
    451  public void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost) {
    452  mainJNI.RoutingModel_AddWeightedVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, cost);
    453  }
    454 
    458  public void AddVariableTargetToFinalizer(IntVar var, long target) {
    459  mainJNI.RoutingModel_AddVariableTargetToFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, target);
    460  }
    461 
    465  public void closeModel() {
    466  mainJNI.RoutingModel_closeModel(swigCPtr, this);
    467  }
    468 
    473  mainJNI.RoutingModel_closeModelWithParameters(swigCPtr, this, search_parameters.toByteArray());
    474  }
    475 
    479  public Assignment solve(Assignment assignment) {
    480  long cPtr = mainJNI.RoutingModel_solve__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    481  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    482  }
    483 
    487  public Assignment solve() {
    488  long cPtr = mainJNI.RoutingModel_solve__SWIG_1(swigCPtr, this);
    489  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    490  }
    491 
    496  long cPtr = mainJNI.RoutingModel_solveWithParameters(swigCPtr, this, search_parameters.toByteArray());
    497  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    498  }
    499 
    501  long cPtr = mainJNI.RoutingModel_solveFromAssignmentWithParameters(swigCPtr, this, Assignment.getCPtr(assignment), assignment, search_parameters.toByteArray());
    502  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    503  }
    504 
    508  public void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment) {
    509  mainJNI.RoutingModel_setAssignmentFromOtherModelAssignment(swigCPtr, this, Assignment.getCPtr(target_assignment), target_assignment, RoutingModel.getCPtr(source_model), source_model, Assignment.getCPtr(source_assignment), source_assignment);
    510  }
    511 
    515  public long computeLowerBound() {
    516  return mainJNI.RoutingModel_computeLowerBound(swigCPtr, this);
    517  }
    518 
    522  public int status() {
    523  return mainJNI.RoutingModel_status(swigCPtr, this);
    524  }
    525 
    529  public IntVar applyLocks(long[] locks) {
    530  long cPtr = mainJNI.RoutingModel_applyLocks(swigCPtr, this, locks);
    531  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    532  }
    533 
    537  public boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes) {
    538  return mainJNI.RoutingModel_applyLocksToAllVehicles(swigCPtr, this, locks, close_routes);
    539  }
    540 
    545  long cPtr = mainJNI.RoutingModel_preAssignment(swigCPtr, this);
    546  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    547  }
    548 
    550  long cPtr = mainJNI.RoutingModel_mutablePreAssignment(swigCPtr, this);
    551  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    552  }
    553 
    557  public boolean writeAssignment(String file_name) {
    558  return mainJNI.RoutingModel_writeAssignment(swigCPtr, this, file_name);
    559  }
    560 
    564  public Assignment readAssignment(String file_name) {
    565  long cPtr = mainJNI.RoutingModel_readAssignment(swigCPtr, this, file_name);
    566  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    567  }
    568 
    573  long cPtr = mainJNI.RoutingModel_restoreAssignment(swigCPtr, this, Assignment.getCPtr(solution), solution);
    574  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    575  }
    576 
    580  public Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices) {
    581  long cPtr = mainJNI.RoutingModel_readAssignmentFromRoutes(swigCPtr, this, routes, ignore_inactive_indices);
    582  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    583  }
    584 
    588  public boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment) {
    589  return mainJNI.RoutingModel_routesToAssignment(swigCPtr, this, routes, ignore_inactive_indices, close_routes, Assignment.getCPtr(assignment), assignment);
    590  }
    591 
    595  public void assignmentToRoutes(Assignment assignment, long[][] routes) {
    596  mainJNI.RoutingModel_assignmentToRoutes(swigCPtr, this, Assignment.getCPtr(assignment), assignment, routes);
    597  }
    598 
    603  long cPtr = mainJNI.RoutingModel_compactAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    604  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    605  }
    606 
    611  long cPtr = mainJNI.RoutingModel_compactAndCheckAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    612  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    613  }
    614 
    618  public void addToAssignment(IntVar var) {
    619  mainJNI.RoutingModel_addToAssignment(swigCPtr, this, IntVar.getCPtr(var), var);
    620  }
    621 
    622  public void addIntervalToAssignment(IntervalVar interval) {
    623  mainJNI.RoutingModel_addIntervalToAssignment(swigCPtr, this, IntervalVar.getCPtr(interval), interval);
    624  }
    625 
    629  public Assignment PackCumulsOfOptimizerDimensionsFromAssignment(Assignment original_assignment, SWIGTYPE_p_absl__Duration duration_limit) {
    630  long cPtr = mainJNI.RoutingModel_PackCumulsOfOptimizerDimensionsFromAssignment(swigCPtr, this, Assignment.getCPtr(original_assignment), original_assignment, SWIGTYPE_p_absl__Duration.getCPtr(duration_limit));
    631  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    632  }
    633 
    638  mainJNI.RoutingModel_addLocalSearchFilter(swigCPtr, this, LocalSearchFilter.getCPtr(filter), filter);
    639  }
    640 
    644  public long start(int vehicle) {
    645  return mainJNI.RoutingModel_start(swigCPtr, this, vehicle);
    646  }
    647 
    651  public long end(int vehicle) {
    652  return mainJNI.RoutingModel_end(swigCPtr, this, vehicle);
    653  }
    654 
    658  public boolean isStart(long index) {
    659  return mainJNI.RoutingModel_isStart(swigCPtr, this, index);
    660  }
    661 
    665  public boolean isEnd(long index) {
    666  return mainJNI.RoutingModel_isEnd(swigCPtr, this, index);
    667  }
    668 
    672  public int VehicleIndex(int index) {
    673  return mainJNI.RoutingModel_VehicleIndex(swigCPtr, this, index);
    674  }
    675 
    679  public long next(Assignment assignment, long index) {
    680  return mainJNI.RoutingModel_next(swigCPtr, this, Assignment.getCPtr(assignment), assignment, index);
    681  }
    682 
    686  public boolean isVehicleUsed(Assignment assignment, int vehicle) {
    687  return mainJNI.RoutingModel_isVehicleUsed(swigCPtr, this, Assignment.getCPtr(assignment), assignment, vehicle);
    688  }
    689 
    693  public IntVar[] nexts() {
    694  return mainJNI.RoutingModel_nexts(swigCPtr, this);
    695 }
    696 
    700  public IntVar[] vehicleVars() {
    701  return mainJNI.RoutingModel_vehicleVars(swigCPtr, this);
    702 }
    703 
    707  public IntVar nextVar(long index) {
    708  long cPtr = mainJNI.RoutingModel_nextVar(swigCPtr, this, index);
    709  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    710  }
    711 
    715  public IntVar activeVar(long index) {
    716  long cPtr = mainJNI.RoutingModel_activeVar(swigCPtr, this, index);
    717  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    718  }
    719 
    723  public IntVar VehicleCostsConsideredVar(int vehicle) {
    724  long cPtr = mainJNI.RoutingModel_VehicleCostsConsideredVar(swigCPtr, this, vehicle);
    725  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    726  }
    727 
    731  public IntVar vehicleVar(long index) {
    732  long cPtr = mainJNI.RoutingModel_vehicleVar(swigCPtr, this, index);
    733  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    734  }
    735 
    739  public IntVar costVar() {
    740  long cPtr = mainJNI.RoutingModel_costVar(swigCPtr, this);
    741  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    742  }
    743 
    747  public long getArcCostForVehicle(long from_index, long to_index, long vehicle) {
    748  return mainJNI.RoutingModel_getArcCostForVehicle(swigCPtr, this, from_index, to_index, vehicle);
    749  }
    750 
    755  return mainJNI.RoutingModel_costsAreHomogeneousAcrossVehicles(swigCPtr, this);
    756  }
    757 
    761  public long getHomogeneousCost(long from_index, long to_index) {
    762  return mainJNI.RoutingModel_getHomogeneousCost(swigCPtr, this, from_index, to_index);
    763  }
    764 
    768  public long getArcCostForFirstSolution(long from_index, long to_index) {
    769  return mainJNI.RoutingModel_getArcCostForFirstSolution(swigCPtr, this, from_index, to_index);
    770  }
    771 
    775  public long getArcCostForClass(long from_index, long to_index, long cost_class_index) {
    776  return mainJNI.RoutingModel_getArcCostForClass(swigCPtr, this, from_index, to_index, cost_class_index);
    777  }
    778 
    782  public int getCostClassIndexOfVehicle(long vehicle) {
    783  return mainJNI.RoutingModel_getCostClassIndexOfVehicle(swigCPtr, this, vehicle);
    784 }
    785 
    789  public boolean hasVehicleWithCostClassIndex(int cost_class_index) {
    790  return mainJNI.RoutingModel_hasVehicleWithCostClassIndex(swigCPtr, this, cost_class_index);
    791  }
    792 
    796  public int getCostClassesCount() {
    797  return mainJNI.RoutingModel_getCostClassesCount(swigCPtr, this);
    798  }
    799 
    804  return mainJNI.RoutingModel_getNonZeroCostClassesCount(swigCPtr, this);
    805  }
    806 
    807  public int getVehicleClassIndexOfVehicle(long vehicle) {
    808  return mainJNI.RoutingModel_getVehicleClassIndexOfVehicle(swigCPtr, this, vehicle);
    809 }
    810 
    814  public int getVehicleClassesCount() {
    815  return mainJNI.RoutingModel_getVehicleClassesCount(swigCPtr, this);
    816  }
    817 
    821  public int[] getSameVehicleIndicesOfIndex(int node) {
    822  return mainJNI.RoutingModel_getSameVehicleIndicesOfIndex(swigCPtr, this, node);
    823 }
    824 
    828  public boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2) {
    829  return mainJNI.RoutingModel_arcIsMoreConstrainedThanArc(swigCPtr, this, from, to1, to2);
    830  }
    831 
    835  public String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print) {
    836  return mainJNI.RoutingModel_debugOutputAssignment(swigCPtr, this, Assignment.getCPtr(solution_assignment), solution_assignment, dimension_to_print);
    837  }
    838 
    842  public Solver solver() {
    843  long cPtr = mainJNI.RoutingModel_solver(swigCPtr, this);
    844  return (cPtr == 0) ? null : new Solver(cPtr, false);
    845  }
    846 
    850  public boolean checkLimit() {
    851  return mainJNI.RoutingModel_checkLimit(swigCPtr, this);
    852  }
    853 
    857  public SWIGTYPE_p_absl__Duration RemainingTime() {
    858  return new SWIGTYPE_p_absl__Duration(mainJNI.RoutingModel_RemainingTime(swigCPtr, this), true);
    859  }
    860 
    864  public int nodes() {
    865  return mainJNI.RoutingModel_nodes(swigCPtr, this);
    866  }
    867 
    871  public int vehicles() {
    872  return mainJNI.RoutingModel_vehicles(swigCPtr, this);
    873  }
    874 
    878  public long size() {
    879  return mainJNI.RoutingModel_size(swigCPtr, this);
    880  }
    881 
    886  return mainJNI.RoutingModel_getNumberOfDecisionsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
    887  }
    888 
    890  return mainJNI.RoutingModel_getNumberOfRejectsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
    891  }
    892 
    896  public boolean isMatchingModel() {
    897  return mainJNI.RoutingModel_isMatchingModel(swigCPtr, this);
    898  }
    899 
    903  public DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer) {
    904  long cPtr = mainJNI.RoutingModel_makeGuidedSlackFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, initializer);
    905  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
    906  }
    907 
    912  long cPtr = mainJNI.RoutingModel_makeSelfDependentDimensionFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
    913  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
    914  }
    915 
    916  public void addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
    917  mainJNI.RoutingModel_addMatrixDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name);
    918  }
    919 
    920  // Status
    928  public final static int ROUTING_NOT_SOLVED = mainJNI.RoutingModel_ROUTING_NOT_SOLVED_get();
    932  public final static int ROUTING_SUCCESS = mainJNI.RoutingModel_ROUTING_SUCCESS_get();
    936  public final static int ROUTING_FAIL = mainJNI.RoutingModel_ROUTING_FAIL_get();
    940  public final static int ROUTING_FAIL_TIMEOUT = mainJNI.RoutingModel_ROUTING_FAIL_TIMEOUT_get();
    944  public final static int ROUTING_INVALID = mainJNI.RoutingModel_ROUTING_INVALID_get();
    945 
    946  // PickupAndDeliveryPolicy
    954  public final static int PICKUP_AND_DELIVERY_NO_ORDER = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_NO_ORDER_get();
    958  public final static int PICKUP_AND_DELIVERY_LIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_LIFO_get();
    962  public final static int PICKUP_AND_DELIVERY_FIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_FIFO_get();
    963 
    964 }
    -
    void addPickupAndDelivery(long pickup, long delivery)
    Notifies that index1 and index2 form a pair of nodes which should belong to the same route.
    -
    RoutingDimension getMutableDimension(String dimension_name)
    Returns a dimension from its name.
    -
    void setPrimaryConstrainedDimension(String dimension_name)
    Set the given dimension as "primary constrained".
    -
    void addToAssignment(IntVar var)
    Adds an extra variable to the vehicle routing assignment.
    -
    Assignment PackCumulsOfOptimizerDimensionsFromAssignment(Assignment original_assignment, SWIGTYPE_p_absl__Duration duration_limit)
    For every dimension in the model's dimensions_for_local/global_optimizer_, this method tries to pack ...
    -
    int [] getSameVehicleIndicesOfIndex(int node)
    Returns variable indices of nodes constrained to be on the same route.
    +Go to the documentation of this file.
    1 /* ----------------------------------------------------------------------------
    2  * This file was automatically generated by SWIG (http://www.swig.org).
    3  * Version 4.0.0
    4  *
    5  * Do not make changes to this file unless you know what you are doing--modify
    6  * the SWIG interface file instead.
    7  * ----------------------------------------------------------------------------- */
    8 
    9 package com.google.ortools.constraintsolver;
    10 
    11 // Used to wrap RoutingTransitCallback2
    12 // see https://docs.oracle.com/javase/8/docs/api/java/util/function/LongBinaryOperator.html
    13 import java.util.function.LongBinaryOperator;
    14 // Used to wrap RoutingTransitCallback1
    15 // see https://docs.oracle.com/javase/8/docs/api/java/util/function/LongUnaryOperator.html
    16 import java.util.function.LongUnaryOperator;
    17 
    18 public class RoutingModel {
    19  private transient long swigCPtr;
    20  protected transient boolean swigCMemOwn;
    21 
    22  protected RoutingModel(long cPtr, boolean cMemoryOwn) {
    23  swigCMemOwn = cMemoryOwn;
    24  swigCPtr = cPtr;
    25  }
    26 
    27  protected static long getCPtr(RoutingModel obj) {
    28  return (obj == null) ? 0 : obj.swigCPtr;
    29  }
    30 
    31  @SuppressWarnings("deprecation")
    32  protected void finalize() {
    33  delete();
    34  }
    35 
    36  public synchronized void delete() {
    37  if (swigCPtr != 0) {
    38  if (swigCMemOwn) {
    39  swigCMemOwn = false;
    40  mainJNI.delete_RoutingModel(swigCPtr);
    41  }
    42  swigCPtr = 0;
    43  }
    44  }
    45 
    49  public static long getKNoPenalty() {
    50  return mainJNI.RoutingModel_kNoPenalty_get();
    51  }
    52 
    56  public static int getKNoDisjunction() {
    57  return mainJNI.RoutingModel_kNoDisjunction_get();
    58 }
    59 
    63  public static int getKNoDimension() {
    64  return mainJNI.RoutingModel_kNoDimension_get();
    65 }
    66 
    70  public RoutingModel(RoutingIndexManager index_manager) {
    71  this(mainJNI.new_RoutingModel__SWIG_0(RoutingIndexManager.getCPtr(index_manager), index_manager), true);
    72  }
    73 
    75  this(mainJNI.new_RoutingModel__SWIG_1(RoutingIndexManager.getCPtr(index_manager), index_manager, parameters.toByteArray()), true);
    76  }
    77 
    81  public int registerUnaryTransitCallback(LongUnaryOperator callback) {
    82  return mainJNI.RoutingModel_registerUnaryTransitCallback(swigCPtr, this, callback);
    83  }
    84 
    85  public int RegisterPositiveUnaryTransitCallback(LongUnaryOperator callback) {
    86  return mainJNI.RoutingModel_RegisterPositiveUnaryTransitCallback(swigCPtr, this, callback);
    87  }
    88 
    89  public int registerTransitCallback(LongBinaryOperator callback) {
    90  return mainJNI.RoutingModel_registerTransitCallback(swigCPtr, this, callback);
    91  }
    92 
    93  public int registerPositiveTransitCallback(LongBinaryOperator callback) {
    94  return mainJNI.RoutingModel_registerPositiveTransitCallback(swigCPtr, this, callback);
    95  }
    96 
    100  public boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
    101  return mainJNI.RoutingModel_addDimension(swigCPtr, this, evaluator_index, slack_max, capacity, fix_start_cumul_to_zero, name);
    102  }
    103 
    104  public boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
    105  return mainJNI.RoutingModel_addDimensionWithVehicleTransits(swigCPtr, this, evaluator_indices, slack_max, capacity, fix_start_cumul_to_zero, name);
    106  }
    107 
    108  public boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
    109  return mainJNI.RoutingModel_addDimensionWithVehicleCapacity(swigCPtr, this, evaluator_index, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
    110  }
    111 
    112  public boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
    113  return mainJNI.RoutingModel_addDimensionWithVehicleTransitAndCapacity(swigCPtr, this, evaluator_indices, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
    114  }
    115 
    119  public boolean addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name) {
    120  return mainJNI.RoutingModel_addConstantDimensionWithSlack(swigCPtr, this, value, capacity, slack_max, fix_start_cumul_to_zero, name);
    121  }
    122 
    123  public boolean addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name) {
    124  return mainJNI.RoutingModel_addConstantDimension(swigCPtr, this, value, capacity, fix_start_cumul_to_zero, name);
    125  }
    126 
    130  public boolean addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
    131  return mainJNI.RoutingModel_addVectorDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name);
    132  }
    133 
    137  public Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks) {
    138  long cPtr = mainJNI.RoutingModel_MakePathSpansAndTotalSlacks(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, spans, total_slacks);
    139  return (cPtr == 0) ? null : new Constraint(cPtr, false);
    140  }
    141 
    145  public SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForGlobalCumulOptimizers() {
    146  return new SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t(mainJNI.RoutingModel_GetDimensionsForGlobalCumulOptimizers(swigCPtr, this), false);
    147  }
    148 
    149  public SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForLocalCumulOptimizers() {
    150  return new SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t(mainJNI.RoutingModel_GetDimensionsForLocalCumulOptimizers(swigCPtr, this), false);
    151  }
    152 
    156  public boolean hasDimension(String dimension_name) {
    157  return mainJNI.RoutingModel_hasDimension(swigCPtr, this, dimension_name);
    158  }
    159 
    163  public RoutingDimension getDimensionOrDie(String dimension_name) {
    164  return new RoutingDimension(mainJNI.RoutingModel_getDimensionOrDie(swigCPtr, this, dimension_name), false);
    165  }
    166 
    170  public RoutingDimension getMutableDimension(String dimension_name) {
    171  long cPtr = mainJNI.RoutingModel_getMutableDimension(swigCPtr, this, dimension_name);
    172  return (cPtr == 0) ? null : new RoutingDimension(cPtr, false);
    173  }
    174 
    178  public void setPrimaryConstrainedDimension(String dimension_name) {
    179  mainJNI.RoutingModel_setPrimaryConstrainedDimension(swigCPtr, this, dimension_name);
    180  }
    181 
    186  return mainJNI.RoutingModel_getPrimaryConstrainedDimension(swigCPtr, this);
    187  }
    188 
    192  public int addDisjunction(long[] indices, long penalty, long max_cardinality) {
    193  return mainJNI.RoutingModel_addDisjunction__SWIG_0(swigCPtr, this, indices, penalty, max_cardinality);
    194 }
    195 
    199  public int addDisjunction(long[] indices, long penalty) {
    200  return mainJNI.RoutingModel_addDisjunction__SWIG_1(swigCPtr, this, indices, penalty);
    201 }
    202 
    206  public int addDisjunction(long[] indices) {
    207  return mainJNI.RoutingModel_addDisjunction__SWIG_2(swigCPtr, this, indices);
    208 }
    209 
    213  public int[] getDisjunctionIndices(long index) {
    214  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_0(swigCPtr, this, index);
    215 }
    216 
    220  public long[] getDisjunctionIndices(int index) {
    221  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_1(swigCPtr, this, index);
    222 }
    223 
    227  public long getDisjunctionPenalty(int index) {
    228  return mainJNI.RoutingModel_getDisjunctionPenalty(swigCPtr, this, index);
    229  }
    230 
    234  public long getDisjunctionMaxCardinality(int index) {
    235  return mainJNI.RoutingModel_getDisjunctionMaxCardinality(swigCPtr, this, index);
    236  }
    237 
    241  public int getNumberOfDisjunctions() {
    242  return mainJNI.RoutingModel_getNumberOfDisjunctions(swigCPtr, this);
    243  }
    244 
    249  mainJNI.RoutingModel_ignoreDisjunctionsAlreadyForcedToZero(swigCPtr, this);
    250  }
    251 
    255  public void addSoftSameVehicleConstraint(long[] indices, long cost) {
    256  mainJNI.RoutingModel_addSoftSameVehicleConstraint(swigCPtr, this, indices, cost);
    257  }
    258 
    262  public void setAllowedVehiclesForIndex(int[] vehicles, long index) {
    263  mainJNI.RoutingModel_setAllowedVehiclesForIndex(swigCPtr, this, vehicles, index);
    264  }
    265 
    269  public boolean isVehicleAllowedForIndex(int vehicle, long index) {
    270  return mainJNI.RoutingModel_isVehicleAllowedForIndex(swigCPtr, this, vehicle, index);
    271  }
    272 
    276  public void addPickupAndDelivery(long pickup, long delivery) {
    277  mainJNI.RoutingModel_addPickupAndDelivery(swigCPtr, this, pickup, delivery);
    278  }
    279 
    283  public void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction) {
    284  mainJNI.RoutingModel_addPickupAndDeliverySets(swigCPtr, this, pickup_disjunction, delivery_disjunction);
    285  }
    286 
    290  public void setPickupAndDeliveryPolicyOfAllVehicles(int policy) {
    291  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfAllVehicles(swigCPtr, this, policy);
    292  }
    293 
    294  public void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle) {
    295  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, policy, vehicle);
    296  }
    297 
    298  public int getPickupAndDeliveryPolicyOfVehicle(int vehicle) {
    299  return mainJNI.RoutingModel_getPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, vehicle);
    300  }
    301 
    305  public int getNumOfSingletonNodes() {
    306  return mainJNI.RoutingModel_getNumOfSingletonNodes(swigCPtr, this);
    307  }
    308 
    312  public void setVisitType(long index, int type) {
    313  mainJNI.RoutingModel_setVisitType(swigCPtr, this, index, type);
    314  }
    315 
    316  public int getVisitType(long index) {
    317  return mainJNI.RoutingModel_getVisitType(swigCPtr, this, index);
    318  }
    319 
    320  public int getNumberOfVisitTypes() {
    321  return mainJNI.RoutingModel_getNumberOfVisitTypes(swigCPtr, this);
    322  }
    323 
    327  public long unperformedPenalty(long var_index) {
    328  return mainJNI.RoutingModel_unperformedPenalty(swigCPtr, this, var_index);
    329  }
    330 
    334  public long unperformedPenaltyOrValue(long default_value, long var_index) {
    335  return mainJNI.RoutingModel_unperformedPenaltyOrValue(swigCPtr, this, default_value, var_index);
    336  }
    337 
    341  public long getDepot() {
    342  return mainJNI.RoutingModel_getDepot(swigCPtr, this);
    343  }
    344 
    348  public void setArcCostEvaluatorOfAllVehicles(int evaluator_index) {
    349  mainJNI.RoutingModel_setArcCostEvaluatorOfAllVehicles(swigCPtr, this, evaluator_index);
    350  }
    351 
    355  public void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle) {
    356  mainJNI.RoutingModel_setArcCostEvaluatorOfVehicle(swigCPtr, this, evaluator_index, vehicle);
    357  }
    358 
    362  public void setFixedCostOfAllVehicles(long cost) {
    363  mainJNI.RoutingModel_setFixedCostOfAllVehicles(swigCPtr, this, cost);
    364  }
    365 
    369  public void setFixedCostOfVehicle(long cost, int vehicle) {
    370  mainJNI.RoutingModel_setFixedCostOfVehicle(swigCPtr, this, cost, vehicle);
    371  }
    372 
    376  public long getFixedCostOfVehicle(int vehicle) {
    377  return mainJNI.RoutingModel_getFixedCostOfVehicle(swigCPtr, this, vehicle);
    378  }
    379 
    383  public void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor) {
    384  mainJNI.RoutingModel_setAmortizedCostFactorsOfAllVehicles(swigCPtr, this, linear_cost_factor, quadratic_cost_factor);
    385  }
    386 
    390  public void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle) {
    391  mainJNI.RoutingModel_setAmortizedCostFactorsOfVehicle(swigCPtr, this, linear_cost_factor, quadratic_cost_factor, vehicle);
    392  }
    393 
    395  return mainJNI.RoutingModel_getAmortizedLinearCostFactorOfVehicles(swigCPtr, this);
    396 }
    397 
    399  return mainJNI.RoutingModel_getAmortizedQuadraticCostFactorOfVehicles(swigCPtr, this);
    400 }
    401 
    402  public void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle) {
    403  mainJNI.RoutingModel_ConsiderEmptyRouteCostsForVehicle(swigCPtr, this, consider_costs, vehicle);
    404  }
    405 
    406  public boolean AreEmptyRouteCostsConsideredForVehicle(int vehicle) {
    407  return mainJNI.RoutingModel_AreEmptyRouteCostsConsideredForVehicle(swigCPtr, this, vehicle);
    408  }
    409 
    413  public void setFirstSolutionEvaluator(LongBinaryOperator evaluator) {
    414  mainJNI.RoutingModel_setFirstSolutionEvaluator(swigCPtr, this, evaluator);
    415  }
    416 
    420  public void addLocalSearchOperator(LocalSearchOperator ls_operator) {
    421  mainJNI.RoutingModel_addLocalSearchOperator(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator);
    422  }
    423 
    427  public void addSearchMonitor(SearchMonitor monitor) {
    428  mainJNI.RoutingModel_addSearchMonitor(swigCPtr, this, SearchMonitor.getCPtr(monitor), monitor);
    429  }
    430 
    434  public void addAtSolutionCallback(Runnable callback) {
    435  mainJNI.RoutingModel_addAtSolutionCallback(swigCPtr, this, callback);
    436  }
    437 
    442  mainJNI.RoutingModel_addVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
    443  }
    444 
    449  mainJNI.RoutingModel_addVariableMaximizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
    450  }
    451 
    455  public void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost) {
    456  mainJNI.RoutingModel_AddWeightedVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, cost);
    457  }
    458 
    462  public void AddVariableTargetToFinalizer(IntVar var, long target) {
    463  mainJNI.RoutingModel_AddVariableTargetToFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, target);
    464  }
    465 
    469  public void closeModel() {
    470  mainJNI.RoutingModel_closeModel(swigCPtr, this);
    471  }
    472 
    477  mainJNI.RoutingModel_closeModelWithParameters(swigCPtr, this, search_parameters.toByteArray());
    478  }
    479 
    483  public Assignment solve(Assignment assignment) {
    484  long cPtr = mainJNI.RoutingModel_solve__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    485  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    486  }
    487 
    491  public Assignment solve() {
    492  long cPtr = mainJNI.RoutingModel_solve__SWIG_1(swigCPtr, this);
    493  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    494  }
    495 
    500  long cPtr = mainJNI.RoutingModel_solveWithParameters(swigCPtr, this, search_parameters.toByteArray());
    501  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    502  }
    503 
    505  long cPtr = mainJNI.RoutingModel_solveFromAssignmentWithParameters(swigCPtr, this, Assignment.getCPtr(assignment), assignment, search_parameters.toByteArray());
    506  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    507  }
    508 
    512  public void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment) {
    513  mainJNI.RoutingModel_setAssignmentFromOtherModelAssignment(swigCPtr, this, Assignment.getCPtr(target_assignment), target_assignment, RoutingModel.getCPtr(source_model), source_model, Assignment.getCPtr(source_assignment), source_assignment);
    514  }
    515 
    519  public long computeLowerBound() {
    520  return mainJNI.RoutingModel_computeLowerBound(swigCPtr, this);
    521  }
    522 
    526  public int status() {
    527  return mainJNI.RoutingModel_status(swigCPtr, this);
    528  }
    529 
    533  public IntVar applyLocks(long[] locks) {
    534  long cPtr = mainJNI.RoutingModel_applyLocks(swigCPtr, this, locks);
    535  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    536  }
    537 
    541  public boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes) {
    542  return mainJNI.RoutingModel_applyLocksToAllVehicles(swigCPtr, this, locks, close_routes);
    543  }
    544 
    549  long cPtr = mainJNI.RoutingModel_preAssignment(swigCPtr, this);
    550  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    551  }
    552 
    554  long cPtr = mainJNI.RoutingModel_mutablePreAssignment(swigCPtr, this);
    555  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    556  }
    557 
    561  public boolean writeAssignment(String file_name) {
    562  return mainJNI.RoutingModel_writeAssignment(swigCPtr, this, file_name);
    563  }
    564 
    568  public Assignment readAssignment(String file_name) {
    569  long cPtr = mainJNI.RoutingModel_readAssignment(swigCPtr, this, file_name);
    570  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    571  }
    572 
    577  long cPtr = mainJNI.RoutingModel_restoreAssignment(swigCPtr, this, Assignment.getCPtr(solution), solution);
    578  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    579  }
    580 
    584  public Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices) {
    585  long cPtr = mainJNI.RoutingModel_readAssignmentFromRoutes(swigCPtr, this, routes, ignore_inactive_indices);
    586  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    587  }
    588 
    592  public boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment) {
    593  return mainJNI.RoutingModel_routesToAssignment(swigCPtr, this, routes, ignore_inactive_indices, close_routes, Assignment.getCPtr(assignment), assignment);
    594  }
    595 
    599  public void assignmentToRoutes(Assignment assignment, long[][] routes) {
    600  mainJNI.RoutingModel_assignmentToRoutes(swigCPtr, this, Assignment.getCPtr(assignment), assignment, routes);
    601  }
    602 
    607  long cPtr = mainJNI.RoutingModel_compactAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    608  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    609  }
    610 
    615  long cPtr = mainJNI.RoutingModel_compactAndCheckAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    616  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    617  }
    618 
    622  public void addToAssignment(IntVar var) {
    623  mainJNI.RoutingModel_addToAssignment(swigCPtr, this, IntVar.getCPtr(var), var);
    624  }
    625 
    626  public void addIntervalToAssignment(IntervalVar interval) {
    627  mainJNI.RoutingModel_addIntervalToAssignment(swigCPtr, this, IntervalVar.getCPtr(interval), interval);
    628  }
    629 
    633  public Assignment PackCumulsOfOptimizerDimensionsFromAssignment(Assignment original_assignment, SWIGTYPE_p_absl__Duration duration_limit) {
    634  long cPtr = mainJNI.RoutingModel_PackCumulsOfOptimizerDimensionsFromAssignment(swigCPtr, this, Assignment.getCPtr(original_assignment), original_assignment, SWIGTYPE_p_absl__Duration.getCPtr(duration_limit));
    635  return (cPtr == 0) ? null : new Assignment(cPtr, false);
    636  }
    637 
    642  mainJNI.RoutingModel_addLocalSearchFilter(swigCPtr, this, LocalSearchFilter.getCPtr(filter), filter);
    643  }
    644 
    648  public long start(int vehicle) {
    649  return mainJNI.RoutingModel_start(swigCPtr, this, vehicle);
    650  }
    651 
    655  public long end(int vehicle) {
    656  return mainJNI.RoutingModel_end(swigCPtr, this, vehicle);
    657  }
    658 
    662  public boolean isStart(long index) {
    663  return mainJNI.RoutingModel_isStart(swigCPtr, this, index);
    664  }
    665 
    669  public boolean isEnd(long index) {
    670  return mainJNI.RoutingModel_isEnd(swigCPtr, this, index);
    671  }
    672 
    676  public int VehicleIndex(int index) {
    677  return mainJNI.RoutingModel_VehicleIndex(swigCPtr, this, index);
    678  }
    679 
    683  public long next(Assignment assignment, long index) {
    684  return mainJNI.RoutingModel_next(swigCPtr, this, Assignment.getCPtr(assignment), assignment, index);
    685  }
    686 
    690  public boolean isVehicleUsed(Assignment assignment, int vehicle) {
    691  return mainJNI.RoutingModel_isVehicleUsed(swigCPtr, this, Assignment.getCPtr(assignment), assignment, vehicle);
    692  }
    693 
    697  public IntVar[] nexts() {
    698  return mainJNI.RoutingModel_nexts(swigCPtr, this);
    699 }
    700 
    704  public IntVar[] vehicleVars() {
    705  return mainJNI.RoutingModel_vehicleVars(swigCPtr, this);
    706 }
    707 
    711  public IntVar nextVar(long index) {
    712  long cPtr = mainJNI.RoutingModel_nextVar(swigCPtr, this, index);
    713  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    714  }
    715 
    719  public IntVar activeVar(long index) {
    720  long cPtr = mainJNI.RoutingModel_activeVar(swigCPtr, this, index);
    721  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    722  }
    723 
    727  public IntVar VehicleCostsConsideredVar(int vehicle) {
    728  long cPtr = mainJNI.RoutingModel_VehicleCostsConsideredVar(swigCPtr, this, vehicle);
    729  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    730  }
    731 
    735  public IntVar vehicleVar(long index) {
    736  long cPtr = mainJNI.RoutingModel_vehicleVar(swigCPtr, this, index);
    737  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    738  }
    739 
    743  public IntVar costVar() {
    744  long cPtr = mainJNI.RoutingModel_costVar(swigCPtr, this);
    745  return (cPtr == 0) ? null : new IntVar(cPtr, false);
    746  }
    747 
    751  public long getArcCostForVehicle(long from_index, long to_index, long vehicle) {
    752  return mainJNI.RoutingModel_getArcCostForVehicle(swigCPtr, this, from_index, to_index, vehicle);
    753  }
    754 
    759  return mainJNI.RoutingModel_costsAreHomogeneousAcrossVehicles(swigCPtr, this);
    760  }
    761 
    765  public long getHomogeneousCost(long from_index, long to_index) {
    766  return mainJNI.RoutingModel_getHomogeneousCost(swigCPtr, this, from_index, to_index);
    767  }
    768 
    772  public long getArcCostForFirstSolution(long from_index, long to_index) {
    773  return mainJNI.RoutingModel_getArcCostForFirstSolution(swigCPtr, this, from_index, to_index);
    774  }
    775 
    779  public long getArcCostForClass(long from_index, long to_index, long cost_class_index) {
    780  return mainJNI.RoutingModel_getArcCostForClass(swigCPtr, this, from_index, to_index, cost_class_index);
    781  }
    782 
    786  public int getCostClassIndexOfVehicle(long vehicle) {
    787  return mainJNI.RoutingModel_getCostClassIndexOfVehicle(swigCPtr, this, vehicle);
    788 }
    789 
    793  public boolean hasVehicleWithCostClassIndex(int cost_class_index) {
    794  return mainJNI.RoutingModel_hasVehicleWithCostClassIndex(swigCPtr, this, cost_class_index);
    795  }
    796 
    800  public int getCostClassesCount() {
    801  return mainJNI.RoutingModel_getCostClassesCount(swigCPtr, this);
    802  }
    803 
    808  return mainJNI.RoutingModel_getNonZeroCostClassesCount(swigCPtr, this);
    809  }
    810 
    811  public int getVehicleClassIndexOfVehicle(long vehicle) {
    812  return mainJNI.RoutingModel_getVehicleClassIndexOfVehicle(swigCPtr, this, vehicle);
    813 }
    814 
    818  public int getVehicleClassesCount() {
    819  return mainJNI.RoutingModel_getVehicleClassesCount(swigCPtr, this);
    820  }
    821 
    825  public int[] getSameVehicleIndicesOfIndex(int node) {
    826  return mainJNI.RoutingModel_getSameVehicleIndicesOfIndex(swigCPtr, this, node);
    827 }
    828 
    832  public boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2) {
    833  return mainJNI.RoutingModel_arcIsMoreConstrainedThanArc(swigCPtr, this, from, to1, to2);
    834  }
    835 
    839  public String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print) {
    840  return mainJNI.RoutingModel_debugOutputAssignment(swigCPtr, this, Assignment.getCPtr(solution_assignment), solution_assignment, dimension_to_print);
    841  }
    842 
    846  public Solver solver() {
    847  long cPtr = mainJNI.RoutingModel_solver(swigCPtr, this);
    848  return (cPtr == 0) ? null : new Solver(cPtr, false);
    849  }
    850 
    854  public boolean checkLimit() {
    855  return mainJNI.RoutingModel_checkLimit(swigCPtr, this);
    856  }
    857 
    861  public SWIGTYPE_p_absl__Duration RemainingTime() {
    862  return new SWIGTYPE_p_absl__Duration(mainJNI.RoutingModel_RemainingTime(swigCPtr, this), true);
    863  }
    864 
    868  public int nodes() {
    869  return mainJNI.RoutingModel_nodes(swigCPtr, this);
    870  }
    871 
    875  public int vehicles() {
    876  return mainJNI.RoutingModel_vehicles(swigCPtr, this);
    877  }
    878 
    882  public long size() {
    883  return mainJNI.RoutingModel_size(swigCPtr, this);
    884  }
    885 
    890  return mainJNI.RoutingModel_getNumberOfDecisionsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
    891  }
    892 
    894  return mainJNI.RoutingModel_getNumberOfRejectsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
    895  }
    896 
    900  public boolean isMatchingModel() {
    901  return mainJNI.RoutingModel_isMatchingModel(swigCPtr, this);
    902  }
    903 
    907  public DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer) {
    908  long cPtr = mainJNI.RoutingModel_makeGuidedSlackFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, initializer);
    909  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
    910  }
    911 
    916  long cPtr = mainJNI.RoutingModel_makeSelfDependentDimensionFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
    917  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
    918  }
    919 
    920  public void addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
    921  mainJNI.RoutingModel_addMatrixDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name);
    922  }
    923 
    924  // Status
    932  public final static int ROUTING_NOT_SOLVED = mainJNI.RoutingModel_ROUTING_NOT_SOLVED_get();
    936  public final static int ROUTING_SUCCESS = mainJNI.RoutingModel_ROUTING_SUCCESS_get();
    940  public final static int ROUTING_FAIL = mainJNI.RoutingModel_ROUTING_FAIL_get();
    944  public final static int ROUTING_FAIL_TIMEOUT = mainJNI.RoutingModel_ROUTING_FAIL_TIMEOUT_get();
    948  public final static int ROUTING_INVALID = mainJNI.RoutingModel_ROUTING_INVALID_get();
    949 
    950  // PickupAndDeliveryPolicy
    958  public final static int PICKUP_AND_DELIVERY_NO_ORDER = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_NO_ORDER_get();
    962  public final static int PICKUP_AND_DELIVERY_LIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_LIFO_get();
    966  public final static int PICKUP_AND_DELIVERY_FIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_FIFO_get();
    967 
    968 }
    +
    void addPickupAndDelivery(long pickup, long delivery)
    Notifies that index1 and index2 form a pair of nodes which should belong to the same route.
    +
    RoutingDimension getMutableDimension(String dimension_name)
    Returns a dimension from its name.
    +
    void setPrimaryConstrainedDimension(String dimension_name)
    Set the given dimension as "primary constrained".
    +
    void addToAssignment(IntVar var)
    Adds an extra variable to the vehicle routing assignment.
    +
    Assignment PackCumulsOfOptimizerDimensionsFromAssignment(Assignment original_assignment, SWIGTYPE_p_absl__Duration duration_limit)
    For every dimension in the model's dimensions_for_local/global_optimizer_, this method tries to pack ...
    +
    int [] getSameVehicleIndicesOfIndex(int node)
    Returns variable indices of nodes constrained to be on the same route.
    Dimensions represent quantities accumulated at nodes along the routes.
    -
    long unperformedPenalty(long var_index)
    Get the "unperformed" penalty of a node.
    +
    long unperformedPenalty(long var_index)
    Get the "unperformed" penalty of a node.
    Solver Class A solver represents the main computation engine.
    Definition: Solver.java:57
    -
    int addDisjunction(long[] indices, long penalty, long max_cardinality)
    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
    +
    int addDisjunction(long[] indices, long penalty, long max_cardinality)
    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
    static long getKNoPenalty()
    Constant used to express a hard constraint instead of a soft penalty.
    -
    void addIntervalToAssignment(IntervalVar interval)
    -
    int registerTransitCallback(LongBinaryOperator callback)
    -
    boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes)
    Applies lock chains to all vehicles to the next search, such that locks[p] is the lock chain for rout...
    -
    void addSearchMonitor(SearchMonitor monitor)
    Adds a search monitor to the search used to solve the routing model.
    -
    boolean addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name)
    Creates a dimension where the transit variable is constrained to be equal to 'value'; 'capacity' is t...
    -
    DecisionBuilder makeSelfDependentDimensionFinalizer(RoutingDimension dimension)
    MakeSelfDependentDimensionFinalizer is a finalizer for the slacks of a self-dependent dimension.
    -
    Assignment compactAssignment(Assignment assignment)
    Returns a compacted version of the given assignment, in which all vehicles with id lower or equal to ...
    -
    boolean isMatchingModel()
    Returns true if a vehicle/node matching problem is detected.
    -
    void addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name)
    -
    long next(Assignment assignment, long index)
    Assignment inspection Returns the variable index of the node directly after the node corresponding to...
    -
    void addAtSolutionCallback(Runnable callback)
    Adds a callback called each time a solution is found during the search.
    - -
    IntVar applyLocks(long[] locks)
    Applies a lock chain to the next search.
    -
    void ignoreDisjunctionsAlreadyForcedToZero()
    SPECIAL: Makes the solver ignore all the disjunctions whose active variables are all trivially zero (...
    -
    Assignment restoreAssignment(Assignment solution)
    Restores an assignment as a solution in the routing model and returns the new solution.
    -
    int getNonZeroCostClassesCount()
    Ditto, minus the 'always zero', built-in cost class.
    -
    boolean writeAssignment(String file_name)
    Writes the current solution to a file containing an AssignmentProto.
    -
    IntVar vehicleVar(long index)
    Returns the vehicle variable of the node corresponding to index.
    +
    void addIntervalToAssignment(IntervalVar interval)
    +
    int registerTransitCallback(LongBinaryOperator callback)
    +
    boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes)
    Applies lock chains to all vehicles to the next search, such that locks[p] is the lock chain for rout...
    +
    void addSearchMonitor(SearchMonitor monitor)
    Adds a search monitor to the search used to solve the routing model.
    +
    boolean addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name)
    Creates a dimension where the transit variable is constrained to be equal to 'value'; 'capacity' is t...
    +
    DecisionBuilder makeSelfDependentDimensionFinalizer(RoutingDimension dimension)
    MakeSelfDependentDimensionFinalizer is a finalizer for the slacks of a self-dependent dimension.
    +
    Assignment compactAssignment(Assignment assignment)
    Returns a compacted version of the given assignment, in which all vehicles with id lower or equal to ...
    +
    int RegisterPositiveUnaryTransitCallback(LongUnaryOperator callback)
    +
    boolean isMatchingModel()
    Returns true if a vehicle/node matching problem is detected.
    +
    void addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name)
    +
    long next(Assignment assignment, long index)
    Assignment inspection Returns the variable index of the node directly after the node corresponding to...
    +
    void addAtSolutionCallback(Runnable callback)
    Adds a callback called each time a solution is found during the search.
    + +
    IntVar applyLocks(long[] locks)
    Applies a lock chain to the next search.
    +
    void ignoreDisjunctionsAlreadyForcedToZero()
    SPECIAL: Makes the solver ignore all the disjunctions whose active variables are all trivially zero (...
    +
    Assignment restoreAssignment(Assignment solution)
    Restores an assignment as a solution in the routing model and returns the new solution.
    +
    int getNonZeroCostClassesCount()
    Ditto, minus the 'always zero', built-in cost class.
    +
    boolean writeAssignment(String file_name)
    Writes the current solution to a file containing an AssignmentProto.
    +
    IntVar vehicleVar(long index)
    Returns the vehicle variable of the node corresponding to index.
    Manager for any NodeIndex <-> variable index conversion.
    -
    boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
    -
    long getDisjunctionMaxCardinality(int index)
    Returns the maximum number of possible active nodes of the node disjunction of index 'index'.
    -
    Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    -
    void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle)
    +
    boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
    +
    long getDisjunctionMaxCardinality(int index)
    Returns the maximum number of possible active nodes of the node disjunction of index 'index'.
    +
    Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    +
    void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle)
    -
    int getNumOfSingletonNodes()
    Returns the number of non-start/end nodes which do not appear in a pickup/delivery pair.
    -
    int VehicleIndex(int index)
    Returns the vehicle of the given start/end index, and -1 if the given index is not a vehicle start/en...
    -
    long unperformedPenaltyOrValue(long default_value, long var_index)
    Same as above except that it returns default_value instead of 0 when penalty is not well defined (def...
    +
    int getNumOfSingletonNodes()
    Returns the number of non-start/end nodes which do not appear in a pickup/delivery pair.
    +
    int VehicleIndex(int index)
    Returns the vehicle of the given start/end index, and -1 if the given index is not a vehicle start/en...
    +
    long unperformedPenaltyOrValue(long default_value, long var_index)
    Same as above except that it returns default_value instead of 0 when penalty is not well defined (def...
    -
    long start(int vehicle)
    Model inspection.
    -
    int registerPositiveTransitCallback(LongBinaryOperator callback)
    -
    long getNumberOfRejectsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    -
    boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment)
    Fills an assignment from a specification of the routes of the vehicles.
    -
    long getArcCostForVehicle(long from_index, long to_index, long vehicle)
    Returns the cost of the transit arc between two nodes for a given vehicle.
    -
    long getNumberOfDecisionsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    Returns statistics on first solution search, number of decisions sent to filters, number of decisions...
    -
    void setFixedCostOfAllVehicles(long cost)
    Sets the fixed cost of all vehicle routes.
    -
    long getDisjunctionPenalty(int index)
    Returns the penalty of the node disjunction of index 'index'.
    +
    long start(int vehicle)
    Model inspection.
    +
    int registerPositiveTransitCallback(LongBinaryOperator callback)
    +
    long getNumberOfRejectsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    +
    boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment)
    Fills an assignment from a specification of the routes of the vehicles.
    +
    long getArcCostForVehicle(long from_index, long to_index, long vehicle)
    Returns the cost of the transit arc between two nodes for a given vehicle.
    +
    long getNumberOfDecisionsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    Returns statistics on first solution search, number of decisions sent to filters, number of decisions...
    +
    void setFixedCostOfAllVehicles(long cost)
    Sets the fixed cost of all vehicle routes.
    +
    long getDisjunctionPenalty(int index)
    Returns the penalty of the node disjunction of index 'index'.
    int registerUnaryTransitCallback(LongUnaryOperator callback)
    Registers 'callback' and returns its index.
    -
    int addDisjunction(long[] indices, long penalty)
    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
    -
    RoutingDimension getDimensionOrDie(String dimension_name)
    Returns a dimension from its name.
    -
    Assignment solve(Assignment assignment)
    Solves the current routing model; closes the current model.
    +
    int addDisjunction(long[] indices, long penalty)
    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
    +
    RoutingDimension getDimensionOrDie(String dimension_name)
    Returns a dimension from its name.
    +
    Assignment solve(Assignment assignment)
    Solves the current routing model; closes the current model.
    -
    void setVisitType(long index, int type)
    Set the node visit types and incompatibilities/requirements between the types (see below).
    -
    SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForLocalCumulOptimizers()
    -
    void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost)
    Adds a variable to minimize in the solution finalizer, with a weighted priority: the higher the more ...
    +
    void setVisitType(long index, int type)
    Set the node visit types and incompatibilities/requirements between the types (see below).
    +
    SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForLocalCumulOptimizers()
    +
    void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost)
    Adds a variable to minimize in the solution finalizer, with a weighted priority: the higher the more ...
    RoutingModel(long cPtr, boolean cMemoryOwn)
    -
    SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForGlobalCumulOptimizers()
    Returns dimensions_for_[global|local]_optimizer_ if the model has been closed, and empty vectors othe...
    -
    boolean addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name)
    Creates a dimension where the transit variable is constrained to be equal to 'values[i]' for node i; ...
    +
    SWIGTYPE_p_std__vectorT_operations_research__RoutingDimension_p_t GetDimensionsForGlobalCumulOptimizers()
    Returns dimensions_for_[global|local]_optimizer_ if the model has been closed, and empty vectors othe...
    +
    boolean addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name)
    Creates a dimension where the transit variable is constrained to be equal to 'values[i]' for node i; ...
    static int getKNoDimension()
    Constant used to express the "no dimension" index, returned when a dimension name does not correspond...
    -
    int vehicles()
    Returns the number of vehicle routes in the model.
    -
    IntVar [] vehicleVars()
    Returns all vehicle variables of the model, such that VehicleVars(i) is the vehicle variable of the n...
    -
    Assignment readAssignment(String file_name)
    Reads an assignment from a file and returns the current solution.
    - -
    int getNumberOfDisjunctions()
    Returns the number of node disjunctions in the model.
    +
    int vehicles()
    Returns the number of vehicle routes in the model.
    +
    IntVar [] vehicleVars()
    Returns all vehicle variables of the model, such that VehicleVars(i) is the vehicle variable of the n...
    +
    Assignment readAssignment(String file_name)
    Reads an assignment from a file and returns the current solution.
    + +
    int getNumberOfDisjunctions()
    Returns the number of node disjunctions in the model.
    -
    Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    Solves the current routing model with the given parameters.
    -
    int getCostClassesCount()
    Returns the number of different cost classes in the model.
    +
    Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    Solves the current routing model with the given parameters.
    +
    int getCostClassesCount()
    Returns the number of different cost classes in the model.
    -
    static final int PICKUP_AND_DELIVERY_LIFO
    Deliveries must be performed in reverse order of pickups.
    -
    Assignment compactAndCheckAssignment(Assignment assignment)
    Same as CompactAssignment() but also checks the validity of the final compact solution; if it is not ...
    +
    static final int PICKUP_AND_DELIVERY_LIFO
    Deliveries must be performed in reverse order of pickups.
    +
    Assignment compactAndCheckAssignment(Assignment assignment)
    Same as CompactAssignment() but also checks the validity of the final compact solution; if it is not ...
    A search monitor is a simple set of callbacks to monitor all search events.
    -
    void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle)
    Sets the linear and quadratic cost factor of the given vehicle.
    -
    boolean isStart(long index)
    Returns true if 'index' represents the first node of a route.
    -
    long end(int vehicle)
    Returns the variable index of the ending node of a vehicle route.
    +
    void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle)
    Sets the linear and quadratic cost factor of the given vehicle.
    +
    boolean isStart(long index)
    Returns true if 'index' represents the first node of a route.
    +
    long end(int vehicle)
    Returns the variable index of the ending node of a vehicle route.
    A DecisionBuilder is responsible for creating the search tree.
    -
    boolean isEnd(long index)
    Returns true if 'index' represents the last node of a route.
    -
    long [] getDisjunctionIndices(int index)
    Returns the variable indices of the nodes in the disjunction of index 'index'.
    -
    IntVar costVar()
    Returns the global cost variable which is being minimized.
    -
    static final int PICKUP_AND_DELIVERY_FIFO
    Deliveries must be performed in the same order as pickups.
    +
    boolean isEnd(long index)
    Returns true if 'index' represents the last node of a route.
    +
    long [] getDisjunctionIndices(int index)
    Returns the variable indices of the nodes in the disjunction of index 'index'.
    +
    IntVar costVar()
    Returns the global cost variable which is being minimized.
    +
    static final int PICKUP_AND_DELIVERY_FIFO
    Deliveries must be performed in the same order as pickups.
    -
    boolean checkLimit()
    Returns true if the search limit has been crossed.
    -
    static final int PICKUP_AND_DELIVERY_NO_ORDER
    Types of precedence policy applied to pickup and delivery pairs.
    - -
    Assignment solve()
    Solves the current routing model; closes the current model.
    -
    Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks)
    For every vehicle of the routing model: - if total_slacks[vehicle] is not nullptr,...
    -
    void addVariableMaximizedByFinalizer(IntVar var)
    Adds a variable to maximize in the solution finalizer (see above for information on the solution fina...
    -
    void setArcCostEvaluatorOfAllVehicles(int evaluator_index)
    Sets the cost function of the model such that the cost of a segment of a route between node 'from' an...
    +
    boolean checkLimit()
    Returns true if the search limit has been crossed.
    +
    static final int PICKUP_AND_DELIVERY_NO_ORDER
    Types of precedence policy applied to pickup and delivery pairs.
    + +
    Assignment solve()
    Solves the current routing model; closes the current model.
    +
    Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks)
    For every vehicle of the routing model: - if total_slacks[vehicle] is not nullptr,...
    +
    void addVariableMaximizedByFinalizer(IntVar var)
    Adds a variable to maximize in the solution finalizer (see above for information on the solution fina...
    +
    void setArcCostEvaluatorOfAllVehicles(int evaluator_index)
    Sets the cost function of the model such that the cost of a segment of a route between node 'from' an...
    This class represent a reversible FIFO structure.
    -
    void AddVariableTargetToFinalizer(IntVar var, long target)
    Add a variable to set the closest possible to the target value in the solution finalizer.
    -
    int getVehicleClassesCount()
    Returns the number of different vehicle classes in the model.
    -
    void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor)
    The following methods set the linear and quadratic cost factors of vehicles (must be positive values)...
    -
    int addDisjunction(long[] indices)
    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
    -
    void addLocalSearchFilter(LocalSearchFilter filter)
    Adds a custom local search filter to the list of filters used to speed up local search by pruning unf...
    +
    void AddVariableTargetToFinalizer(IntVar var, long target)
    Add a variable to set the closest possible to the target value in the solution finalizer.
    +
    int getVehicleClassesCount()
    Returns the number of different vehicle classes in the model.
    +
    void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor)
    The following methods set the linear and quadratic cost factors of vehicles (must be positive values)...
    +
    int addDisjunction(long[] indices)
    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
    +
    void addLocalSearchFilter(LocalSearchFilter filter)
    Adds a custom local search filter to the list of filters used to speed up local search by pruning unf...
    -
    boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2)
    Returns whether the arc from->to1 is more constrained than from->to2, taking into account,...
    -
    void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment)
    Given a "source_model" and its "source_assignment", resets "target_assignment" with the IntVar variab...
    -
    SWIGTYPE_p_absl__Duration RemainingTime()
    Returns the time left in the search limit.
    +
    boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2)
    Returns whether the arc from->to1 is more constrained than from->to2, taking into account,...
    +
    void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment)
    Given a "source_model" and its "source_assignment", resets "target_assignment" with the IntVar variab...
    +
    SWIGTYPE_p_absl__Duration RemainingTime()
    Returns the time left in the search limit.
    Local Search Filters are used for fast neighbor pruning.
    static int getKNoDisjunction()
    Constant used to express the "no disjunction" index, returned when a node does not appear in any disj...
    -
    static final int ROUTING_SUCCESS
    Problem solved successfully after calling RoutingModel::Solve().
    -
    boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
    +
    static final int ROUTING_SUCCESS
    Problem solved successfully after calling RoutingModel::Solve().
    +
    boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
    An Assignment is a variable -> domains mapping, used to report solutions to the user.
    Definition: Assignment.java:14
    -
    DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer)
    The next few members are in the public section only for testing purposes.
    -
    long getFixedCostOfVehicle(int vehicle)
    Returns the route fixed cost taken into account if the route of the vehicle is not empty,...
    -
    void addLocalSearchOperator(LocalSearchOperator ls_operator)
    Adds a local search operator to the set of operators used to solve the vehicle routing problem.
    -
    void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle)
    -
    void addSoftSameVehicleConstraint(long[] indices, long cost)
    Adds a soft contraint to force a set of variable indices to be on the same vehicle.
    - +
    DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer)
    The next few members are in the public section only for testing purposes.
    +
    long getFixedCostOfVehicle(int vehicle)
    Returns the route fixed cost taken into account if the route of the vehicle is not empty,...
    +
    void addLocalSearchOperator(LocalSearchOperator ls_operator)
    Adds a local search operator to the set of operators used to solve the vehicle routing problem.
    +
    void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle)
    +
    void addSoftSameVehicleConstraint(long[] indices, long cost)
    Adds a soft contraint to force a set of variable indices to be on the same vehicle.
    + -
    boolean addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name)
    -
    IntVar nextVar(long index)
    Returns the next variable of the node corresponding to index.
    - -
    void addVariableMinimizedByFinalizer(IntVar var)
    Adds a variable to minimize in the solution finalizer.
    -
    void setAllowedVehiclesForIndex(int[] vehicles, long index)
    Sets the vehicles which can visit a given node.
    -
    boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
    -
    IntVar activeVar(long index)
    Returns the active variable of the node corresponding to index.
    -
    long computeLowerBound()
    Computes a lower bound to the routing problem solving a linear assignment problem.
    -
    boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
    Model creation Methods to add dimensions to routes; dimensions represent quantities accumulated at no...
    -
    void setPickupAndDeliveryPolicyOfAllVehicles(int policy)
    Sets the Pickup and delivery policy of all vehicles.
    -
    boolean costsAreHomogeneousAcrossVehicles()
    Whether costs are homogeneous across all vehicles.
    -
    int status()
    Returns the current status of the routing model.
    -
    boolean hasDimension(String dimension_name)
    Returns true if a dimension exists for a given dimension name.
    -
    void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction)
    Same as AddPickupAndDelivery but notifying that the performed node from the disjunction of index 'pic...
    -
    IntVar [] nexts()
    Returns all next variables of the model, such that Nexts(i) is the next variable of the node correspo...
    -
    String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print)
    Print some debugging information about an assignment, including the feasible intervals of the CumulVa...
    -
    Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices)
    Restores the routes as the current solution.
    -
    long getArcCostForFirstSolution(long from_index, long to_index)
    Returns the cost of the arc in the context of the first solution strategy.
    +
    boolean addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name)
    +
    IntVar nextVar(long index)
    Returns the next variable of the node corresponding to index.
    + +
    void addVariableMinimizedByFinalizer(IntVar var)
    Adds a variable to minimize in the solution finalizer.
    +
    void setAllowedVehiclesForIndex(int[] vehicles, long index)
    Sets the vehicles which can visit a given node.
    +
    boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
    +
    IntVar activeVar(long index)
    Returns the active variable of the node corresponding to index.
    +
    long computeLowerBound()
    Computes a lower bound to the routing problem solving a linear assignment problem.
    +
    boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
    Model creation Methods to add dimensions to routes; dimensions represent quantities accumulated at no...
    +
    void setPickupAndDeliveryPolicyOfAllVehicles(int policy)
    Sets the Pickup and delivery policy of all vehicles.
    +
    boolean costsAreHomogeneousAcrossVehicles()
    Whether costs are homogeneous across all vehicles.
    +
    int status()
    Returns the current status of the routing model.
    +
    boolean hasDimension(String dimension_name)
    Returns true if a dimension exists for a given dimension name.
    +
    void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction)
    Same as AddPickupAndDelivery but notifying that the performed node from the disjunction of index 'pic...
    +
    IntVar [] nexts()
    Returns all next variables of the model, such that Nexts(i) is the next variable of the node correspo...
    +
    String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print)
    Print some debugging information about an assignment, including the feasible intervals of the CumulVa...
    +
    Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices)
    Restores the routes as the current solution.
    +
    long getArcCostForFirstSolution(long from_index, long to_index)
    Returns the cost of the arc in the context of the first solution strategy.
    RoutingModel(RoutingIndexManager index_manager)
    Constructor taking an index manager.
    -
    long getArcCostForClass(long from_index, long to_index, long cost_class_index)
    Returns the cost of the segment between two nodes for a given cost class.
    -
    long size()
    Returns the number of next variables in the model.
    -
    static final int ROUTING_NOT_SOLVED
    Status of the search.
    -
    Solver solver()
    Returns the underlying constraint solver.
    - -
    int nodes()
    Sizes and indices Returns the number of nodes in the model.
    -
    int [] getDisjunctionIndices(long index)
    Returns the indices of the disjunctions to which an index belongs.
    -
    boolean isVehicleAllowedForIndex(int vehicle, long index)
    Returns true if a vehicle is allowed to visit a given node.
    -
    void setFirstSolutionEvaluator(LongBinaryOperator evaluator)
    Gets/sets the evaluator used during the search.
    -
    Assignment preAssignment()
    Returns an assignment used to fix some of the variables of the problem.
    -
    boolean hasVehicleWithCostClassIndex(int cost_class_index)
    Returns true iff the model contains a vehicle with the given cost_class_index.
    -
    void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle)
    Sets the cost function for a given vehicle route.
    -
    boolean isVehicleUsed(Assignment assignment, int vehicle)
    Returns true if the route of 'vehicle' is non empty in 'assignment'.
    -
    void assignmentToRoutes(Assignment assignment, long[][] routes)
    Converts the solution in the given assignment to routes for all vehicles.
    -
    String getPrimaryConstrainedDimension()
    Get the primary constrained dimension, or an empty std::string if it is unset.
    +
    long getArcCostForClass(long from_index, long to_index, long cost_class_index)
    Returns the cost of the segment between two nodes for a given cost class.
    +
    long size()
    Returns the number of next variables in the model.
    +
    static final int ROUTING_NOT_SOLVED
    Status of the search.
    +
    Solver solver()
    Returns the underlying constraint solver.
    + +
    int nodes()
    Sizes and indices Returns the number of nodes in the model.
    +
    int [] getDisjunctionIndices(long index)
    Returns the indices of the disjunctions to which an index belongs.
    +
    boolean isVehicleAllowedForIndex(int vehicle, long index)
    Returns true if a vehicle is allowed to visit a given node.
    +
    void setFirstSolutionEvaluator(LongBinaryOperator evaluator)
    Gets/sets the evaluator used during the search.
    +
    Assignment preAssignment()
    Returns an assignment used to fix some of the variables of the problem.
    +
    boolean hasVehicleWithCostClassIndex(int cost_class_index)
    Returns true iff the model contains a vehicle with the given cost_class_index.
    +
    void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle)
    Sets the cost function for a given vehicle route.
    +
    boolean isVehicleUsed(Assignment assignment, int vehicle)
    Returns true if the route of 'vehicle' is non empty in 'assignment'.
    +
    void assignmentToRoutes(Assignment assignment, long[][] routes)
    Converts the solution in the given assignment to routes for all vehicles.
    +
    String getPrimaryConstrainedDimension()
    Get the primary constrained dimension, or an empty std::string if it is unset.
    RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters)
    -
    void closeModelWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    Same as above taking search parameters (as of 10/2015 some the parameters have to be set when closing...
    -
    void closeModel()
    Closes the current routing model; after this method is called, no modification to the model can be do...
    -
    static final int ROUTING_FAIL_TIMEOUT
    Time limit reached before finding a solution with RoutingModel::Solve().
    -
    long getDepot()
    Returns the variable index of the first starting or ending node of all routes.
    -
    long getHomogeneousCost(long from_index, long to_index)
    Returns the cost of the segment between two nodes supposing all vehicle costs are the same (returns t...
    -
    IntVar VehicleCostsConsideredVar(int vehicle)
    Returns the variable specifying whether or not costs are considered for vehicle.
    - -
    static final int ROUTING_INVALID
    Model, model parameters or flags are not valid.
    -
    static final int ROUTING_FAIL
    No solution found to the problem after calling RoutingModel::Solve().
    -
    int getCostClassIndexOfVehicle(long vehicle)
    Get the cost class index of the given vehicle.
    -
    void setFixedCostOfVehicle(long cost, int vehicle)
    Sets the fixed cost of one vehicle route.
    +
    void closeModelWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
    Same as above taking search parameters (as of 10/2015 some the parameters have to be set when closing...
    +
    void closeModel()
    Closes the current routing model; after this method is called, no modification to the model can be do...
    +
    static final int ROUTING_FAIL_TIMEOUT
    Time limit reached before finding a solution with RoutingModel::Solve().
    +
    long getDepot()
    Returns the variable index of the first starting or ending node of all routes.
    +
    long getHomogeneousCost(long from_index, long to_index)
    Returns the cost of the segment between two nodes supposing all vehicle costs are the same (returns t...
    +
    IntVar VehicleCostsConsideredVar(int vehicle)
    Returns the variable specifying whether or not costs are considered for vehicle.
    + +
    static final int ROUTING_INVALID
    Model, model parameters or flags are not valid.
    +
    static final int ROUTING_FAIL
    No solution found to the problem after calling RoutingModel::Solve().
    +
    int getCostClassIndexOfVehicle(long vehicle)
    Get the cost class index of the given vehicle.
    +
    void setFixedCostOfVehicle(long cost, int vehicle)
    Sets the fixed cost of one vehicle route.
    -Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/constraint_solver/routing_parameters.proto
    3 
    4 package com.google.ortools.constraintsolver;
    5 
    6 public final class RoutingParameters {
    7  private RoutingParameters() {}
    8  public static void registerAllExtensions(
    9  com.google.protobuf.ExtensionRegistryLite registry) {
    10  }
    11 
    12  public static void registerAllExtensions(
    13  com.google.protobuf.ExtensionRegistry registry) {
    15  (com.google.protobuf.ExtensionRegistryLite) registry);
    16  }
    17  static final com.google.protobuf.Descriptors.Descriptor
    18  internal_static_operations_research_RoutingSearchParameters_descriptor;
    19  static final
    20  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    21  internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable;
    22  static final com.google.protobuf.Descriptors.Descriptor
    23  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    24  static final
    25  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    26  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable;
    27  static final com.google.protobuf.Descriptors.Descriptor
    28  internal_static_operations_research_RoutingModelParameters_descriptor;
    29  static final
    30  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    31  internal_static_operations_research_RoutingModelParameters_fieldAccessorTable;
    32 
    33  public static com.google.protobuf.Descriptors.FileDescriptor
    35  return descriptor;
    36  }
    37  private static com.google.protobuf.Descriptors.FileDescriptor
    38  descriptor;
    39  static {
    40  java.lang.String[] descriptorData = {
    41  "\n2ortools/constraint_solver/routing_para" +
    42  "meters.proto\022\023operations_research\032\036googl" +
    43  "e/protobuf/duration.proto\032-ortools/const" +
    44  "raint_solver/routing_enums.proto\0321ortool" +
    45  "s/constraint_solver/solver_parameters.pr" +
    46  "oto\032#ortools/util/optional_boolean.proto" +
    47  "\"\274\026\n\027RoutingSearchParameters\022Q\n\027first_so" +
    48  "lution_strategy\030\001 \001(\01620.operations_resea" +
    49  "rch.FirstSolutionStrategy.Value\022.\n&use_u" +
    50  "nfiltered_first_solution_strategy\030\002 \001(\010\022" +
    51  "\037\n\027savings_neighbors_ratio\030\016 \001(\001\022&\n\036savi" +
    52  "ngs_max_memory_usage_bytes\030\027 \001(\001\022 \n\030savi" +
    53  "ngs_add_reverse_arcs\030\017 \001(\010\022\037\n\027savings_ar" +
    54  "c_coefficient\030\022 \001(\001\022\037\n\027savings_parallel_" +
    55  "routes\030\023 \001(\010\022/\n\'cheapest_insertion_farth" +
    56  "est_seeds_ratio\030\020 \001(\001\022*\n\"cheapest_insert" +
    57  "ion_neighbors_ratio\030\025 \001(\001\022m\n\026local_searc" +
    58  "h_operators\030\003 \001(\0132M.operations_research." +
    59  "RoutingSearchParameters.LocalSearchNeigh" +
    60  "borhoodOperators\0225\n-relocate_expensive_c" +
    61  "hain_num_arcs_to_consider\030\024 \001(\005\022W\n\032local" +
    62  "_search_metaheuristic\030\004 \001(\01623.operations" +
    63  "_research.LocalSearchMetaheuristic.Value" +
    64  "\022.\n&guided_local_search_lambda_coefficie" +
    65  "nt\030\005 \001(\001\022\036\n\026use_depth_first_search\030\006 \001(\010" +
    66  "\0224\n\006use_cp\030\034 \001(\0162$.operations_research.O" +
    67  "ptionalBoolean\0228\n\nuse_cp_sat\030\033 \001(\0162$.ope" +
    68  "rations_research.OptionalBoolean\022\031\n\021opti" +
    69  "mization_step\030\007 \001(\001\022&\n\036number_of_solutio" +
    70  "ns_to_collect\030\021 \001(\005\022\026\n\016solution_limit\030\010 " +
    71  "\001(\003\022-\n\ntime_limit\030\t \001(\0132\031.google.protobu" +
    72  "f.Duration\0221\n\016lns_time_limit\030\n \001(\0132\031.goo" +
    73  "gle.protobuf.Duration\022\034\n\024use_full_propag" +
    74  "ation\030\013 \001(\010\022\022\n\nlog_search\030\r \001(\010\022\037\n\027log_c" +
    75  "ost_scaling_factor\030\026 \001(\001\032\304\r\n LocalSearch" +
    76  "NeighborhoodOperators\022:\n\014use_relocate\030\001 " +
    77  "\001(\0162$.operations_research.OptionalBoolea" +
    78  "n\022?\n\021use_relocate_pair\030\002 \001(\0162$.operation" +
    79  "s_research.OptionalBoolean\022E\n\027use_light_" +
    80  "relocate_pair\030\030 \001(\0162$.operations_researc" +
    81  "h.OptionalBoolean\022D\n\026use_relocate_neighb" +
    82  "ors\030\003 \001(\0162$.operations_research.Optional" +
    83  "Boolean\022B\n\024use_relocate_subtrip\030\031 \001(\0162$." +
    84  "operations_research.OptionalBoolean\022:\n\014u" +
    85  "se_exchange\030\004 \001(\0162$.operations_research." +
    86  "OptionalBoolean\022?\n\021use_exchange_pair\030\026 \001" +
    87  "(\0162$.operations_research.OptionalBoolean" +
    88  "\022B\n\024use_exchange_subtrip\030\032 \001(\0162$.operati" +
    89  "ons_research.OptionalBoolean\0227\n\tuse_cros" +
    90  "s\030\005 \001(\0162$.operations_research.OptionalBo" +
    91  "olean\022@\n\022use_cross_exchange\030\006 \001(\0162$.oper" +
    92  "ations_research.OptionalBoolean\022J\n\034use_r" +
    93  "elocate_expensive_chain\030\027 \001(\0162$.operatio" +
    94  "ns_research.OptionalBoolean\0229\n\013use_two_o" +
    95  "pt\030\007 \001(\0162$.operations_research.OptionalB" +
    96  "oolean\0228\n\nuse_or_opt\030\010 \001(\0162$.operations_" +
    97  "research.OptionalBoolean\022?\n\021use_lin_kern" +
    98  "ighan\030\t \001(\0162$.operations_research.Option" +
    99  "alBoolean\0229\n\013use_tsp_opt\030\n \001(\0162$.operati" +
    100  "ons_research.OptionalBoolean\022=\n\017use_make" +
    101  "_active\030\013 \001(\0162$.operations_research.Opti" +
    102  "onalBoolean\022J\n\034use_relocate_and_make_act" +
    103  "ive\030\025 \001(\0162$.operations_research.Optional" +
    104  "Boolean\022?\n\021use_make_inactive\030\014 \001(\0162$.ope" +
    105  "rations_research.OptionalBoolean\022E\n\027use_" +
    106  "make_chain_inactive\030\r \001(\0162$.operations_r" +
    107  "esearch.OptionalBoolean\022=\n\017use_swap_acti" +
    108  "ve\030\016 \001(\0162$.operations_research.OptionalB" +
    109  "oolean\022F\n\030use_extended_swap_active\030\017 \001(\016" +
    110  "2$.operations_research.OptionalBoolean\022G" +
    111  "\n\031use_node_pair_swap_active\030\024 \001(\0162$.oper" +
    112  "ations_research.OptionalBoolean\022:\n\014use_p" +
    113  "ath_lns\030\020 \001(\0162$.operations_research.Opti" +
    114  "onalBoolean\022?\n\021use_full_path_lns\030\021 \001(\0162$" +
    115  ".operations_research.OptionalBoolean\0229\n\013" +
    116  "use_tsp_lns\030\022 \001(\0162$.operations_research." +
    117  "OptionalBoolean\022>\n\020use_inactive_lns\030\023 \001(" +
    118  "\0162$.operations_research.OptionalBoolean\"" +
    119  "\250\001\n\026RoutingModelParameters\022J\n\021solver_par" +
    120  "ameters\030\001 \001(\0132/.operations_research.Cons" +
    121  "traintSolverParameters\022!\n\031reduce_vehicle" +
    122  "_cost_model\030\002 \001(\010\022\037\n\027max_callback_cache_" +
    123  "size\030\003 \001(\005BI\n#com.google.ortools.constra" +
    124  "intsolverP\001\252\002\037Google.OrTools.ConstraintS" +
    125  "olverb\006proto3"
    126  };
    127  descriptor = com.google.protobuf.Descriptors.FileDescriptor
    128  .internalBuildGeneratedFileFrom(descriptorData,
    129  new com.google.protobuf.Descriptors.FileDescriptor[] {
    130  com.google.protobuf.DurationProto.getDescriptor(),
    131  com.google.ortools.constraintsolver.RoutingEnums.getDescriptor(),
    132  com.google.ortools.constraintsolver.SolverParameters.getDescriptor(),
    133  com.google.ortools.util.OptionalBooleanOuterClass.getDescriptor(),
    134  });
    135  internal_static_operations_research_RoutingSearchParameters_descriptor =
    136  getDescriptor().getMessageTypes().get(0);
    137  internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable = new
    138  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
    139  internal_static_operations_research_RoutingSearchParameters_descriptor,
    140  new java.lang.String[] { "FirstSolutionStrategy", "UseUnfilteredFirstSolutionStrategy", "SavingsNeighborsRatio", "SavingsMaxMemoryUsageBytes", "SavingsAddReverseArcs", "SavingsArcCoefficient", "SavingsParallelRoutes", "CheapestInsertionFarthestSeedsRatio", "CheapestInsertionNeighborsRatio", "LocalSearchOperators", "RelocateExpensiveChainNumArcsToConsider", "LocalSearchMetaheuristic", "GuidedLocalSearchLambdaCoefficient", "UseDepthFirstSearch", "UseCp", "UseCpSat", "OptimizationStep", "NumberOfSolutionsToCollect", "SolutionLimit", "TimeLimit", "LnsTimeLimit", "UseFullPropagation", "LogSearch", "LogCostScalingFactor", });
    141  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor =
    142  internal_static_operations_research_RoutingSearchParameters_descriptor.getNestedTypes().get(0);
    143  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable = new
    144  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
    145  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor,
    146  new java.lang.String[] { "UseRelocate", "UseRelocatePair", "UseLightRelocatePair", "UseRelocateNeighbors", "UseRelocateSubtrip", "UseExchange", "UseExchangePair", "UseExchangeSubtrip", "UseCross", "UseCrossExchange", "UseRelocateExpensiveChain", "UseTwoOpt", "UseOrOpt", "UseLinKernighan", "UseTspOpt", "UseMakeActive", "UseRelocateAndMakeActive", "UseMakeInactive", "UseMakeChainInactive", "UseSwapActive", "UseExtendedSwapActive", "UseNodePairSwapActive", "UsePathLns", "UseFullPathLns", "UseTspLns", "UseInactiveLns", });
    147  internal_static_operations_research_RoutingModelParameters_descriptor =
    148  getDescriptor().getMessageTypes().get(1);
    149  internal_static_operations_research_RoutingModelParameters_fieldAccessorTable = new
    150  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
    151  internal_static_operations_research_RoutingModelParameters_descriptor,
    152  new java.lang.String[] { "SolverParameters", "ReduceVehicleCostModel", "MaxCallbackCacheSize", });
    153  com.google.protobuf.DurationProto.getDescriptor();
    157  }
    158 
    159  // @@protoc_insertion_point(outer_class_scope)
    160 }
    +Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/constraint_solver/routing_parameters.proto
    3 
    4 package com.google.ortools.constraintsolver;
    5 
    6 public final class RoutingParameters {
    7  private RoutingParameters() {}
    8  public static void registerAllExtensions(
    9  com.google.protobuf.ExtensionRegistryLite registry) {
    10  }
    11 
    12  public static void registerAllExtensions(
    13  com.google.protobuf.ExtensionRegistry registry) {
    15  (com.google.protobuf.ExtensionRegistryLite) registry);
    16  }
    17  static final com.google.protobuf.Descriptors.Descriptor
    18  internal_static_operations_research_RoutingSearchParameters_descriptor;
    19  static final
    20  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    21  internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable;
    22  static final com.google.protobuf.Descriptors.Descriptor
    23  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    24  static final
    25  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    26  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable;
    27  static final com.google.protobuf.Descriptors.Descriptor
    28  internal_static_operations_research_RoutingModelParameters_descriptor;
    29  static final
    30  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    31  internal_static_operations_research_RoutingModelParameters_fieldAccessorTable;
    32 
    33  public static com.google.protobuf.Descriptors.FileDescriptor
    35  return descriptor;
    36  }
    37  private static com.google.protobuf.Descriptors.FileDescriptor
    38  descriptor;
    39  static {
    40  java.lang.String[] descriptorData = {
    41  "\n2ortools/constraint_solver/routing_para" +
    42  "meters.proto\022\023operations_research\032\036googl" +
    43  "e/protobuf/duration.proto\032-ortools/const" +
    44  "raint_solver/routing_enums.proto\0321ortool" +
    45  "s/constraint_solver/solver_parameters.pr" +
    46  "oto\032#ortools/util/optional_boolean.proto" +
    47  "\"\325\026\n\027RoutingSearchParameters\022Q\n\027first_so" +
    48  "lution_strategy\030\001 \001(\01620.operations_resea" +
    49  "rch.FirstSolutionStrategy.Value\022.\n&use_u" +
    50  "nfiltered_first_solution_strategy\030\002 \001(\010\022" +
    51  "\037\n\027savings_neighbors_ratio\030\016 \001(\001\022&\n\036savi" +
    52  "ngs_max_memory_usage_bytes\030\027 \001(\001\022 \n\030savi" +
    53  "ngs_add_reverse_arcs\030\017 \001(\010\022\037\n\027savings_ar" +
    54  "c_coefficient\030\022 \001(\001\022\037\n\027savings_parallel_" +
    55  "routes\030\023 \001(\010\022/\n\'cheapest_insertion_farth" +
    56  "est_seeds_ratio\030\020 \001(\001\022*\n\"cheapest_insert" +
    57  "ion_neighbors_ratio\030\025 \001(\001\022m\n\026local_searc" +
    58  "h_operators\030\003 \001(\0132M.operations_research." +
    59  "RoutingSearchParameters.LocalSearchNeigh" +
    60  "borhoodOperators\0225\n-relocate_expensive_c" +
    61  "hain_num_arcs_to_consider\030\024 \001(\005\022W\n\032local" +
    62  "_search_metaheuristic\030\004 \001(\01623.operations" +
    63  "_research.LocalSearchMetaheuristic.Value" +
    64  "\022.\n&guided_local_search_lambda_coefficie" +
    65  "nt\030\005 \001(\001\022\036\n\026use_depth_first_search\030\006 \001(\010" +
    66  "\0224\n\006use_cp\030\034 \001(\0162$.operations_research.O" +
    67  "ptionalBoolean\0228\n\nuse_cp_sat\030\033 \001(\0162$.ope" +
    68  "rations_research.OptionalBoolean\022\031\n\021opti" +
    69  "mization_step\030\007 \001(\001\022&\n\036number_of_solutio" +
    70  "ns_to_collect\030\021 \001(\005\022\026\n\016solution_limit\030\010 " +
    71  "\001(\003\022-\n\ntime_limit\030\t \001(\0132\031.google.protobu" +
    72  "f.Duration\0221\n\016lns_time_limit\030\n \001(\0132\031.goo" +
    73  "gle.protobuf.Duration\022\034\n\024use_full_propag" +
    74  "ation\030\013 \001(\010\022\022\n\nlog_search\030\r \001(\010\022\037\n\027log_c" +
    75  "ost_scaling_factor\030\026 \001(\001\022\027\n\017log_cost_off" +
    76  "set\030\035 \001(\001\032\304\r\n LocalSearchNeighborhoodOpe" +
    77  "rators\022:\n\014use_relocate\030\001 \001(\0162$.operation" +
    78  "s_research.OptionalBoolean\022?\n\021use_reloca" +
    79  "te_pair\030\002 \001(\0162$.operations_research.Opti" +
    80  "onalBoolean\022E\n\027use_light_relocate_pair\030\030" +
    81  " \001(\0162$.operations_research.OptionalBoole" +
    82  "an\022D\n\026use_relocate_neighbors\030\003 \001(\0162$.ope" +
    83  "rations_research.OptionalBoolean\022B\n\024use_" +
    84  "relocate_subtrip\030\031 \001(\0162$.operations_rese" +
    85  "arch.OptionalBoolean\022:\n\014use_exchange\030\004 \001" +
    86  "(\0162$.operations_research.OptionalBoolean" +
    87  "\022?\n\021use_exchange_pair\030\026 \001(\0162$.operations" +
    88  "_research.OptionalBoolean\022B\n\024use_exchang" +
    89  "e_subtrip\030\032 \001(\0162$.operations_research.Op" +
    90  "tionalBoolean\0227\n\tuse_cross\030\005 \001(\0162$.opera" +
    91  "tions_research.OptionalBoolean\022@\n\022use_cr" +
    92  "oss_exchange\030\006 \001(\0162$.operations_research" +
    93  ".OptionalBoolean\022J\n\034use_relocate_expensi" +
    94  "ve_chain\030\027 \001(\0162$.operations_research.Opt" +
    95  "ionalBoolean\0229\n\013use_two_opt\030\007 \001(\0162$.oper" +
    96  "ations_research.OptionalBoolean\0228\n\nuse_o" +
    97  "r_opt\030\010 \001(\0162$.operations_research.Option" +
    98  "alBoolean\022?\n\021use_lin_kernighan\030\t \001(\0162$.o" +
    99  "perations_research.OptionalBoolean\0229\n\013us" +
    100  "e_tsp_opt\030\n \001(\0162$.operations_research.Op" +
    101  "tionalBoolean\022=\n\017use_make_active\030\013 \001(\0162$" +
    102  ".operations_research.OptionalBoolean\022J\n\034" +
    103  "use_relocate_and_make_active\030\025 \001(\0162$.ope" +
    104  "rations_research.OptionalBoolean\022?\n\021use_" +
    105  "make_inactive\030\014 \001(\0162$.operations_researc" +
    106  "h.OptionalBoolean\022E\n\027use_make_chain_inac" +
    107  "tive\030\r \001(\0162$.operations_research.Optiona" +
    108  "lBoolean\022=\n\017use_swap_active\030\016 \001(\0162$.oper" +
    109  "ations_research.OptionalBoolean\022F\n\030use_e" +
    110  "xtended_swap_active\030\017 \001(\0162$.operations_r" +
    111  "esearch.OptionalBoolean\022G\n\031use_node_pair" +
    112  "_swap_active\030\024 \001(\0162$.operations_research" +
    113  ".OptionalBoolean\022:\n\014use_path_lns\030\020 \001(\0162$" +
    114  ".operations_research.OptionalBoolean\022?\n\021" +
    115  "use_full_path_lns\030\021 \001(\0162$.operations_res" +
    116  "earch.OptionalBoolean\0229\n\013use_tsp_lns\030\022 \001" +
    117  "(\0162$.operations_research.OptionalBoolean" +
    118  "\022>\n\020use_inactive_lns\030\023 \001(\0162$.operations_" +
    119  "research.OptionalBoolean\"\250\001\n\026RoutingMode" +
    120  "lParameters\022J\n\021solver_parameters\030\001 \001(\0132/" +
    121  ".operations_research.ConstraintSolverPar" +
    122  "ameters\022!\n\031reduce_vehicle_cost_model\030\002 \001" +
    123  "(\010\022\037\n\027max_callback_cache_size\030\003 \001(\005BI\n#c" +
    124  "om.google.ortools.constraintsolverP\001\252\002\037G" +
    125  "oogle.OrTools.ConstraintSolverb\006proto3"
    126  };
    127  descriptor = com.google.protobuf.Descriptors.FileDescriptor
    128  .internalBuildGeneratedFileFrom(descriptorData,
    129  new com.google.protobuf.Descriptors.FileDescriptor[] {
    130  com.google.protobuf.DurationProto.getDescriptor(),
    131  com.google.ortools.constraintsolver.RoutingEnums.getDescriptor(),
    132  com.google.ortools.constraintsolver.SolverParameters.getDescriptor(),
    133  com.google.ortools.util.OptionalBooleanOuterClass.getDescriptor(),
    134  });
    135  internal_static_operations_research_RoutingSearchParameters_descriptor =
    136  getDescriptor().getMessageTypes().get(0);
    137  internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable = new
    138  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
    139  internal_static_operations_research_RoutingSearchParameters_descriptor,
    140  new java.lang.String[] { "FirstSolutionStrategy", "UseUnfilteredFirstSolutionStrategy", "SavingsNeighborsRatio", "SavingsMaxMemoryUsageBytes", "SavingsAddReverseArcs", "SavingsArcCoefficient", "SavingsParallelRoutes", "CheapestInsertionFarthestSeedsRatio", "CheapestInsertionNeighborsRatio", "LocalSearchOperators", "RelocateExpensiveChainNumArcsToConsider", "LocalSearchMetaheuristic", "GuidedLocalSearchLambdaCoefficient", "UseDepthFirstSearch", "UseCp", "UseCpSat", "OptimizationStep", "NumberOfSolutionsToCollect", "SolutionLimit", "TimeLimit", "LnsTimeLimit", "UseFullPropagation", "LogSearch", "LogCostScalingFactor", "LogCostOffset", });
    141  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor =
    142  internal_static_operations_research_RoutingSearchParameters_descriptor.getNestedTypes().get(0);
    143  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable = new
    144  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
    145  internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor,
    146  new java.lang.String[] { "UseRelocate", "UseRelocatePair", "UseLightRelocatePair", "UseRelocateNeighbors", "UseRelocateSubtrip", "UseExchange", "UseExchangePair", "UseExchangeSubtrip", "UseCross", "UseCrossExchange", "UseRelocateExpensiveChain", "UseTwoOpt", "UseOrOpt", "UseLinKernighan", "UseTspOpt", "UseMakeActive", "UseRelocateAndMakeActive", "UseMakeInactive", "UseMakeChainInactive", "UseSwapActive", "UseExtendedSwapActive", "UseNodePairSwapActive", "UsePathLns", "UseFullPathLns", "UseTspLns", "UseInactiveLns", });
    147  internal_static_operations_research_RoutingModelParameters_descriptor =
    148  getDescriptor().getMessageTypes().get(1);
    149  internal_static_operations_research_RoutingModelParameters_fieldAccessorTable = new
    150  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
    151  internal_static_operations_research_RoutingModelParameters_descriptor,
    152  new java.lang.String[] { "SolverParameters", "ReduceVehicleCostModel", "MaxCallbackCacheSize", });
    153  com.google.protobuf.DurationProto.getDescriptor();
    157  }
    158 
    159  // @@protoc_insertion_point(outer_class_scope)
    160 }
    diff --git a/docs/java/RoutingSearchParametersOrBuilder_8java_source.html b/docs/java/RoutingSearchParametersOrBuilder_8java_source.html index 5a0ea2a518..376ac6026a 100644 --- a/docs/java/RoutingSearchParametersOrBuilder_8java_source.html +++ b/docs/java/RoutingSearchParametersOrBuilder_8java_source.html @@ -42,16 +42,17 @@
    RoutingSearchParametersOrBuilder.java
    -Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/constraint_solver/routing_parameters.proto
    3 
    4 package com.google.ortools.constraintsolver;
    5 
    6 public interface RoutingSearchParametersOrBuilder extends
    7  // @@protoc_insertion_point(interface_extends:operations_research.RoutingSearchParameters)
    8  com.google.protobuf.MessageOrBuilder {
    9 
    26 
    37 
    47  double getSavingsNeighborsRatio();
    48 
    62 
    71  boolean getSavingsAddReverseArcs();
    72 
    84  double getSavingsArcCoefficient();
    85 
    93  boolean getSavingsParallelRoutes();
    94 
    105 
    117 
    121  boolean hasLocalSearchOperators();
    130 
    145 
    162 
    174 
    184  boolean getUseDepthFirstSearch();
    185 
    195  int getUseCpValue();
    206 
    217  int getUseCpSatValue();
    229 
    239  double getOptimizationStep();
    240 
    250 
    260  long getSolutionLimit();
    261 
    269  boolean hasTimeLimit();
    277  com.google.protobuf.Duration getTimeLimit();
    285  com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder();
    286 
    295  boolean hasLnsTimeLimit();
    304  com.google.protobuf.Duration getLnsTimeLimit();
    313  com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder();
    314 
    330  boolean getUseFullPropagation();
    331 
    350  boolean getLogSearch();
    351 
    359  double getLogCostScalingFactor();
    360 }
    +Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/constraint_solver/routing_parameters.proto
    3 
    4 package com.google.ortools.constraintsolver;
    5 
    6 public interface RoutingSearchParametersOrBuilder extends
    7  // @@protoc_insertion_point(interface_extends:operations_research.RoutingSearchParameters)
    8  com.google.protobuf.MessageOrBuilder {
    9 
    26 
    37 
    47  double getSavingsNeighborsRatio();
    48 
    62 
    71  boolean getSavingsAddReverseArcs();
    72 
    84  double getSavingsArcCoefficient();
    85 
    93  boolean getSavingsParallelRoutes();
    94 
    105 
    117 
    121  boolean hasLocalSearchOperators();
    130 
    145 
    162 
    174 
    184  boolean getUseDepthFirstSearch();
    185 
    195  int getUseCpValue();
    206 
    217  int getUseCpSatValue();
    229 
    239  double getOptimizationStep();
    240 
    250 
    260  long getSolutionLimit();
    261 
    269  boolean hasTimeLimit();
    277  com.google.protobuf.Duration getTimeLimit();
    285  com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder();
    286 
    295  boolean hasLnsTimeLimit();
    304  com.google.protobuf.Duration getLnsTimeLimit();
    313  com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder();
    314 
    330  boolean getUseFullPropagation();
    331 
    350  boolean getLogSearch();
    351 
    360  double getLogCostScalingFactor();
    361 
    365  double getLogCostOffset();
    366 }
    com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder()
    boolean hasLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - +
    com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder()
    + @@ -84,7 +85,7 @@
    com.google.ortools.constraintsolver.FirstSolutionStrategy.Value getFirstSolutionStrategy()
    - +
    com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value getLocalSearchMetaheuristic()
    diff --git a/docs/java/RoutingSearchParameters_8java_source.html b/docs/java/RoutingSearchParameters_8java_source.html index 8571b5a793..5b08861e8b 100644 --- a/docs/java/RoutingSearchParameters_8java_source.html +++ b/docs/java/RoutingSearchParameters_8java_source.html @@ -42,543 +42,548 @@
    RoutingSearchParameters.java
    -Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/constraint_solver/routing_parameters.proto
    3 
    4 package com.google.ortools.constraintsolver;
    5 
    17 public final class RoutingSearchParameters extends
    18  com.google.protobuf.GeneratedMessageV3 implements
    19  // @@protoc_insertion_point(message_implements:operations_research.RoutingSearchParameters)
    21 private static final long serialVersionUID = 0L;
    22  // Use RoutingSearchParameters.newBuilder() to construct.
    23  private RoutingSearchParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    24  super(builder);
    25  }
    26  private RoutingSearchParameters() {
    27  firstSolutionStrategy_ = 0;
    28  localSearchMetaheuristic_ = 0;
    29  useCp_ = 0;
    30  useCpSat_ = 0;
    31  }
    32 
    33  @java.lang.Override
    34  @SuppressWarnings({"unused"})
    35  protected java.lang.Object newInstance(
    36  UnusedPrivateParameter unused) {
    37  return new RoutingSearchParameters();
    38  }
    39 
    40  @java.lang.Override
    41  public final com.google.protobuf.UnknownFieldSet
    43  return this.unknownFields;
    44  }
    46  com.google.protobuf.CodedInputStream input,
    47  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    48  throws com.google.protobuf.InvalidProtocolBufferException {
    49  this();
    50  if (extensionRegistry == null) {
    51  throw new java.lang.NullPointerException();
    52  }
    53  com.google.protobuf.UnknownFieldSet.Builder unknownFields =
    54  com.google.protobuf.UnknownFieldSet.newBuilder();
    55  try {
    56  boolean done = false;
    57  while (!done) {
    58  int tag = input.readTag();
    59  switch (tag) {
    60  case 0:
    61  done = true;
    62  break;
    63  case 8: {
    64  int rawValue = input.readEnum();
    65 
    66  firstSolutionStrategy_ = rawValue;
    67  break;
    68  }
    69  case 16: {
    70 
    71  useUnfilteredFirstSolutionStrategy_ = input.readBool();
    72  break;
    73  }
    74  case 26: {
    76  if (localSearchOperators_ != null) {
    77  subBuilder = localSearchOperators_.toBuilder();
    78  }
    79  localSearchOperators_ = input.readMessage(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.parser(), extensionRegistry);
    80  if (subBuilder != null) {
    81  subBuilder.mergeFrom(localSearchOperators_);
    82  localSearchOperators_ = subBuilder.buildPartial();
    83  }
    84 
    85  break;
    86  }
    87  case 32: {
    88  int rawValue = input.readEnum();
    89 
    90  localSearchMetaheuristic_ = rawValue;
    91  break;
    92  }
    93  case 41: {
    94 
    95  guidedLocalSearchLambdaCoefficient_ = input.readDouble();
    96  break;
    97  }
    98  case 48: {
    99 
    100  useDepthFirstSearch_ = input.readBool();
    101  break;
    102  }
    103  case 57: {
    104 
    105  optimizationStep_ = input.readDouble();
    106  break;
    107  }
    108  case 64: {
    109 
    110  solutionLimit_ = input.readInt64();
    111  break;
    112  }
    113  case 74: {
    114  com.google.protobuf.Duration.Builder subBuilder = null;
    115  if (timeLimit_ != null) {
    116  subBuilder = timeLimit_.toBuilder();
    117  }
    118  timeLimit_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
    119  if (subBuilder != null) {
    120  subBuilder.mergeFrom(timeLimit_);
    121  timeLimit_ = subBuilder.buildPartial();
    122  }
    123 
    124  break;
    125  }
    126  case 82: {
    127  com.google.protobuf.Duration.Builder subBuilder = null;
    128  if (lnsTimeLimit_ != null) {
    129  subBuilder = lnsTimeLimit_.toBuilder();
    130  }
    131  lnsTimeLimit_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
    132  if (subBuilder != null) {
    133  subBuilder.mergeFrom(lnsTimeLimit_);
    134  lnsTimeLimit_ = subBuilder.buildPartial();
    135  }
    136 
    137  break;
    138  }
    139  case 88: {
    140 
    141  useFullPropagation_ = input.readBool();
    142  break;
    143  }
    144  case 104: {
    145 
    146  logSearch_ = input.readBool();
    147  break;
    148  }
    149  case 113: {
    150 
    151  savingsNeighborsRatio_ = input.readDouble();
    152  break;
    153  }
    154  case 120: {
    155 
    156  savingsAddReverseArcs_ = input.readBool();
    157  break;
    158  }
    159  case 129: {
    160 
    161  cheapestInsertionFarthestSeedsRatio_ = input.readDouble();
    162  break;
    163  }
    164  case 136: {
    165 
    166  numberOfSolutionsToCollect_ = input.readInt32();
    167  break;
    168  }
    169  case 145: {
    170 
    171  savingsArcCoefficient_ = input.readDouble();
    172  break;
    173  }
    174  case 152: {
    175 
    176  savingsParallelRoutes_ = input.readBool();
    177  break;
    178  }
    179  case 160: {
    180 
    181  relocateExpensiveChainNumArcsToConsider_ = input.readInt32();
    182  break;
    183  }
    184  case 169: {
    185 
    186  cheapestInsertionNeighborsRatio_ = input.readDouble();
    187  break;
    188  }
    189  case 177: {
    190 
    191  logCostScalingFactor_ = input.readDouble();
    192  break;
    193  }
    194  case 185: {
    195 
    196  savingsMaxMemoryUsageBytes_ = input.readDouble();
    197  break;
    198  }
    199  case 216: {
    200  int rawValue = input.readEnum();
    201 
    202  useCpSat_ = rawValue;
    203  break;
    204  }
    205  case 224: {
    206  int rawValue = input.readEnum();
    207 
    208  useCp_ = rawValue;
    209  break;
    210  }
    211  default: {
    212  if (!parseUnknownField(
    213  input, unknownFields, extensionRegistry, tag)) {
    214  done = true;
    215  }
    216  break;
    217  }
    218  }
    219  }
    220  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    221  throw e.setUnfinishedMessage(this);
    222  } catch (java.io.IOException e) {
    223  throw new com.google.protobuf.InvalidProtocolBufferException(
    224  e).setUnfinishedMessage(this);
    225  } finally {
    226  this.unknownFields = unknownFields.build();
    227  makeExtensionsImmutable();
    228  }
    229  }
    230  public static final com.google.protobuf.Descriptors.Descriptor
    232  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
    233  }
    234 
    235  @java.lang.Override
    236  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    238  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable
    239  .ensureFieldAccessorsInitialized(
    241  }
    242 
    244  // @@protoc_insertion_point(interface_extends:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    245  com.google.protobuf.MessageOrBuilder {
    246 
    262  int getUseRelocateValue();
    279 
    312 
    341 
    400 
    439 
    453  int getUseExchangeValue();
    468 
    497 
    516 
    532  int getUseCrossValue();
    549 
    566 
    601 
    618  int getUseTwoOptValue();
    636 
    654  int getUseOrOptValue();
    673 
    696 
    709  int getUseTspOptValue();
    723 
    737  int getUseMakeActiveValue();
    752 
    787 
    812 
    839 
    851  int getUseSwapActiveValue();
    864 
    899 
    936 
    951  int getUsePathLnsValue();
    967 
    984 
    997  int getUseTspLnsValue();
    1011 
    1021  int getUseInactiveLnsValue();
    1032  }
    1041  public static final class LocalSearchNeighborhoodOperators extends
    1042  com.google.protobuf.GeneratedMessageV3 implements
    1043  // @@protoc_insertion_point(message_implements:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    1045  private static final long serialVersionUID = 0L;
    1046  // Use LocalSearchNeighborhoodOperators.newBuilder() to construct.
    1047  private LocalSearchNeighborhoodOperators(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    1048  super(builder);
    1049  }
    1051  useRelocate_ = 0;
    1052  useRelocatePair_ = 0;
    1053  useLightRelocatePair_ = 0;
    1054  useRelocateNeighbors_ = 0;
    1055  useRelocateSubtrip_ = 0;
    1056  useExchange_ = 0;
    1057  useExchangePair_ = 0;
    1058  useExchangeSubtrip_ = 0;
    1059  useCross_ = 0;
    1060  useCrossExchange_ = 0;
    1061  useRelocateExpensiveChain_ = 0;
    1062  useTwoOpt_ = 0;
    1063  useOrOpt_ = 0;
    1064  useLinKernighan_ = 0;
    1065  useTspOpt_ = 0;
    1066  useMakeActive_ = 0;
    1067  useRelocateAndMakeActive_ = 0;
    1068  useMakeInactive_ = 0;
    1069  useMakeChainInactive_ = 0;
    1070  useSwapActive_ = 0;
    1071  useExtendedSwapActive_ = 0;
    1072  useNodePairSwapActive_ = 0;
    1073  usePathLns_ = 0;
    1074  useFullPathLns_ = 0;
    1075  useTspLns_ = 0;
    1076  useInactiveLns_ = 0;
    1077  }
    1078 
    1079  @java.lang.Override
    1080  @SuppressWarnings({"unused"})
    1081  protected java.lang.Object newInstance(
    1082  UnusedPrivateParameter unused) {
    1083  return new LocalSearchNeighborhoodOperators();
    1084  }
    1085 
    1086  @java.lang.Override
    1087  public final com.google.protobuf.UnknownFieldSet
    1089  return this.unknownFields;
    1090  }
    1092  com.google.protobuf.CodedInputStream input,
    1093  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    1094  throws com.google.protobuf.InvalidProtocolBufferException {
    1095  this();
    1096  if (extensionRegistry == null) {
    1097  throw new java.lang.NullPointerException();
    1098  }
    1099  com.google.protobuf.UnknownFieldSet.Builder unknownFields =
    1100  com.google.protobuf.UnknownFieldSet.newBuilder();
    1101  try {
    1102  boolean done = false;
    1103  while (!done) {
    1104  int tag = input.readTag();
    1105  switch (tag) {
    1106  case 0:
    1107  done = true;
    1108  break;
    1109  case 8: {
    1110  int rawValue = input.readEnum();
    1111 
    1112  useRelocate_ = rawValue;
    1113  break;
    1114  }
    1115  case 16: {
    1116  int rawValue = input.readEnum();
    1117 
    1118  useRelocatePair_ = rawValue;
    1119  break;
    1120  }
    1121  case 24: {
    1122  int rawValue = input.readEnum();
    1123 
    1124  useRelocateNeighbors_ = rawValue;
    1125  break;
    1126  }
    1127  case 32: {
    1128  int rawValue = input.readEnum();
    1129 
    1130  useExchange_ = rawValue;
    1131  break;
    1132  }
    1133  case 40: {
    1134  int rawValue = input.readEnum();
    1135 
    1136  useCross_ = rawValue;
    1137  break;
    1138  }
    1139  case 48: {
    1140  int rawValue = input.readEnum();
    1141 
    1142  useCrossExchange_ = rawValue;
    1143  break;
    1144  }
    1145  case 56: {
    1146  int rawValue = input.readEnum();
    1147 
    1148  useTwoOpt_ = rawValue;
    1149  break;
    1150  }
    1151  case 64: {
    1152  int rawValue = input.readEnum();
    1153 
    1154  useOrOpt_ = rawValue;
    1155  break;
    1156  }
    1157  case 72: {
    1158  int rawValue = input.readEnum();
    1159 
    1160  useLinKernighan_ = rawValue;
    1161  break;
    1162  }
    1163  case 80: {
    1164  int rawValue = input.readEnum();
    1165 
    1166  useTspOpt_ = rawValue;
    1167  break;
    1168  }
    1169  case 88: {
    1170  int rawValue = input.readEnum();
    1171 
    1172  useMakeActive_ = rawValue;
    1173  break;
    1174  }
    1175  case 96: {
    1176  int rawValue = input.readEnum();
    1177 
    1178  useMakeInactive_ = rawValue;
    1179  break;
    1180  }
    1181  case 104: {
    1182  int rawValue = input.readEnum();
    1183 
    1184  useMakeChainInactive_ = rawValue;
    1185  break;
    1186  }
    1187  case 112: {
    1188  int rawValue = input.readEnum();
    1189 
    1190  useSwapActive_ = rawValue;
    1191  break;
    1192  }
    1193  case 120: {
    1194  int rawValue = input.readEnum();
    1195 
    1196  useExtendedSwapActive_ = rawValue;
    1197  break;
    1198  }
    1199  case 128: {
    1200  int rawValue = input.readEnum();
    1201 
    1202  usePathLns_ = rawValue;
    1203  break;
    1204  }
    1205  case 136: {
    1206  int rawValue = input.readEnum();
    1207 
    1208  useFullPathLns_ = rawValue;
    1209  break;
    1210  }
    1211  case 144: {
    1212  int rawValue = input.readEnum();
    1213 
    1214  useTspLns_ = rawValue;
    1215  break;
    1216  }
    1217  case 152: {
    1218  int rawValue = input.readEnum();
    1219 
    1220  useInactiveLns_ = rawValue;
    1221  break;
    1222  }
    1223  case 160: {
    1224  int rawValue = input.readEnum();
    1225 
    1226  useNodePairSwapActive_ = rawValue;
    1227  break;
    1228  }
    1229  case 168: {
    1230  int rawValue = input.readEnum();
    1231 
    1232  useRelocateAndMakeActive_ = rawValue;
    1233  break;
    1234  }
    1235  case 176: {
    1236  int rawValue = input.readEnum();
    1237 
    1238  useExchangePair_ = rawValue;
    1239  break;
    1240  }
    1241  case 184: {
    1242  int rawValue = input.readEnum();
    1243 
    1244  useRelocateExpensiveChain_ = rawValue;
    1245  break;
    1246  }
    1247  case 192: {
    1248  int rawValue = input.readEnum();
    1249 
    1250  useLightRelocatePair_ = rawValue;
    1251  break;
    1252  }
    1253  case 200: {
    1254  int rawValue = input.readEnum();
    1255 
    1256  useRelocateSubtrip_ = rawValue;
    1257  break;
    1258  }
    1259  case 208: {
    1260  int rawValue = input.readEnum();
    1261 
    1262  useExchangeSubtrip_ = rawValue;
    1263  break;
    1264  }
    1265  default: {
    1266  if (!parseUnknownField(
    1267  input, unknownFields, extensionRegistry, tag)) {
    1268  done = true;
    1269  }
    1270  break;
    1271  }
    1272  }
    1273  }
    1274  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    1275  throw e.setUnfinishedMessage(this);
    1276  } catch (java.io.IOException e) {
    1277  throw new com.google.protobuf.InvalidProtocolBufferException(
    1278  e).setUnfinishedMessage(this);
    1279  } finally {
    1280  this.unknownFields = unknownFields.build();
    1281  makeExtensionsImmutable();
    1282  }
    1283  }
    1284  public static final com.google.protobuf.Descriptors.Descriptor
    1286  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    1287  }
    1288 
    1289  @java.lang.Override
    1290  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    1292  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable
    1293  .ensureFieldAccessorsInitialized(
    1295  }
    1296 
    1297  public static final int USE_RELOCATE_FIELD_NUMBER = 1;
    1298  private int useRelocate_;
    1314  public int getUseRelocateValue() {
    1315  return useRelocate_;
    1316  }
    1333  @SuppressWarnings("deprecation")
    1335  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1336  }
    1337 
    1338  public static final int USE_RELOCATE_PAIR_FIELD_NUMBER = 2;
    1339  private int useRelocatePair_;
    1356  return useRelocatePair_;
    1357  }
    1374  @SuppressWarnings("deprecation")
    1376  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1377  }
    1378 
    1379  public static final int USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER = 24;
    1380  private int useLightRelocatePair_;
    1395  return useLightRelocatePair_;
    1396  }
    1411  @SuppressWarnings("deprecation")
    1413  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1414  }
    1415 
    1416  public static final int USE_RELOCATE_NEIGHBORS_FIELD_NUMBER = 3;
    1417  private int useRelocateNeighbors_;
    1447  return useRelocateNeighbors_;
    1448  }
    1478  @SuppressWarnings("deprecation")
    1480  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1481  }
    1482 
    1483  public static final int USE_RELOCATE_SUBTRIP_FIELD_NUMBER = 25;
    1484  private int useRelocateSubtrip_;
    1504  return useRelocateSubtrip_;
    1505  }
    1525  @SuppressWarnings("deprecation")
    1527  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1528  }
    1529 
    1530  public static final int USE_EXCHANGE_FIELD_NUMBER = 4;
    1531  private int useExchange_;
    1545  public int getUseExchangeValue() {
    1546  return useExchange_;
    1547  }
    1562  @SuppressWarnings("deprecation")
    1564  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1565  }
    1566 
    1567  public static final int USE_EXCHANGE_PAIR_FIELD_NUMBER = 22;
    1568  private int useExchangePair_;
    1583  return useExchangePair_;
    1584  }
    1599  @SuppressWarnings("deprecation")
    1601  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1602  }
    1603 
    1604  public static final int USE_EXCHANGE_SUBTRIP_FIELD_NUMBER = 26;
    1605  private int useExchangeSubtrip_;
    1615  return useExchangeSubtrip_;
    1616  }
    1626  @SuppressWarnings("deprecation")
    1628  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1629  }
    1630 
    1631  public static final int USE_CROSS_FIELD_NUMBER = 5;
    1632  private int useCross_;
    1648  public int getUseCrossValue() {
    1649  return useCross_;
    1650  }
    1667  @SuppressWarnings("deprecation")
    1669  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1670  }
    1671 
    1672  public static final int USE_CROSS_EXCHANGE_FIELD_NUMBER = 6;
    1673  private int useCrossExchange_;
    1682  return useCrossExchange_;
    1683  }
    1692  @SuppressWarnings("deprecation")
    1694  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1695  }
    1696 
    1697  public static final int USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER = 23;
    1698  private int useRelocateExpensiveChain_;
    1716  return useRelocateExpensiveChain_;
    1717  }
    1735  @SuppressWarnings("deprecation")
    1736  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateExpensiveChain_);
    1737  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1738  }
    1739 
    1740  public static final int USE_TWO_OPT_FIELD_NUMBER = 7;
    1741  private int useTwoOpt_;
    1758  public int getUseTwoOptValue() {
    1759  return useTwoOpt_;
    1760  }
    1778  @SuppressWarnings("deprecation")
    1780  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1781  }
    1782 
    1783  public static final int USE_OR_OPT_FIELD_NUMBER = 8;
    1784  private int useOrOpt_;
    1802  public int getUseOrOptValue() {
    1803  return useOrOpt_;
    1804  }
    1823  @SuppressWarnings("deprecation")
    1825  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1826  }
    1827 
    1828  public static final int USE_LIN_KERNIGHAN_FIELD_NUMBER = 9;
    1829  private int useLinKernighan_;
    1841  return useLinKernighan_;
    1842  }
    1854  @SuppressWarnings("deprecation")
    1856  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1857  }
    1858 
    1859  public static final int USE_TSP_OPT_FIELD_NUMBER = 10;
    1860  private int useTspOpt_;
    1873  public int getUseTspOptValue() {
    1874  return useTspOpt_;
    1875  }
    1889  @SuppressWarnings("deprecation")
    1891  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1892  }
    1893 
    1894  public static final int USE_MAKE_ACTIVE_FIELD_NUMBER = 11;
    1895  private int useMakeActive_;
    1909  public int getUseMakeActiveValue() {
    1910  return useMakeActive_;
    1911  }
    1926  @SuppressWarnings("deprecation")
    1928  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1929  }
    1930 
    1931  public static final int USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER = 21;
    1932  private int useRelocateAndMakeActive_;
    1950  return useRelocateAndMakeActive_;
    1951  }
    1969  @SuppressWarnings("deprecation")
    1970  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateAndMakeActive_);
    1971  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1972  }
    1973 
    1974  public static final int USE_MAKE_INACTIVE_FIELD_NUMBER = 12;
    1975  private int useMakeInactive_;
    1988  return useMakeInactive_;
    1989  }
    2002  @SuppressWarnings("deprecation")
    2004  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2005  }
    2006 
    2007  public static final int USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER = 13;
    2008  private int useMakeChainInactive_;
    2022  return useMakeChainInactive_;
    2023  }
    2037  @SuppressWarnings("deprecation")
    2039  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2040  }
    2041 
    2042  public static final int USE_SWAP_ACTIVE_FIELD_NUMBER = 14;
    2043  private int useSwapActive_;
    2055  public int getUseSwapActiveValue() {
    2056  return useSwapActive_;
    2057  }
    2070  @SuppressWarnings("deprecation")
    2072  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2073  }
    2074 
    2075  public static final int USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER = 15;
    2076  private int useExtendedSwapActive_;
    2094  return useExtendedSwapActive_;
    2095  }
    2113  @SuppressWarnings("deprecation")
    2114  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExtendedSwapActive_);
    2115  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2116  }
    2117 
    2118  public static final int USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER = 20;
    2119  private int useNodePairSwapActive_;
    2138  return useNodePairSwapActive_;
    2139  }
    2158  @SuppressWarnings("deprecation")
    2159  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useNodePairSwapActive_);
    2160  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2161  }
    2162 
    2163  public static final int USE_PATH_LNS_FIELD_NUMBER = 16;
    2164  private int usePathLns_;
    2179  public int getUsePathLnsValue() {
    2180  return usePathLns_;
    2181  }
    2197  @SuppressWarnings("deprecation")
    2199  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2200  }
    2201 
    2202  public static final int USE_FULL_PATH_LNS_FIELD_NUMBER = 17;
    2203  private int useFullPathLns_;
    2211  public int getUseFullPathLnsValue() {
    2212  return useFullPathLns_;
    2213  }
    2222  @SuppressWarnings("deprecation")
    2224  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2225  }
    2226 
    2227  public static final int USE_TSP_LNS_FIELD_NUMBER = 18;
    2228  private int useTspLns_;
    2241  public int getUseTspLnsValue() {
    2242  return useTspLns_;
    2243  }
    2257  @SuppressWarnings("deprecation")
    2259  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2260  }
    2261 
    2262  public static final int USE_INACTIVE_LNS_FIELD_NUMBER = 19;
    2263  private int useInactiveLns_;
    2273  public int getUseInactiveLnsValue() {
    2274  return useInactiveLns_;
    2275  }
    2286  @SuppressWarnings("deprecation")
    2288  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2289  }
    2290 
    2291  private byte memoizedIsInitialized = -1;
    2292  @java.lang.Override
    2293  public final boolean isInitialized() {
    2294  byte isInitialized = memoizedIsInitialized;
    2295  if (isInitialized == 1) return true;
    2296  if (isInitialized == 0) return false;
    2297 
    2298  memoizedIsInitialized = 1;
    2299  return true;
    2300  }
    2301 
    2302  @java.lang.Override
    2303  public void writeTo(com.google.protobuf.CodedOutputStream output)
    2304  throws java.io.IOException {
    2305  if (useRelocate_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2306  output.writeEnum(1, useRelocate_);
    2307  }
    2308  if (useRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2309  output.writeEnum(2, useRelocatePair_);
    2310  }
    2311  if (useRelocateNeighbors_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2312  output.writeEnum(3, useRelocateNeighbors_);
    2313  }
    2314  if (useExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2315  output.writeEnum(4, useExchange_);
    2316  }
    2317  if (useCross_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2318  output.writeEnum(5, useCross_);
    2319  }
    2320  if (useCrossExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2321  output.writeEnum(6, useCrossExchange_);
    2322  }
    2323  if (useTwoOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2324  output.writeEnum(7, useTwoOpt_);
    2325  }
    2326  if (useOrOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2327  output.writeEnum(8, useOrOpt_);
    2328  }
    2329  if (useLinKernighan_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2330  output.writeEnum(9, useLinKernighan_);
    2331  }
    2332  if (useTspOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2333  output.writeEnum(10, useTspOpt_);
    2334  }
    2335  if (useMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2336  output.writeEnum(11, useMakeActive_);
    2337  }
    2338  if (useMakeInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2339  output.writeEnum(12, useMakeInactive_);
    2340  }
    2341  if (useMakeChainInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2342  output.writeEnum(13, useMakeChainInactive_);
    2343  }
    2344  if (useSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2345  output.writeEnum(14, useSwapActive_);
    2346  }
    2347  if (useExtendedSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2348  output.writeEnum(15, useExtendedSwapActive_);
    2349  }
    2350  if (usePathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2351  output.writeEnum(16, usePathLns_);
    2352  }
    2353  if (useFullPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2354  output.writeEnum(17, useFullPathLns_);
    2355  }
    2356  if (useTspLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2357  output.writeEnum(18, useTspLns_);
    2358  }
    2359  if (useInactiveLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2360  output.writeEnum(19, useInactiveLns_);
    2361  }
    2362  if (useNodePairSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2363  output.writeEnum(20, useNodePairSwapActive_);
    2364  }
    2365  if (useRelocateAndMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2366  output.writeEnum(21, useRelocateAndMakeActive_);
    2367  }
    2368  if (useExchangePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2369  output.writeEnum(22, useExchangePair_);
    2370  }
    2371  if (useRelocateExpensiveChain_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2372  output.writeEnum(23, useRelocateExpensiveChain_);
    2373  }
    2374  if (useLightRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2375  output.writeEnum(24, useLightRelocatePair_);
    2376  }
    2377  if (useRelocateSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2378  output.writeEnum(25, useRelocateSubtrip_);
    2379  }
    2380  if (useExchangeSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2381  output.writeEnum(26, useExchangeSubtrip_);
    2382  }
    2383  unknownFields.writeTo(output);
    2384  }
    2385 
    2386  @java.lang.Override
    2387  public int getSerializedSize() {
    2388  int size = memoizedSize;
    2389  if (size != -1) return size;
    2390 
    2391  size = 0;
    2392  if (useRelocate_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2393  size += com.google.protobuf.CodedOutputStream
    2394  .computeEnumSize(1, useRelocate_);
    2395  }
    2396  if (useRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2397  size += com.google.protobuf.CodedOutputStream
    2398  .computeEnumSize(2, useRelocatePair_);
    2399  }
    2400  if (useRelocateNeighbors_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2401  size += com.google.protobuf.CodedOutputStream
    2402  .computeEnumSize(3, useRelocateNeighbors_);
    2403  }
    2404  if (useExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2405  size += com.google.protobuf.CodedOutputStream
    2406  .computeEnumSize(4, useExchange_);
    2407  }
    2408  if (useCross_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2409  size += com.google.protobuf.CodedOutputStream
    2410  .computeEnumSize(5, useCross_);
    2411  }
    2412  if (useCrossExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2413  size += com.google.protobuf.CodedOutputStream
    2414  .computeEnumSize(6, useCrossExchange_);
    2415  }
    2416  if (useTwoOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2417  size += com.google.protobuf.CodedOutputStream
    2418  .computeEnumSize(7, useTwoOpt_);
    2419  }
    2420  if (useOrOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2421  size += com.google.protobuf.CodedOutputStream
    2422  .computeEnumSize(8, useOrOpt_);
    2423  }
    2424  if (useLinKernighan_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2425  size += com.google.protobuf.CodedOutputStream
    2426  .computeEnumSize(9, useLinKernighan_);
    2427  }
    2428  if (useTspOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2429  size += com.google.protobuf.CodedOutputStream
    2430  .computeEnumSize(10, useTspOpt_);
    2431  }
    2432  if (useMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2433  size += com.google.protobuf.CodedOutputStream
    2434  .computeEnumSize(11, useMakeActive_);
    2435  }
    2436  if (useMakeInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2437  size += com.google.protobuf.CodedOutputStream
    2438  .computeEnumSize(12, useMakeInactive_);
    2439  }
    2440  if (useMakeChainInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2441  size += com.google.protobuf.CodedOutputStream
    2442  .computeEnumSize(13, useMakeChainInactive_);
    2443  }
    2444  if (useSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2445  size += com.google.protobuf.CodedOutputStream
    2446  .computeEnumSize(14, useSwapActive_);
    2447  }
    2448  if (useExtendedSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2449  size += com.google.protobuf.CodedOutputStream
    2450  .computeEnumSize(15, useExtendedSwapActive_);
    2451  }
    2452  if (usePathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2453  size += com.google.protobuf.CodedOutputStream
    2454  .computeEnumSize(16, usePathLns_);
    2455  }
    2456  if (useFullPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2457  size += com.google.protobuf.CodedOutputStream
    2458  .computeEnumSize(17, useFullPathLns_);
    2459  }
    2460  if (useTspLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2461  size += com.google.protobuf.CodedOutputStream
    2462  .computeEnumSize(18, useTspLns_);
    2463  }
    2464  if (useInactiveLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2465  size += com.google.protobuf.CodedOutputStream
    2466  .computeEnumSize(19, useInactiveLns_);
    2467  }
    2468  if (useNodePairSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2469  size += com.google.protobuf.CodedOutputStream
    2470  .computeEnumSize(20, useNodePairSwapActive_);
    2471  }
    2472  if (useRelocateAndMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2473  size += com.google.protobuf.CodedOutputStream
    2474  .computeEnumSize(21, useRelocateAndMakeActive_);
    2475  }
    2476  if (useExchangePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2477  size += com.google.protobuf.CodedOutputStream
    2478  .computeEnumSize(22, useExchangePair_);
    2479  }
    2480  if (useRelocateExpensiveChain_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2481  size += com.google.protobuf.CodedOutputStream
    2482  .computeEnumSize(23, useRelocateExpensiveChain_);
    2483  }
    2484  if (useLightRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2485  size += com.google.protobuf.CodedOutputStream
    2486  .computeEnumSize(24, useLightRelocatePair_);
    2487  }
    2488  if (useRelocateSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2489  size += com.google.protobuf.CodedOutputStream
    2490  .computeEnumSize(25, useRelocateSubtrip_);
    2491  }
    2492  if (useExchangeSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2493  size += com.google.protobuf.CodedOutputStream
    2494  .computeEnumSize(26, useExchangeSubtrip_);
    2495  }
    2496  size += unknownFields.getSerializedSize();
    2497  memoizedSize = size;
    2498  return size;
    2499  }
    2500 
    2501  @java.lang.Override
    2502  public boolean equals(final java.lang.Object obj) {
    2503  if (obj == this) {
    2504  return true;
    2505  }
    2507  return super.equals(obj);
    2508  }
    2510 
    2511  if (useRelocate_ != other.useRelocate_) return false;
    2512  if (useRelocatePair_ != other.useRelocatePair_) return false;
    2513  if (useLightRelocatePair_ != other.useLightRelocatePair_) return false;
    2514  if (useRelocateNeighbors_ != other.useRelocateNeighbors_) return false;
    2515  if (useRelocateSubtrip_ != other.useRelocateSubtrip_) return false;
    2516  if (useExchange_ != other.useExchange_) return false;
    2517  if (useExchangePair_ != other.useExchangePair_) return false;
    2518  if (useExchangeSubtrip_ != other.useExchangeSubtrip_) return false;
    2519  if (useCross_ != other.useCross_) return false;
    2520  if (useCrossExchange_ != other.useCrossExchange_) return false;
    2521  if (useRelocateExpensiveChain_ != other.useRelocateExpensiveChain_) return false;
    2522  if (useTwoOpt_ != other.useTwoOpt_) return false;
    2523  if (useOrOpt_ != other.useOrOpt_) return false;
    2524  if (useLinKernighan_ != other.useLinKernighan_) return false;
    2525  if (useTspOpt_ != other.useTspOpt_) return false;
    2526  if (useMakeActive_ != other.useMakeActive_) return false;
    2527  if (useRelocateAndMakeActive_ != other.useRelocateAndMakeActive_) return false;
    2528  if (useMakeInactive_ != other.useMakeInactive_) return false;
    2529  if (useMakeChainInactive_ != other.useMakeChainInactive_) return false;
    2530  if (useSwapActive_ != other.useSwapActive_) return false;
    2531  if (useExtendedSwapActive_ != other.useExtendedSwapActive_) return false;
    2532  if (useNodePairSwapActive_ != other.useNodePairSwapActive_) return false;
    2533  if (usePathLns_ != other.usePathLns_) return false;
    2534  if (useFullPathLns_ != other.useFullPathLns_) return false;
    2535  if (useTspLns_ != other.useTspLns_) return false;
    2536  if (useInactiveLns_ != other.useInactiveLns_) return false;
    2537  if (!unknownFields.equals(other.unknownFields)) return false;
    2538  return true;
    2539  }
    2540 
    2541  @java.lang.Override
    2542  public int hashCode() {
    2543  if (memoizedHashCode != 0) {
    2544  return memoizedHashCode;
    2545  }
    2546  int hash = 41;
    2547  hash = (19 * hash) + getDescriptor().hashCode();
    2548  hash = (37 * hash) + USE_RELOCATE_FIELD_NUMBER;
    2549  hash = (53 * hash) + useRelocate_;
    2550  hash = (37 * hash) + USE_RELOCATE_PAIR_FIELD_NUMBER;
    2551  hash = (53 * hash) + useRelocatePair_;
    2552  hash = (37 * hash) + USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER;
    2553  hash = (53 * hash) + useLightRelocatePair_;
    2554  hash = (37 * hash) + USE_RELOCATE_NEIGHBORS_FIELD_NUMBER;
    2555  hash = (53 * hash) + useRelocateNeighbors_;
    2556  hash = (37 * hash) + USE_RELOCATE_SUBTRIP_FIELD_NUMBER;
    2557  hash = (53 * hash) + useRelocateSubtrip_;
    2558  hash = (37 * hash) + USE_EXCHANGE_FIELD_NUMBER;
    2559  hash = (53 * hash) + useExchange_;
    2560  hash = (37 * hash) + USE_EXCHANGE_PAIR_FIELD_NUMBER;
    2561  hash = (53 * hash) + useExchangePair_;
    2562  hash = (37 * hash) + USE_EXCHANGE_SUBTRIP_FIELD_NUMBER;
    2563  hash = (53 * hash) + useExchangeSubtrip_;
    2564  hash = (37 * hash) + USE_CROSS_FIELD_NUMBER;
    2565  hash = (53 * hash) + useCross_;
    2566  hash = (37 * hash) + USE_CROSS_EXCHANGE_FIELD_NUMBER;
    2567  hash = (53 * hash) + useCrossExchange_;
    2568  hash = (37 * hash) + USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER;
    2569  hash = (53 * hash) + useRelocateExpensiveChain_;
    2570  hash = (37 * hash) + USE_TWO_OPT_FIELD_NUMBER;
    2571  hash = (53 * hash) + useTwoOpt_;
    2572  hash = (37 * hash) + USE_OR_OPT_FIELD_NUMBER;
    2573  hash = (53 * hash) + useOrOpt_;
    2574  hash = (37 * hash) + USE_LIN_KERNIGHAN_FIELD_NUMBER;
    2575  hash = (53 * hash) + useLinKernighan_;
    2576  hash = (37 * hash) + USE_TSP_OPT_FIELD_NUMBER;
    2577  hash = (53 * hash) + useTspOpt_;
    2578  hash = (37 * hash) + USE_MAKE_ACTIVE_FIELD_NUMBER;
    2579  hash = (53 * hash) + useMakeActive_;
    2580  hash = (37 * hash) + USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER;
    2581  hash = (53 * hash) + useRelocateAndMakeActive_;
    2582  hash = (37 * hash) + USE_MAKE_INACTIVE_FIELD_NUMBER;
    2583  hash = (53 * hash) + useMakeInactive_;
    2584  hash = (37 * hash) + USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER;
    2585  hash = (53 * hash) + useMakeChainInactive_;
    2586  hash = (37 * hash) + USE_SWAP_ACTIVE_FIELD_NUMBER;
    2587  hash = (53 * hash) + useSwapActive_;
    2588  hash = (37 * hash) + USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER;
    2589  hash = (53 * hash) + useExtendedSwapActive_;
    2590  hash = (37 * hash) + USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER;
    2591  hash = (53 * hash) + useNodePairSwapActive_;
    2592  hash = (37 * hash) + USE_PATH_LNS_FIELD_NUMBER;
    2593  hash = (53 * hash) + usePathLns_;
    2594  hash = (37 * hash) + USE_FULL_PATH_LNS_FIELD_NUMBER;
    2595  hash = (53 * hash) + useFullPathLns_;
    2596  hash = (37 * hash) + USE_TSP_LNS_FIELD_NUMBER;
    2597  hash = (53 * hash) + useTspLns_;
    2598  hash = (37 * hash) + USE_INACTIVE_LNS_FIELD_NUMBER;
    2599  hash = (53 * hash) + useInactiveLns_;
    2600  hash = (29 * hash) + unknownFields.hashCode();
    2601  memoizedHashCode = hash;
    2602  return hash;
    2603  }
    2604 
    2606  java.nio.ByteBuffer data)
    2607  throws com.google.protobuf.InvalidProtocolBufferException {
    2608  return PARSER.parseFrom(data);
    2609  }
    2611  java.nio.ByteBuffer data,
    2612  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2613  throws com.google.protobuf.InvalidProtocolBufferException {
    2614  return PARSER.parseFrom(data, extensionRegistry);
    2615  }
    2617  com.google.protobuf.ByteString data)
    2618  throws com.google.protobuf.InvalidProtocolBufferException {
    2619  return PARSER.parseFrom(data);
    2620  }
    2622  com.google.protobuf.ByteString data,
    2623  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2624  throws com.google.protobuf.InvalidProtocolBufferException {
    2625  return PARSER.parseFrom(data, extensionRegistry);
    2626  }
    2628  throws com.google.protobuf.InvalidProtocolBufferException {
    2629  return PARSER.parseFrom(data);
    2630  }
    2632  byte[] data,
    2633  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2634  throws com.google.protobuf.InvalidProtocolBufferException {
    2635  return PARSER.parseFrom(data, extensionRegistry);
    2636  }
    2638  throws java.io.IOException {
    2639  return com.google.protobuf.GeneratedMessageV3
    2640  .parseWithIOException(PARSER, input);
    2641  }
    2643  java.io.InputStream input,
    2644  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2645  throws java.io.IOException {
    2646  return com.google.protobuf.GeneratedMessageV3
    2647  .parseWithIOException(PARSER, input, extensionRegistry);
    2648  }
    2650  throws java.io.IOException {
    2651  return com.google.protobuf.GeneratedMessageV3
    2652  .parseDelimitedWithIOException(PARSER, input);
    2653  }
    2655  java.io.InputStream input,
    2656  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2657  throws java.io.IOException {
    2658  return com.google.protobuf.GeneratedMessageV3
    2659  .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    2660  }
    2662  com.google.protobuf.CodedInputStream input)
    2663  throws java.io.IOException {
    2664  return com.google.protobuf.GeneratedMessageV3
    2665  .parseWithIOException(PARSER, input);
    2666  }
    2668  com.google.protobuf.CodedInputStream input,
    2669  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2670  throws java.io.IOException {
    2671  return com.google.protobuf.GeneratedMessageV3
    2672  .parseWithIOException(PARSER, input, extensionRegistry);
    2673  }
    2674 
    2675  @java.lang.Override
    2676  public Builder newBuilderForType() { return newBuilder(); }
    2677  public static Builder newBuilder() {
    2678  return DEFAULT_INSTANCE.toBuilder();
    2679  }
    2681  return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    2682  }
    2683  @java.lang.Override
    2684  public Builder toBuilder() {
    2685  return this == DEFAULT_INSTANCE
    2686  ? new Builder() : new Builder().mergeFrom(this);
    2687  }
    2688 
    2689  @java.lang.Override
    2691  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    2692  Builder builder = new Builder(parent);
    2693  return builder;
    2694  }
    2703  public static final class Builder extends
    2704  com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
    2705  // @@protoc_insertion_point(builder_implements:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    2707  public static final com.google.protobuf.Descriptors.Descriptor
    2709  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    2710  }
    2711 
    2712  @java.lang.Override
    2713  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    2715  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable
    2716  .ensureFieldAccessorsInitialized(
    2718  }
    2719 
    2720  // Construct using com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.newBuilder()
    2721  private Builder() {
    2722  maybeForceBuilderInitialization();
    2723  }
    2724 
    2725  private Builder(
    2726  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    2727  super(parent);
    2728  maybeForceBuilderInitialization();
    2729  }
    2730  private void maybeForceBuilderInitialization() {
    2731  if (com.google.protobuf.GeneratedMessageV3
    2732  .alwaysUseFieldBuilders) {
    2733  }
    2734  }
    2735  @java.lang.Override
    2736  public Builder clear() {
    2737  super.clear();
    2738  useRelocate_ = 0;
    2739 
    2740  useRelocatePair_ = 0;
    2741 
    2742  useLightRelocatePair_ = 0;
    2743 
    2744  useRelocateNeighbors_ = 0;
    2745 
    2746  useRelocateSubtrip_ = 0;
    2747 
    2748  useExchange_ = 0;
    2749 
    2750  useExchangePair_ = 0;
    2751 
    2752  useExchangeSubtrip_ = 0;
    2753 
    2754  useCross_ = 0;
    2755 
    2756  useCrossExchange_ = 0;
    2757 
    2758  useRelocateExpensiveChain_ = 0;
    2759 
    2760  useTwoOpt_ = 0;
    2761 
    2762  useOrOpt_ = 0;
    2763 
    2764  useLinKernighan_ = 0;
    2765 
    2766  useTspOpt_ = 0;
    2767 
    2768  useMakeActive_ = 0;
    2769 
    2770  useRelocateAndMakeActive_ = 0;
    2771 
    2772  useMakeInactive_ = 0;
    2773 
    2774  useMakeChainInactive_ = 0;
    2775 
    2776  useSwapActive_ = 0;
    2777 
    2778  useExtendedSwapActive_ = 0;
    2779 
    2780  useNodePairSwapActive_ = 0;
    2781 
    2782  usePathLns_ = 0;
    2783 
    2784  useFullPathLns_ = 0;
    2785 
    2786  useTspLns_ = 0;
    2787 
    2788  useInactiveLns_ = 0;
    2789 
    2790  return this;
    2791  }
    2792 
    2793  @java.lang.Override
    2794  public com.google.protobuf.Descriptors.Descriptor
    2796  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    2797  }
    2798 
    2799  @java.lang.Override
    2802  }
    2803 
    2804  @java.lang.Override
    2807  if (!result.isInitialized()) {
    2808  throw newUninitializedMessageException(result);
    2809  }
    2810  return result;
    2811  }
    2812 
    2813  @java.lang.Override
    2816  result.useRelocate_ = useRelocate_;
    2817  result.useRelocatePair_ = useRelocatePair_;
    2818  result.useLightRelocatePair_ = useLightRelocatePair_;
    2819  result.useRelocateNeighbors_ = useRelocateNeighbors_;
    2820  result.useRelocateSubtrip_ = useRelocateSubtrip_;
    2821  result.useExchange_ = useExchange_;
    2822  result.useExchangePair_ = useExchangePair_;
    2823  result.useExchangeSubtrip_ = useExchangeSubtrip_;
    2824  result.useCross_ = useCross_;
    2825  result.useCrossExchange_ = useCrossExchange_;
    2826  result.useRelocateExpensiveChain_ = useRelocateExpensiveChain_;
    2827  result.useTwoOpt_ = useTwoOpt_;
    2828  result.useOrOpt_ = useOrOpt_;
    2829  result.useLinKernighan_ = useLinKernighan_;
    2830  result.useTspOpt_ = useTspOpt_;
    2831  result.useMakeActive_ = useMakeActive_;
    2832  result.useRelocateAndMakeActive_ = useRelocateAndMakeActive_;
    2833  result.useMakeInactive_ = useMakeInactive_;
    2834  result.useMakeChainInactive_ = useMakeChainInactive_;
    2835  result.useSwapActive_ = useSwapActive_;
    2836  result.useExtendedSwapActive_ = useExtendedSwapActive_;
    2837  result.useNodePairSwapActive_ = useNodePairSwapActive_;
    2838  result.usePathLns_ = usePathLns_;
    2839  result.useFullPathLns_ = useFullPathLns_;
    2840  result.useTspLns_ = useTspLns_;
    2841  result.useInactiveLns_ = useInactiveLns_;
    2842  onBuilt();
    2843  return result;
    2844  }
    2845 
    2846  @java.lang.Override
    2847  public Builder clone() {
    2848  return super.clone();
    2849  }
    2850  @java.lang.Override
    2852  com.google.protobuf.Descriptors.FieldDescriptor field,
    2853  java.lang.Object value) {
    2854  return super.setField(field, value);
    2855  }
    2856  @java.lang.Override
    2858  com.google.protobuf.Descriptors.FieldDescriptor field) {
    2859  return super.clearField(field);
    2860  }
    2861  @java.lang.Override
    2863  com.google.protobuf.Descriptors.OneofDescriptor oneof) {
    2864  return super.clearOneof(oneof);
    2865  }
    2866  @java.lang.Override
    2868  com.google.protobuf.Descriptors.FieldDescriptor field,
    2869  int index, java.lang.Object value) {
    2870  return super.setRepeatedField(field, index, value);
    2871  }
    2872  @java.lang.Override
    2874  com.google.protobuf.Descriptors.FieldDescriptor field,
    2875  java.lang.Object value) {
    2876  return super.addRepeatedField(field, value);
    2877  }
    2878  @java.lang.Override
    2879  public Builder mergeFrom(com.google.protobuf.Message other) {
    2882  } else {
    2883  super.mergeFrom(other);
    2884  return this;
    2885  }
    2886  }
    2887 
    2890  if (other.useRelocate_ != 0) {
    2891  setUseRelocateValue(other.getUseRelocateValue());
    2892  }
    2893  if (other.useRelocatePair_ != 0) {
    2894  setUseRelocatePairValue(other.getUseRelocatePairValue());
    2895  }
    2896  if (other.useLightRelocatePair_ != 0) {
    2897  setUseLightRelocatePairValue(other.getUseLightRelocatePairValue());
    2898  }
    2899  if (other.useRelocateNeighbors_ != 0) {
    2900  setUseRelocateNeighborsValue(other.getUseRelocateNeighborsValue());
    2901  }
    2902  if (other.useRelocateSubtrip_ != 0) {
    2903  setUseRelocateSubtripValue(other.getUseRelocateSubtripValue());
    2904  }
    2905  if (other.useExchange_ != 0) {
    2906  setUseExchangeValue(other.getUseExchangeValue());
    2907  }
    2908  if (other.useExchangePair_ != 0) {
    2909  setUseExchangePairValue(other.getUseExchangePairValue());
    2910  }
    2911  if (other.useExchangeSubtrip_ != 0) {
    2912  setUseExchangeSubtripValue(other.getUseExchangeSubtripValue());
    2913  }
    2914  if (other.useCross_ != 0) {
    2915  setUseCrossValue(other.getUseCrossValue());
    2916  }
    2917  if (other.useCrossExchange_ != 0) {
    2918  setUseCrossExchangeValue(other.getUseCrossExchangeValue());
    2919  }
    2920  if (other.useRelocateExpensiveChain_ != 0) {
    2921  setUseRelocateExpensiveChainValue(other.getUseRelocateExpensiveChainValue());
    2922  }
    2923  if (other.useTwoOpt_ != 0) {
    2924  setUseTwoOptValue(other.getUseTwoOptValue());
    2925  }
    2926  if (other.useOrOpt_ != 0) {
    2927  setUseOrOptValue(other.getUseOrOptValue());
    2928  }
    2929  if (other.useLinKernighan_ != 0) {
    2930  setUseLinKernighanValue(other.getUseLinKernighanValue());
    2931  }
    2932  if (other.useTspOpt_ != 0) {
    2933  setUseTspOptValue(other.getUseTspOptValue());
    2934  }
    2935  if (other.useMakeActive_ != 0) {
    2936  setUseMakeActiveValue(other.getUseMakeActiveValue());
    2937  }
    2938  if (other.useRelocateAndMakeActive_ != 0) {
    2939  setUseRelocateAndMakeActiveValue(other.getUseRelocateAndMakeActiveValue());
    2940  }
    2941  if (other.useMakeInactive_ != 0) {
    2942  setUseMakeInactiveValue(other.getUseMakeInactiveValue());
    2943  }
    2944  if (other.useMakeChainInactive_ != 0) {
    2945  setUseMakeChainInactiveValue(other.getUseMakeChainInactiveValue());
    2946  }
    2947  if (other.useSwapActive_ != 0) {
    2948  setUseSwapActiveValue(other.getUseSwapActiveValue());
    2949  }
    2950  if (other.useExtendedSwapActive_ != 0) {
    2951  setUseExtendedSwapActiveValue(other.getUseExtendedSwapActiveValue());
    2952  }
    2953  if (other.useNodePairSwapActive_ != 0) {
    2954  setUseNodePairSwapActiveValue(other.getUseNodePairSwapActiveValue());
    2955  }
    2956  if (other.usePathLns_ != 0) {
    2957  setUsePathLnsValue(other.getUsePathLnsValue());
    2958  }
    2959  if (other.useFullPathLns_ != 0) {
    2960  setUseFullPathLnsValue(other.getUseFullPathLnsValue());
    2961  }
    2962  if (other.useTspLns_ != 0) {
    2963  setUseTspLnsValue(other.getUseTspLnsValue());
    2964  }
    2965  if (other.useInactiveLns_ != 0) {
    2966  setUseInactiveLnsValue(other.getUseInactiveLnsValue());
    2967  }
    2968  this.mergeUnknownFields(other.unknownFields);
    2969  onChanged();
    2970  return this;
    2971  }
    2972 
    2973  @java.lang.Override
    2974  public final boolean isInitialized() {
    2975  return true;
    2976  }
    2977 
    2978  @java.lang.Override
    2980  com.google.protobuf.CodedInputStream input,
    2981  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2982  throws java.io.IOException {
    2984  try {
    2985  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
    2986  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    2988  throw e.unwrapIOException();
    2989  } finally {
    2990  if (parsedMessage != null) {
    2991  mergeFrom(parsedMessage);
    2992  }
    2993  }
    2994  return this;
    2995  }
    2996 
    2997  private int useRelocate_ = 0;
    3013  public int getUseRelocateValue() {
    3014  return useRelocate_;
    3015  }
    3031  public Builder setUseRelocateValue(int value) {
    3032  useRelocate_ = value;
    3033  onChanged();
    3034  return this;
    3035  }
    3052  @SuppressWarnings("deprecation")
    3054  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3055  }
    3072  if (value == null) {
    3073  throw new NullPointerException();
    3074  }
    3075 
    3076  useRelocate_ = value.getNumber();
    3077  onChanged();
    3078  return this;
    3079  }
    3096 
    3097  useRelocate_ = 0;
    3098  onChanged();
    3099  return this;
    3100  }
    3101 
    3102  private int useRelocatePair_ = 0;
    3119  return useRelocatePair_;
    3120  }
    3136  public Builder setUseRelocatePairValue(int value) {
    3137  useRelocatePair_ = value;
    3138  onChanged();
    3139  return this;
    3140  }
    3157  @SuppressWarnings("deprecation")
    3159  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3160  }
    3177  if (value == null) {
    3178  throw new NullPointerException();
    3179  }
    3180 
    3181  useRelocatePair_ = value.getNumber();
    3182  onChanged();
    3183  return this;
    3184  }
    3201 
    3202  useRelocatePair_ = 0;
    3203  onChanged();
    3204  return this;
    3205  }
    3206 
    3207  private int useLightRelocatePair_ = 0;
    3222  return useLightRelocatePair_;
    3223  }
    3238  useLightRelocatePair_ = value;
    3239  onChanged();
    3240  return this;
    3241  }
    3256  @SuppressWarnings("deprecation")
    3258  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3259  }
    3274  if (value == null) {
    3275  throw new NullPointerException();
    3276  }
    3277 
    3278  useLightRelocatePair_ = value.getNumber();
    3279  onChanged();
    3280  return this;
    3281  }
    3296 
    3297  useLightRelocatePair_ = 0;
    3298  onChanged();
    3299  return this;
    3300  }
    3301 
    3302  private int useRelocateNeighbors_ = 0;
    3332  return useRelocateNeighbors_;
    3333  }
    3363  useRelocateNeighbors_ = value;
    3364  onChanged();
    3365  return this;
    3366  }
    3396  @SuppressWarnings("deprecation")
    3398  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3399  }
    3429  if (value == null) {
    3430  throw new NullPointerException();
    3431  }
    3432 
    3433  useRelocateNeighbors_ = value.getNumber();
    3434  onChanged();
    3435  return this;
    3436  }
    3466 
    3467  useRelocateNeighbors_ = 0;
    3468  onChanged();
    3469  return this;
    3470  }
    3471 
    3472  private int useRelocateSubtrip_ = 0;
    3492  return useRelocateSubtrip_;
    3493  }
    3513  useRelocateSubtrip_ = value;
    3514  onChanged();
    3515  return this;
    3516  }
    3536  @SuppressWarnings("deprecation")
    3538  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3539  }
    3559  if (value == null) {
    3560  throw new NullPointerException();
    3561  }
    3562 
    3563  useRelocateSubtrip_ = value.getNumber();
    3564  onChanged();
    3565  return this;
    3566  }
    3586 
    3587  useRelocateSubtrip_ = 0;
    3588  onChanged();
    3589  return this;
    3590  }
    3591 
    3592  private int useExchange_ = 0;
    3606  public int getUseExchangeValue() {
    3607  return useExchange_;
    3608  }
    3622  public Builder setUseExchangeValue(int value) {
    3623  useExchange_ = value;
    3624  onChanged();
    3625  return this;
    3626  }
    3641  @SuppressWarnings("deprecation")
    3643  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3644  }
    3659  if (value == null) {
    3660  throw new NullPointerException();
    3661  }
    3662 
    3663  useExchange_ = value.getNumber();
    3664  onChanged();
    3665  return this;
    3666  }
    3681 
    3682  useExchange_ = 0;
    3683  onChanged();
    3684  return this;
    3685  }
    3686 
    3687  private int useExchangePair_ = 0;
    3702  return useExchangePair_;
    3703  }
    3717  public Builder setUseExchangePairValue(int value) {
    3718  useExchangePair_ = value;
    3719  onChanged();
    3720  return this;
    3721  }
    3736  @SuppressWarnings("deprecation")
    3738  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3739  }
    3754  if (value == null) {
    3755  throw new NullPointerException();
    3756  }
    3757 
    3758  useExchangePair_ = value.getNumber();
    3759  onChanged();
    3760  return this;
    3761  }
    3776 
    3777  useExchangePair_ = 0;
    3778  onChanged();
    3779  return this;
    3780  }
    3781 
    3782  private int useExchangeSubtrip_ = 0;
    3792  return useExchangeSubtrip_;
    3793  }
    3803  useExchangeSubtrip_ = value;
    3804  onChanged();
    3805  return this;
    3806  }
    3816  @SuppressWarnings("deprecation")
    3818  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3819  }
    3829  if (value == null) {
    3830  throw new NullPointerException();
    3831  }
    3832 
    3833  useExchangeSubtrip_ = value.getNumber();
    3834  onChanged();
    3835  return this;
    3836  }
    3846 
    3847  useExchangeSubtrip_ = 0;
    3848  onChanged();
    3849  return this;
    3850  }
    3851 
    3852  private int useCross_ = 0;
    3868  public int getUseCrossValue() {
    3869  return useCross_;
    3870  }
    3886  public Builder setUseCrossValue(int value) {
    3887  useCross_ = value;
    3888  onChanged();
    3889  return this;
    3890  }
    3907  @SuppressWarnings("deprecation")
    3909  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3910  }
    3927  if (value == null) {
    3928  throw new NullPointerException();
    3929  }
    3930 
    3931  useCross_ = value.getNumber();
    3932  onChanged();
    3933  return this;
    3934  }
    3951 
    3952  useCross_ = 0;
    3953  onChanged();
    3954  return this;
    3955  }
    3956 
    3957  private int useCrossExchange_ = 0;
    3966  return useCrossExchange_;
    3967  }
    3975  public Builder setUseCrossExchangeValue(int value) {
    3976  useCrossExchange_ = value;
    3977  onChanged();
    3978  return this;
    3979  }
    3988  @SuppressWarnings("deprecation")
    3990  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3991  }
    4000  if (value == null) {
    4001  throw new NullPointerException();
    4002  }
    4003 
    4004  useCrossExchange_ = value.getNumber();
    4005  onChanged();
    4006  return this;
    4007  }
    4016 
    4017  useCrossExchange_ = 0;
    4018  onChanged();
    4019  return this;
    4020  }
    4021 
    4022  private int useRelocateExpensiveChain_ = 0;
    4040  return useRelocateExpensiveChain_;
    4041  }
    4059  useRelocateExpensiveChain_ = value;
    4060  onChanged();
    4061  return this;
    4062  }
    4080  @SuppressWarnings("deprecation")
    4081  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateExpensiveChain_);
    4082  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4083  }
    4101  if (value == null) {
    4102  throw new NullPointerException();
    4103  }
    4104 
    4105  useRelocateExpensiveChain_ = value.getNumber();
    4106  onChanged();
    4107  return this;
    4108  }
    4126 
    4127  useRelocateExpensiveChain_ = 0;
    4128  onChanged();
    4129  return this;
    4130  }
    4131 
    4132  private int useTwoOpt_ = 0;
    4149  public int getUseTwoOptValue() {
    4150  return useTwoOpt_;
    4151  }
    4168  public Builder setUseTwoOptValue(int value) {
    4169  useTwoOpt_ = value;
    4170  onChanged();
    4171  return this;
    4172  }
    4190  @SuppressWarnings("deprecation")
    4192  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4193  }
    4211  if (value == null) {
    4212  throw new NullPointerException();
    4213  }
    4214 
    4215  useTwoOpt_ = value.getNumber();
    4216  onChanged();
    4217  return this;
    4218  }
    4236 
    4237  useTwoOpt_ = 0;
    4238  onChanged();
    4239  return this;
    4240  }
    4241 
    4242  private int useOrOpt_ = 0;
    4260  public int getUseOrOptValue() {
    4261  return useOrOpt_;
    4262  }
    4280  public Builder setUseOrOptValue(int value) {
    4281  useOrOpt_ = value;
    4282  onChanged();
    4283  return this;
    4284  }
    4303  @SuppressWarnings("deprecation")
    4305  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4306  }
    4325  if (value == null) {
    4326  throw new NullPointerException();
    4327  }
    4328 
    4329  useOrOpt_ = value.getNumber();
    4330  onChanged();
    4331  return this;
    4332  }
    4351 
    4352  useOrOpt_ = 0;
    4353  onChanged();
    4354  return this;
    4355  }
    4356 
    4357  private int useLinKernighan_ = 0;
    4369  return useLinKernighan_;
    4370  }
    4381  public Builder setUseLinKernighanValue(int value) {
    4382  useLinKernighan_ = value;
    4383  onChanged();
    4384  return this;
    4385  }
    4397  @SuppressWarnings("deprecation")
    4399  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4400  }
    4412  if (value == null) {
    4413  throw new NullPointerException();
    4414  }
    4415 
    4416  useLinKernighan_ = value.getNumber();
    4417  onChanged();
    4418  return this;
    4419  }
    4431 
    4432  useLinKernighan_ = 0;
    4433  onChanged();
    4434  return this;
    4435  }
    4436 
    4437  private int useTspOpt_ = 0;
    4450  public int getUseTspOptValue() {
    4451  return useTspOpt_;
    4452  }
    4465  public Builder setUseTspOptValue(int value) {
    4466  useTspOpt_ = value;
    4467  onChanged();
    4468  return this;
    4469  }
    4483  @SuppressWarnings("deprecation")
    4485  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4486  }
    4500  if (value == null) {
    4501  throw new NullPointerException();
    4502  }
    4503 
    4504  useTspOpt_ = value.getNumber();
    4505  onChanged();
    4506  return this;
    4507  }
    4521 
    4522  useTspOpt_ = 0;
    4523  onChanged();
    4524  return this;
    4525  }
    4526 
    4527  private int useMakeActive_ = 0;
    4541  public int getUseMakeActiveValue() {
    4542  return useMakeActive_;
    4543  }
    4557  public Builder setUseMakeActiveValue(int value) {
    4558  useMakeActive_ = value;
    4559  onChanged();
    4560  return this;
    4561  }
    4576  @SuppressWarnings("deprecation")
    4578  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4579  }
    4594  if (value == null) {
    4595  throw new NullPointerException();
    4596  }
    4597 
    4598  useMakeActive_ = value.getNumber();
    4599  onChanged();
    4600  return this;
    4601  }
    4616 
    4617  useMakeActive_ = 0;
    4618  onChanged();
    4619  return this;
    4620  }
    4621 
    4622  private int useRelocateAndMakeActive_ = 0;
    4640  return useRelocateAndMakeActive_;
    4641  }
    4659  useRelocateAndMakeActive_ = value;
    4660  onChanged();
    4661  return this;
    4662  }
    4680  @SuppressWarnings("deprecation")
    4681  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateAndMakeActive_);
    4682  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4683  }
    4701  if (value == null) {
    4702  throw new NullPointerException();
    4703  }
    4704 
    4705  useRelocateAndMakeActive_ = value.getNumber();
    4706  onChanged();
    4707  return this;
    4708  }
    4726 
    4727  useRelocateAndMakeActive_ = 0;
    4728  onChanged();
    4729  return this;
    4730  }
    4731 
    4732  private int useMakeInactive_ = 0;
    4745  return useMakeInactive_;
    4746  }
    4758  public Builder setUseMakeInactiveValue(int value) {
    4759  useMakeInactive_ = value;
    4760  onChanged();
    4761  return this;
    4762  }
    4775  @SuppressWarnings("deprecation")
    4777  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4778  }
    4791  if (value == null) {
    4792  throw new NullPointerException();
    4793  }
    4794 
    4795  useMakeInactive_ = value.getNumber();
    4796  onChanged();
    4797  return this;
    4798  }
    4811 
    4812  useMakeInactive_ = 0;
    4813  onChanged();
    4814  return this;
    4815  }
    4816 
    4817  private int useMakeChainInactive_ = 0;
    4831  return useMakeChainInactive_;
    4832  }
    4846  useMakeChainInactive_ = value;
    4847  onChanged();
    4848  return this;
    4849  }
    4863  @SuppressWarnings("deprecation")
    4865  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4866  }
    4880  if (value == null) {
    4881  throw new NullPointerException();
    4882  }
    4883 
    4884  useMakeChainInactive_ = value.getNumber();
    4885  onChanged();
    4886  return this;
    4887  }
    4901 
    4902  useMakeChainInactive_ = 0;
    4903  onChanged();
    4904  return this;
    4905  }
    4906 
    4907  private int useSwapActive_ = 0;
    4919  public int getUseSwapActiveValue() {
    4920  return useSwapActive_;
    4921  }
    4933  public Builder setUseSwapActiveValue(int value) {
    4934  useSwapActive_ = value;
    4935  onChanged();
    4936  return this;
    4937  }
    4950  @SuppressWarnings("deprecation")
    4952  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4953  }
    4966  if (value == null) {
    4967  throw new NullPointerException();
    4968  }
    4969 
    4970  useSwapActive_ = value.getNumber();
    4971  onChanged();
    4972  return this;
    4973  }
    4986 
    4987  useSwapActive_ = 0;
    4988  onChanged();
    4989  return this;
    4990  }
    4991 
    4992  private int useExtendedSwapActive_ = 0;
    5010  return useExtendedSwapActive_;
    5011  }
    5029  useExtendedSwapActive_ = value;
    5030  onChanged();
    5031  return this;
    5032  }
    5050  @SuppressWarnings("deprecation")
    5051  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExtendedSwapActive_);
    5052  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5053  }
    5071  if (value == null) {
    5072  throw new NullPointerException();
    5073  }
    5074 
    5075  useExtendedSwapActive_ = value.getNumber();
    5076  onChanged();
    5077  return this;
    5078  }
    5096 
    5097  useExtendedSwapActive_ = 0;
    5098  onChanged();
    5099  return this;
    5100  }
    5101 
    5102  private int useNodePairSwapActive_ = 0;
    5121  return useNodePairSwapActive_;
    5122  }
    5141  useNodePairSwapActive_ = value;
    5142  onChanged();
    5143  return this;
    5144  }
    5163  @SuppressWarnings("deprecation")
    5164  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useNodePairSwapActive_);
    5165  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5166  }
    5185  if (value == null) {
    5186  throw new NullPointerException();
    5187  }
    5188 
    5189  useNodePairSwapActive_ = value.getNumber();
    5190  onChanged();
    5191  return this;
    5192  }
    5211 
    5212  useNodePairSwapActive_ = 0;
    5213  onChanged();
    5214  return this;
    5215  }
    5216 
    5217  private int usePathLns_ = 0;
    5232  public int getUsePathLnsValue() {
    5233  return usePathLns_;
    5234  }
    5249  public Builder setUsePathLnsValue(int value) {
    5250  usePathLns_ = value;
    5251  onChanged();
    5252  return this;
    5253  }
    5269  @SuppressWarnings("deprecation")
    5271  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5272  }
    5288  if (value == null) {
    5289  throw new NullPointerException();
    5290  }
    5291 
    5292  usePathLns_ = value.getNumber();
    5293  onChanged();
    5294  return this;
    5295  }
    5311 
    5312  usePathLns_ = 0;
    5313  onChanged();
    5314  return this;
    5315  }
    5316 
    5317  private int useFullPathLns_ = 0;
    5325  public int getUseFullPathLnsValue() {
    5326  return useFullPathLns_;
    5327  }
    5335  public Builder setUseFullPathLnsValue(int value) {
    5336  useFullPathLns_ = value;
    5337  onChanged();
    5338  return this;
    5339  }
    5348  @SuppressWarnings("deprecation")
    5350  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5351  }
    5360  if (value == null) {
    5361  throw new NullPointerException();
    5362  }
    5363 
    5364  useFullPathLns_ = value.getNumber();
    5365  onChanged();
    5366  return this;
    5367  }
    5376 
    5377  useFullPathLns_ = 0;
    5378  onChanged();
    5379  return this;
    5380  }
    5381 
    5382  private int useTspLns_ = 0;
    5395  public int getUseTspLnsValue() {
    5396  return useTspLns_;
    5397  }
    5410  public Builder setUseTspLnsValue(int value) {
    5411  useTspLns_ = value;
    5412  onChanged();
    5413  return this;
    5414  }
    5428  @SuppressWarnings("deprecation")
    5430  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5431  }
    5445  if (value == null) {
    5446  throw new NullPointerException();
    5447  }
    5448 
    5449  useTspLns_ = value.getNumber();
    5450  onChanged();
    5451  return this;
    5452  }
    5466 
    5467  useTspLns_ = 0;
    5468  onChanged();
    5469  return this;
    5470  }
    5471 
    5472  private int useInactiveLns_ = 0;
    5482  public int getUseInactiveLnsValue() {
    5483  return useInactiveLns_;
    5484  }
    5494  public Builder setUseInactiveLnsValue(int value) {
    5495  useInactiveLns_ = value;
    5496  onChanged();
    5497  return this;
    5498  }
    5509  @SuppressWarnings("deprecation")
    5511  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5512  }
    5523  if (value == null) {
    5524  throw new NullPointerException();
    5525  }
    5526 
    5527  useInactiveLns_ = value.getNumber();
    5528  onChanged();
    5529  return this;
    5530  }
    5541 
    5542  useInactiveLns_ = 0;
    5543  onChanged();
    5544  return this;
    5545  }
    5546  @java.lang.Override
    5548  final com.google.protobuf.UnknownFieldSet unknownFields) {
    5549  return super.setUnknownFields(unknownFields);
    5550  }
    5551 
    5552  @java.lang.Override
    5554  final com.google.protobuf.UnknownFieldSet unknownFields) {
    5555  return super.mergeUnknownFields(unknownFields);
    5556  }
    5557 
    5558 
    5559  // @@protoc_insertion_point(builder_scope:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    5560  }
    5561 
    5562  // @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    5564  static {
    5566  }
    5567 
    5569  return DEFAULT_INSTANCE;
    5570  }
    5571 
    5572  private static final com.google.protobuf.Parser<LocalSearchNeighborhoodOperators>
    5573  PARSER = new com.google.protobuf.AbstractParser<LocalSearchNeighborhoodOperators>() {
    5574  @java.lang.Override
    5575  public LocalSearchNeighborhoodOperators parsePartialFrom(
    5576  com.google.protobuf.CodedInputStream input,
    5577  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    5578  throws com.google.protobuf.InvalidProtocolBufferException {
    5579  return new LocalSearchNeighborhoodOperators(input, extensionRegistry);
    5580  }
    5581  };
    5582 
    5583  public static com.google.protobuf.Parser<LocalSearchNeighborhoodOperators> parser() {
    5584  return PARSER;
    5585  }
    5586 
    5587  @java.lang.Override
    5589  return PARSER;
    5590  }
    5591 
    5592  @java.lang.Override
    5594  return DEFAULT_INSTANCE;
    5595  }
    5596 
    5597  }
    5598 
    5599  public static final int FIRST_SOLUTION_STRATEGY_FIELD_NUMBER = 1;
    5600  private int firstSolutionStrategy_;
    5609  return firstSolutionStrategy_;
    5610  }
    5619  @SuppressWarnings("deprecation")
    5621  return result == null ? com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNRECOGNIZED : result;
    5622  }
    5623 
    5625  private boolean useUnfilteredFirstSolutionStrategy_;
    5636  return useUnfilteredFirstSolutionStrategy_;
    5637  }
    5638 
    5639  public static final int SAVINGS_NEIGHBORS_RATIO_FIELD_NUMBER = 14;
    5640  private double savingsNeighborsRatio_;
    5650  public double getSavingsNeighborsRatio() {
    5651  return savingsNeighborsRatio_;
    5652  }
    5653 
    5654  public static final int SAVINGS_MAX_MEMORY_USAGE_BYTES_FIELD_NUMBER = 23;
    5655  private double savingsMaxMemoryUsageBytes_;
    5669  return savingsMaxMemoryUsageBytes_;
    5670  }
    5671 
    5672  public static final int SAVINGS_ADD_REVERSE_ARCS_FIELD_NUMBER = 15;
    5673  private boolean savingsAddReverseArcs_;
    5682  public boolean getSavingsAddReverseArcs() {
    5683  return savingsAddReverseArcs_;
    5684  }
    5685 
    5686  public static final int SAVINGS_ARC_COEFFICIENT_FIELD_NUMBER = 18;
    5687  private double savingsArcCoefficient_;
    5699  public double getSavingsArcCoefficient() {
    5700  return savingsArcCoefficient_;
    5701  }
    5702 
    5703  public static final int SAVINGS_PARALLEL_ROUTES_FIELD_NUMBER = 19;
    5704  private boolean savingsParallelRoutes_;
    5712  public boolean getSavingsParallelRoutes() {
    5713  return savingsParallelRoutes_;
    5714  }
    5715 
    5717  private double cheapestInsertionFarthestSeedsRatio_;
    5728  return cheapestInsertionFarthestSeedsRatio_;
    5729  }
    5730 
    5732  private double cheapestInsertionNeighborsRatio_;
    5744  return cheapestInsertionNeighborsRatio_;
    5745  }
    5746 
    5747  public static final int LOCAL_SEARCH_OPERATORS_FIELD_NUMBER = 3;
    5752  public boolean hasLocalSearchOperators() {
    5753  return localSearchOperators_ != null;
    5754  }
    5759  return localSearchOperators_ == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance() : localSearchOperators_;
    5760  }
    5765  return getLocalSearchOperators();
    5766  }
    5767 
    5769  private int relocateExpensiveChainNumArcsToConsider_;
    5784  return relocateExpensiveChainNumArcsToConsider_;
    5785  }
    5786 
    5787  public static final int LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER = 4;
    5788  private int localSearchMetaheuristic_;
    5797  return localSearchMetaheuristic_;
    5798  }
    5807  @SuppressWarnings("deprecation")
    5810  }
    5811 
    5813  private double guidedLocalSearchLambdaCoefficient_;
    5825  return guidedLocalSearchLambdaCoefficient_;
    5826  }
    5827 
    5828  public static final int USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER = 6;
    5829  private boolean useDepthFirstSearch_;
    5839  public boolean getUseDepthFirstSearch() {
    5840  return useDepthFirstSearch_;
    5841  }
    5842 
    5843  public static final int USE_CP_FIELD_NUMBER = 28;
    5844  private int useCp_;
    5854  public int getUseCpValue() {
    5855  return useCp_;
    5856  }
    5867  @SuppressWarnings("deprecation")
    5869  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5870  }
    5871 
    5872  public static final int USE_CP_SAT_FIELD_NUMBER = 27;
    5873  private int useCpSat_;
    5884  public int getUseCpSatValue() {
    5885  return useCpSat_;
    5886  }
    5898  @SuppressWarnings("deprecation")
    5900  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5901  }
    5902 
    5903  public static final int OPTIMIZATION_STEP_FIELD_NUMBER = 7;
    5904  private double optimizationStep_;
    5914  public double getOptimizationStep() {
    5915  return optimizationStep_;
    5916  }
    5917 
    5918  public static final int NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER = 17;
    5919  private int numberOfSolutionsToCollect_;
    5929  return numberOfSolutionsToCollect_;
    5930  }
    5931 
    5932  public static final int SOLUTION_LIMIT_FIELD_NUMBER = 8;
    5933  private long solutionLimit_;
    5943  public long getSolutionLimit() {
    5944  return solutionLimit_;
    5945  }
    5946 
    5947  public static final int TIME_LIMIT_FIELD_NUMBER = 9;
    5948  private com.google.protobuf.Duration timeLimit_;
    5956  public boolean hasTimeLimit() {
    5957  return timeLimit_ != null;
    5958  }
    5966  public com.google.protobuf.Duration getTimeLimit() {
    5967  return timeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
    5968  }
    5976  public com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder() {
    5977  return getTimeLimit();
    5978  }
    5979 
    5980  public static final int LNS_TIME_LIMIT_FIELD_NUMBER = 10;
    5981  private com.google.protobuf.Duration lnsTimeLimit_;
    5990  public boolean hasLnsTimeLimit() {
    5991  return lnsTimeLimit_ != null;
    5992  }
    6001  public com.google.protobuf.Duration getLnsTimeLimit() {
    6002  return lnsTimeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
    6003  }
    6012  public com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder() {
    6013  return getLnsTimeLimit();
    6014  }
    6015 
    6016  public static final int USE_FULL_PROPAGATION_FIELD_NUMBER = 11;
    6017  private boolean useFullPropagation_;
    6033  public boolean getUseFullPropagation() {
    6034  return useFullPropagation_;
    6035  }
    6036 
    6037  public static final int LOG_SEARCH_FIELD_NUMBER = 13;
    6038  private boolean logSearch_;
    6057  public boolean getLogSearch() {
    6058  return logSearch_;
    6059  }
    6060 
    6061  public static final int LOG_COST_SCALING_FACTOR_FIELD_NUMBER = 22;
    6062  private double logCostScalingFactor_;
    6070  public double getLogCostScalingFactor() {
    6071  return logCostScalingFactor_;
    6072  }
    6073 
    6074  private byte memoizedIsInitialized = -1;
    6075  @java.lang.Override
    6076  public final boolean isInitialized() {
    6077  byte isInitialized = memoizedIsInitialized;
    6078  if (isInitialized == 1) return true;
    6079  if (isInitialized == 0) return false;
    6080 
    6081  memoizedIsInitialized = 1;
    6082  return true;
    6083  }
    6084 
    6085  @java.lang.Override
    6086  public void writeTo(com.google.protobuf.CodedOutputStream output)
    6087  throws java.io.IOException {
    6088  if (firstSolutionStrategy_ != com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNSET.getNumber()) {
    6089  output.writeEnum(1, firstSolutionStrategy_);
    6090  }
    6091  if (useUnfilteredFirstSolutionStrategy_ != false) {
    6092  output.writeBool(2, useUnfilteredFirstSolutionStrategy_);
    6093  }
    6094  if (localSearchOperators_ != null) {
    6095  output.writeMessage(3, getLocalSearchOperators());
    6096  }
    6097  if (localSearchMetaheuristic_ != com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNSET.getNumber()) {
    6098  output.writeEnum(4, localSearchMetaheuristic_);
    6099  }
    6100  if (guidedLocalSearchLambdaCoefficient_ != 0D) {
    6101  output.writeDouble(5, guidedLocalSearchLambdaCoefficient_);
    6102  }
    6103  if (useDepthFirstSearch_ != false) {
    6104  output.writeBool(6, useDepthFirstSearch_);
    6105  }
    6106  if (optimizationStep_ != 0D) {
    6107  output.writeDouble(7, optimizationStep_);
    6108  }
    6109  if (solutionLimit_ != 0L) {
    6110  output.writeInt64(8, solutionLimit_);
    6111  }
    6112  if (timeLimit_ != null) {
    6113  output.writeMessage(9, getTimeLimit());
    6114  }
    6115  if (lnsTimeLimit_ != null) {
    6116  output.writeMessage(10, getLnsTimeLimit());
    6117  }
    6118  if (useFullPropagation_ != false) {
    6119  output.writeBool(11, useFullPropagation_);
    6120  }
    6121  if (logSearch_ != false) {
    6122  output.writeBool(13, logSearch_);
    6123  }
    6124  if (savingsNeighborsRatio_ != 0D) {
    6125  output.writeDouble(14, savingsNeighborsRatio_);
    6126  }
    6127  if (savingsAddReverseArcs_ != false) {
    6128  output.writeBool(15, savingsAddReverseArcs_);
    6129  }
    6130  if (cheapestInsertionFarthestSeedsRatio_ != 0D) {
    6131  output.writeDouble(16, cheapestInsertionFarthestSeedsRatio_);
    6132  }
    6133  if (numberOfSolutionsToCollect_ != 0) {
    6134  output.writeInt32(17, numberOfSolutionsToCollect_);
    6135  }
    6136  if (savingsArcCoefficient_ != 0D) {
    6137  output.writeDouble(18, savingsArcCoefficient_);
    6138  }
    6139  if (savingsParallelRoutes_ != false) {
    6140  output.writeBool(19, savingsParallelRoutes_);
    6141  }
    6142  if (relocateExpensiveChainNumArcsToConsider_ != 0) {
    6143  output.writeInt32(20, relocateExpensiveChainNumArcsToConsider_);
    6144  }
    6145  if (cheapestInsertionNeighborsRatio_ != 0D) {
    6146  output.writeDouble(21, cheapestInsertionNeighborsRatio_);
    6147  }
    6148  if (logCostScalingFactor_ != 0D) {
    6149  output.writeDouble(22, logCostScalingFactor_);
    6150  }
    6151  if (savingsMaxMemoryUsageBytes_ != 0D) {
    6152  output.writeDouble(23, savingsMaxMemoryUsageBytes_);
    6153  }
    6154  if (useCpSat_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6155  output.writeEnum(27, useCpSat_);
    6156  }
    6157  if (useCp_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6158  output.writeEnum(28, useCp_);
    6159  }
    6160  unknownFields.writeTo(output);
    6161  }
    6162 
    6163  @java.lang.Override
    6164  public int getSerializedSize() {
    6165  int size = memoizedSize;
    6166  if (size != -1) return size;
    6167 
    6168  size = 0;
    6169  if (firstSolutionStrategy_ != com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNSET.getNumber()) {
    6170  size += com.google.protobuf.CodedOutputStream
    6171  .computeEnumSize(1, firstSolutionStrategy_);
    6172  }
    6173  if (useUnfilteredFirstSolutionStrategy_ != false) {
    6174  size += com.google.protobuf.CodedOutputStream
    6175  .computeBoolSize(2, useUnfilteredFirstSolutionStrategy_);
    6176  }
    6177  if (localSearchOperators_ != null) {
    6178  size += com.google.protobuf.CodedOutputStream
    6179  .computeMessageSize(3, getLocalSearchOperators());
    6180  }
    6181  if (localSearchMetaheuristic_ != com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNSET.getNumber()) {
    6182  size += com.google.protobuf.CodedOutputStream
    6183  .computeEnumSize(4, localSearchMetaheuristic_);
    6184  }
    6185  if (guidedLocalSearchLambdaCoefficient_ != 0D) {
    6186  size += com.google.protobuf.CodedOutputStream
    6187  .computeDoubleSize(5, guidedLocalSearchLambdaCoefficient_);
    6188  }
    6189  if (useDepthFirstSearch_ != false) {
    6190  size += com.google.protobuf.CodedOutputStream
    6191  .computeBoolSize(6, useDepthFirstSearch_);
    6192  }
    6193  if (optimizationStep_ != 0D) {
    6194  size += com.google.protobuf.CodedOutputStream
    6195  .computeDoubleSize(7, optimizationStep_);
    6196  }
    6197  if (solutionLimit_ != 0L) {
    6198  size += com.google.protobuf.CodedOutputStream
    6199  .computeInt64Size(8, solutionLimit_);
    6200  }
    6201  if (timeLimit_ != null) {
    6202  size += com.google.protobuf.CodedOutputStream
    6203  .computeMessageSize(9, getTimeLimit());
    6204  }
    6205  if (lnsTimeLimit_ != null) {
    6206  size += com.google.protobuf.CodedOutputStream
    6207  .computeMessageSize(10, getLnsTimeLimit());
    6208  }
    6209  if (useFullPropagation_ != false) {
    6210  size += com.google.protobuf.CodedOutputStream
    6211  .computeBoolSize(11, useFullPropagation_);
    6212  }
    6213  if (logSearch_ != false) {
    6214  size += com.google.protobuf.CodedOutputStream
    6215  .computeBoolSize(13, logSearch_);
    6216  }
    6217  if (savingsNeighborsRatio_ != 0D) {
    6218  size += com.google.protobuf.CodedOutputStream
    6219  .computeDoubleSize(14, savingsNeighborsRatio_);
    6220  }
    6221  if (savingsAddReverseArcs_ != false) {
    6222  size += com.google.protobuf.CodedOutputStream
    6223  .computeBoolSize(15, savingsAddReverseArcs_);
    6224  }
    6225  if (cheapestInsertionFarthestSeedsRatio_ != 0D) {
    6226  size += com.google.protobuf.CodedOutputStream
    6227  .computeDoubleSize(16, cheapestInsertionFarthestSeedsRatio_);
    6228  }
    6229  if (numberOfSolutionsToCollect_ != 0) {
    6230  size += com.google.protobuf.CodedOutputStream
    6231  .computeInt32Size(17, numberOfSolutionsToCollect_);
    6232  }
    6233  if (savingsArcCoefficient_ != 0D) {
    6234  size += com.google.protobuf.CodedOutputStream
    6235  .computeDoubleSize(18, savingsArcCoefficient_);
    6236  }
    6237  if (savingsParallelRoutes_ != false) {
    6238  size += com.google.protobuf.CodedOutputStream
    6239  .computeBoolSize(19, savingsParallelRoutes_);
    6240  }
    6241  if (relocateExpensiveChainNumArcsToConsider_ != 0) {
    6242  size += com.google.protobuf.CodedOutputStream
    6243  .computeInt32Size(20, relocateExpensiveChainNumArcsToConsider_);
    6244  }
    6245  if (cheapestInsertionNeighborsRatio_ != 0D) {
    6246  size += com.google.protobuf.CodedOutputStream
    6247  .computeDoubleSize(21, cheapestInsertionNeighborsRatio_);
    6248  }
    6249  if (logCostScalingFactor_ != 0D) {
    6250  size += com.google.protobuf.CodedOutputStream
    6251  .computeDoubleSize(22, logCostScalingFactor_);
    6252  }
    6253  if (savingsMaxMemoryUsageBytes_ != 0D) {
    6254  size += com.google.protobuf.CodedOutputStream
    6255  .computeDoubleSize(23, savingsMaxMemoryUsageBytes_);
    6256  }
    6257  if (useCpSat_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6258  size += com.google.protobuf.CodedOutputStream
    6259  .computeEnumSize(27, useCpSat_);
    6260  }
    6261  if (useCp_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6262  size += com.google.protobuf.CodedOutputStream
    6263  .computeEnumSize(28, useCp_);
    6264  }
    6265  size += unknownFields.getSerializedSize();
    6266  memoizedSize = size;
    6267  return size;
    6268  }
    6269 
    6270  @java.lang.Override
    6271  public boolean equals(final java.lang.Object obj) {
    6272  if (obj == this) {
    6273  return true;
    6274  }
    6275  if (!(obj instanceof com.google.ortools.constraintsolver.RoutingSearchParameters)) {
    6276  return super.equals(obj);
    6277  }
    6279 
    6280  if (firstSolutionStrategy_ != other.firstSolutionStrategy_) return false;
    6282  != other.getUseUnfilteredFirstSolutionStrategy()) return false;
    6283  if (java.lang.Double.doubleToLongBits(getSavingsNeighborsRatio())
    6284  != java.lang.Double.doubleToLongBits(
    6285  other.getSavingsNeighborsRatio())) return false;
    6286  if (java.lang.Double.doubleToLongBits(getSavingsMaxMemoryUsageBytes())
    6287  != java.lang.Double.doubleToLongBits(
    6288  other.getSavingsMaxMemoryUsageBytes())) return false;
    6290  != other.getSavingsAddReverseArcs()) return false;
    6291  if (java.lang.Double.doubleToLongBits(getSavingsArcCoefficient())
    6292  != java.lang.Double.doubleToLongBits(
    6293  other.getSavingsArcCoefficient())) return false;
    6295  != other.getSavingsParallelRoutes()) return false;
    6296  if (java.lang.Double.doubleToLongBits(getCheapestInsertionFarthestSeedsRatio())
    6297  != java.lang.Double.doubleToLongBits(
    6298  other.getCheapestInsertionFarthestSeedsRatio())) return false;
    6299  if (java.lang.Double.doubleToLongBits(getCheapestInsertionNeighborsRatio())
    6300  != java.lang.Double.doubleToLongBits(
    6301  other.getCheapestInsertionNeighborsRatio())) return false;
    6302  if (hasLocalSearchOperators() != other.hasLocalSearchOperators()) return false;
    6303  if (hasLocalSearchOperators()) {
    6305  .equals(other.getLocalSearchOperators())) return false;
    6306  }
    6308  != other.getRelocateExpensiveChainNumArcsToConsider()) return false;
    6309  if (localSearchMetaheuristic_ != other.localSearchMetaheuristic_) return false;
    6310  if (java.lang.Double.doubleToLongBits(getGuidedLocalSearchLambdaCoefficient())
    6311  != java.lang.Double.doubleToLongBits(
    6312  other.getGuidedLocalSearchLambdaCoefficient())) return false;
    6314  != other.getUseDepthFirstSearch()) return false;
    6315  if (useCp_ != other.useCp_) return false;
    6316  if (useCpSat_ != other.useCpSat_) return false;
    6317  if (java.lang.Double.doubleToLongBits(getOptimizationStep())
    6318  != java.lang.Double.doubleToLongBits(
    6319  other.getOptimizationStep())) return false;
    6321  != other.getNumberOfSolutionsToCollect()) return false;
    6322  if (getSolutionLimit()
    6323  != other.getSolutionLimit()) return false;
    6324  if (hasTimeLimit() != other.hasTimeLimit()) return false;
    6325  if (hasTimeLimit()) {
    6326  if (!getTimeLimit()
    6327  .equals(other.getTimeLimit())) return false;
    6328  }
    6329  if (hasLnsTimeLimit() != other.hasLnsTimeLimit()) return false;
    6330  if (hasLnsTimeLimit()) {
    6331  if (!getLnsTimeLimit()
    6332  .equals(other.getLnsTimeLimit())) return false;
    6333  }
    6334  if (getUseFullPropagation()
    6335  != other.getUseFullPropagation()) return false;
    6336  if (getLogSearch()
    6337  != other.getLogSearch()) return false;
    6338  if (java.lang.Double.doubleToLongBits(getLogCostScalingFactor())
    6339  != java.lang.Double.doubleToLongBits(
    6340  other.getLogCostScalingFactor())) return false;
    6341  if (!unknownFields.equals(other.unknownFields)) return false;
    6342  return true;
    6343  }
    6344 
    6345  @java.lang.Override
    6346  public int hashCode() {
    6347  if (memoizedHashCode != 0) {
    6348  return memoizedHashCode;
    6349  }
    6350  int hash = 41;
    6351  hash = (19 * hash) + getDescriptor().hashCode();
    6352  hash = (37 * hash) + FIRST_SOLUTION_STRATEGY_FIELD_NUMBER;
    6353  hash = (53 * hash) + firstSolutionStrategy_;
    6355  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6357  hash = (37 * hash) + SAVINGS_NEIGHBORS_RATIO_FIELD_NUMBER;
    6358  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6359  java.lang.Double.doubleToLongBits(getSavingsNeighborsRatio()));
    6360  hash = (37 * hash) + SAVINGS_MAX_MEMORY_USAGE_BYTES_FIELD_NUMBER;
    6361  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6362  java.lang.Double.doubleToLongBits(getSavingsMaxMemoryUsageBytes()));
    6363  hash = (37 * hash) + SAVINGS_ADD_REVERSE_ARCS_FIELD_NUMBER;
    6364  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6366  hash = (37 * hash) + SAVINGS_ARC_COEFFICIENT_FIELD_NUMBER;
    6367  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6368  java.lang.Double.doubleToLongBits(getSavingsArcCoefficient()));
    6369  hash = (37 * hash) + SAVINGS_PARALLEL_ROUTES_FIELD_NUMBER;
    6370  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6373  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6374  java.lang.Double.doubleToLongBits(getCheapestInsertionFarthestSeedsRatio()));
    6376  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6377  java.lang.Double.doubleToLongBits(getCheapestInsertionNeighborsRatio()));
    6378  if (hasLocalSearchOperators()) {
    6379  hash = (37 * hash) + LOCAL_SEARCH_OPERATORS_FIELD_NUMBER;
    6380  hash = (53 * hash) + getLocalSearchOperators().hashCode();
    6381  }
    6383  hash = (53 * hash) + getRelocateExpensiveChainNumArcsToConsider();
    6384  hash = (37 * hash) + LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER;
    6385  hash = (53 * hash) + localSearchMetaheuristic_;
    6387  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6388  java.lang.Double.doubleToLongBits(getGuidedLocalSearchLambdaCoefficient()));
    6389  hash = (37 * hash) + USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER;
    6390  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6392  hash = (37 * hash) + USE_CP_FIELD_NUMBER;
    6393  hash = (53 * hash) + useCp_;
    6394  hash = (37 * hash) + USE_CP_SAT_FIELD_NUMBER;
    6395  hash = (53 * hash) + useCpSat_;
    6396  hash = (37 * hash) + OPTIMIZATION_STEP_FIELD_NUMBER;
    6397  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6398  java.lang.Double.doubleToLongBits(getOptimizationStep()));
    6399  hash = (37 * hash) + NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER;
    6400  hash = (53 * hash) + getNumberOfSolutionsToCollect();
    6401  hash = (37 * hash) + SOLUTION_LIMIT_FIELD_NUMBER;
    6402  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6403  getSolutionLimit());
    6404  if (hasTimeLimit()) {
    6405  hash = (37 * hash) + TIME_LIMIT_FIELD_NUMBER;
    6406  hash = (53 * hash) + getTimeLimit().hashCode();
    6407  }
    6408  if (hasLnsTimeLimit()) {
    6409  hash = (37 * hash) + LNS_TIME_LIMIT_FIELD_NUMBER;
    6410  hash = (53 * hash) + getLnsTimeLimit().hashCode();
    6411  }
    6412  hash = (37 * hash) + USE_FULL_PROPAGATION_FIELD_NUMBER;
    6413  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6415  hash = (37 * hash) + LOG_SEARCH_FIELD_NUMBER;
    6416  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6417  getLogSearch());
    6418  hash = (37 * hash) + LOG_COST_SCALING_FACTOR_FIELD_NUMBER;
    6419  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6420  java.lang.Double.doubleToLongBits(getLogCostScalingFactor()));
    6421  hash = (29 * hash) + unknownFields.hashCode();
    6422  memoizedHashCode = hash;
    6423  return hash;
    6424  }
    6425 
    6427  java.nio.ByteBuffer data)
    6428  throws com.google.protobuf.InvalidProtocolBufferException {
    6429  return PARSER.parseFrom(data);
    6430  }
    6432  java.nio.ByteBuffer data,
    6433  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6434  throws com.google.protobuf.InvalidProtocolBufferException {
    6435  return PARSER.parseFrom(data, extensionRegistry);
    6436  }
    6438  com.google.protobuf.ByteString data)
    6439  throws com.google.protobuf.InvalidProtocolBufferException {
    6440  return PARSER.parseFrom(data);
    6441  }
    6443  com.google.protobuf.ByteString data,
    6444  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6445  throws com.google.protobuf.InvalidProtocolBufferException {
    6446  return PARSER.parseFrom(data, extensionRegistry);
    6447  }
    6449  throws com.google.protobuf.InvalidProtocolBufferException {
    6450  return PARSER.parseFrom(data);
    6451  }
    6453  byte[] data,
    6454  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6455  throws com.google.protobuf.InvalidProtocolBufferException {
    6456  return PARSER.parseFrom(data, extensionRegistry);
    6457  }
    6458  public static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.io.InputStream input)
    6459  throws java.io.IOException {
    6460  return com.google.protobuf.GeneratedMessageV3
    6461  .parseWithIOException(PARSER, input);
    6462  }
    6464  java.io.InputStream input,
    6465  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6466  throws java.io.IOException {
    6467  return com.google.protobuf.GeneratedMessageV3
    6468  .parseWithIOException(PARSER, input, extensionRegistry);
    6469  }
    6471  throws java.io.IOException {
    6472  return com.google.protobuf.GeneratedMessageV3
    6473  .parseDelimitedWithIOException(PARSER, input);
    6474  }
    6476  java.io.InputStream input,
    6477  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6478  throws java.io.IOException {
    6479  return com.google.protobuf.GeneratedMessageV3
    6480  .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    6481  }
    6483  com.google.protobuf.CodedInputStream input)
    6484  throws java.io.IOException {
    6485  return com.google.protobuf.GeneratedMessageV3
    6486  .parseWithIOException(PARSER, input);
    6487  }
    6489  com.google.protobuf.CodedInputStream input,
    6490  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6491  throws java.io.IOException {
    6492  return com.google.protobuf.GeneratedMessageV3
    6493  .parseWithIOException(PARSER, input, extensionRegistry);
    6494  }
    6495 
    6496  @java.lang.Override
    6497  public Builder newBuilderForType() { return newBuilder(); }
    6498  public static Builder newBuilder() {
    6499  return DEFAULT_INSTANCE.toBuilder();
    6500  }
    6502  return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    6503  }
    6504  @java.lang.Override
    6505  public Builder toBuilder() {
    6506  return this == DEFAULT_INSTANCE
    6507  ? new Builder() : new Builder().mergeFrom(this);
    6508  }
    6509 
    6510  @java.lang.Override
    6512  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    6513  Builder builder = new Builder(parent);
    6514  return builder;
    6515  }
    6527  public static final class Builder extends
    6528  com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
    6529  // @@protoc_insertion_point(builder_implements:operations_research.RoutingSearchParameters)
    6530  com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder {
    6531  public static final com.google.protobuf.Descriptors.Descriptor
    6533  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
    6534  }
    6535 
    6536  @java.lang.Override
    6537  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    6539  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable
    6540  .ensureFieldAccessorsInitialized(
    6542  }
    6543 
    6544  // Construct using com.google.ortools.constraintsolver.RoutingSearchParameters.newBuilder()
    6545  private Builder() {
    6546  maybeForceBuilderInitialization();
    6547  }
    6548 
    6549  private Builder(
    6550  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    6551  super(parent);
    6552  maybeForceBuilderInitialization();
    6553  }
    6554  private void maybeForceBuilderInitialization() {
    6555  if (com.google.protobuf.GeneratedMessageV3
    6556  .alwaysUseFieldBuilders) {
    6557  }
    6558  }
    6559  @java.lang.Override
    6560  public Builder clear() {
    6561  super.clear();
    6562  firstSolutionStrategy_ = 0;
    6563 
    6564  useUnfilteredFirstSolutionStrategy_ = false;
    6565 
    6566  savingsNeighborsRatio_ = 0D;
    6567 
    6568  savingsMaxMemoryUsageBytes_ = 0D;
    6569 
    6570  savingsAddReverseArcs_ = false;
    6571 
    6572  savingsArcCoefficient_ = 0D;
    6573 
    6574  savingsParallelRoutes_ = false;
    6575 
    6576  cheapestInsertionFarthestSeedsRatio_ = 0D;
    6577 
    6578  cheapestInsertionNeighborsRatio_ = 0D;
    6579 
    6580  if (localSearchOperatorsBuilder_ == null) {
    6581  localSearchOperators_ = null;
    6582  } else {
    6583  localSearchOperators_ = null;
    6584  localSearchOperatorsBuilder_ = null;
    6585  }
    6586  relocateExpensiveChainNumArcsToConsider_ = 0;
    6587 
    6588  localSearchMetaheuristic_ = 0;
    6589 
    6590  guidedLocalSearchLambdaCoefficient_ = 0D;
    6591 
    6592  useDepthFirstSearch_ = false;
    6593 
    6594  useCp_ = 0;
    6595 
    6596  useCpSat_ = 0;
    6597 
    6598  optimizationStep_ = 0D;
    6599 
    6600  numberOfSolutionsToCollect_ = 0;
    6601 
    6602  solutionLimit_ = 0L;
    6603 
    6604  if (timeLimitBuilder_ == null) {
    6605  timeLimit_ = null;
    6606  } else {
    6607  timeLimit_ = null;
    6608  timeLimitBuilder_ = null;
    6609  }
    6610  if (lnsTimeLimitBuilder_ == null) {
    6611  lnsTimeLimit_ = null;
    6612  } else {
    6613  lnsTimeLimit_ = null;
    6614  lnsTimeLimitBuilder_ = null;
    6615  }
    6616  useFullPropagation_ = false;
    6617 
    6618  logSearch_ = false;
    6619 
    6620  logCostScalingFactor_ = 0D;
    6621 
    6622  return this;
    6623  }
    6624 
    6625  @java.lang.Override
    6626  public com.google.protobuf.Descriptors.Descriptor
    6628  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
    6629  }
    6630 
    6631  @java.lang.Override
    6634  }
    6635 
    6636  @java.lang.Override
    6639  if (!result.isInitialized()) {
    6640  throw newUninitializedMessageException(result);
    6641  }
    6642  return result;
    6643  }
    6644 
    6645  @java.lang.Override
    6648  result.firstSolutionStrategy_ = firstSolutionStrategy_;
    6649  result.useUnfilteredFirstSolutionStrategy_ = useUnfilteredFirstSolutionStrategy_;
    6650  result.savingsNeighborsRatio_ = savingsNeighborsRatio_;
    6651  result.savingsMaxMemoryUsageBytes_ = savingsMaxMemoryUsageBytes_;
    6652  result.savingsAddReverseArcs_ = savingsAddReverseArcs_;
    6653  result.savingsArcCoefficient_ = savingsArcCoefficient_;
    6654  result.savingsParallelRoutes_ = savingsParallelRoutes_;
    6655  result.cheapestInsertionFarthestSeedsRatio_ = cheapestInsertionFarthestSeedsRatio_;
    6656  result.cheapestInsertionNeighborsRatio_ = cheapestInsertionNeighborsRatio_;
    6657  if (localSearchOperatorsBuilder_ == null) {
    6658  result.localSearchOperators_ = localSearchOperators_;
    6659  } else {
    6660  result.localSearchOperators_ = localSearchOperatorsBuilder_.build();
    6661  }
    6662  result.relocateExpensiveChainNumArcsToConsider_ = relocateExpensiveChainNumArcsToConsider_;
    6663  result.localSearchMetaheuristic_ = localSearchMetaheuristic_;
    6664  result.guidedLocalSearchLambdaCoefficient_ = guidedLocalSearchLambdaCoefficient_;
    6665  result.useDepthFirstSearch_ = useDepthFirstSearch_;
    6666  result.useCp_ = useCp_;
    6667  result.useCpSat_ = useCpSat_;
    6668  result.optimizationStep_ = optimizationStep_;
    6669  result.numberOfSolutionsToCollect_ = numberOfSolutionsToCollect_;
    6670  result.solutionLimit_ = solutionLimit_;
    6671  if (timeLimitBuilder_ == null) {
    6672  result.timeLimit_ = timeLimit_;
    6673  } else {
    6674  result.timeLimit_ = timeLimitBuilder_.build();
    6675  }
    6676  if (lnsTimeLimitBuilder_ == null) {
    6677  result.lnsTimeLimit_ = lnsTimeLimit_;
    6678  } else {
    6679  result.lnsTimeLimit_ = lnsTimeLimitBuilder_.build();
    6680  }
    6681  result.useFullPropagation_ = useFullPropagation_;
    6682  result.logSearch_ = logSearch_;
    6683  result.logCostScalingFactor_ = logCostScalingFactor_;
    6684  onBuilt();
    6685  return result;
    6686  }
    6687 
    6688  @java.lang.Override
    6689  public Builder clone() {
    6690  return super.clone();
    6691  }
    6692  @java.lang.Override
    6694  com.google.protobuf.Descriptors.FieldDescriptor field,
    6695  java.lang.Object value) {
    6696  return super.setField(field, value);
    6697  }
    6698  @java.lang.Override
    6700  com.google.protobuf.Descriptors.FieldDescriptor field) {
    6701  return super.clearField(field);
    6702  }
    6703  @java.lang.Override
    6705  com.google.protobuf.Descriptors.OneofDescriptor oneof) {
    6706  return super.clearOneof(oneof);
    6707  }
    6708  @java.lang.Override
    6710  com.google.protobuf.Descriptors.FieldDescriptor field,
    6711  int index, java.lang.Object value) {
    6712  return super.setRepeatedField(field, index, value);
    6713  }
    6714  @java.lang.Override
    6716  com.google.protobuf.Descriptors.FieldDescriptor field,
    6717  java.lang.Object value) {
    6718  return super.addRepeatedField(field, value);
    6719  }
    6720  @java.lang.Override
    6721  public Builder mergeFrom(com.google.protobuf.Message other) {
    6724  } else {
    6725  super.mergeFrom(other);
    6726  return this;
    6727  }
    6728  }
    6729 
    6732  if (other.firstSolutionStrategy_ != 0) {
    6733  setFirstSolutionStrategyValue(other.getFirstSolutionStrategyValue());
    6734  }
    6735  if (other.getUseUnfilteredFirstSolutionStrategy() != false) {
    6736  setUseUnfilteredFirstSolutionStrategy(other.getUseUnfilteredFirstSolutionStrategy());
    6737  }
    6738  if (other.getSavingsNeighborsRatio() != 0D) {
    6739  setSavingsNeighborsRatio(other.getSavingsNeighborsRatio());
    6740  }
    6741  if (other.getSavingsMaxMemoryUsageBytes() != 0D) {
    6742  setSavingsMaxMemoryUsageBytes(other.getSavingsMaxMemoryUsageBytes());
    6743  }
    6744  if (other.getSavingsAddReverseArcs() != false) {
    6745  setSavingsAddReverseArcs(other.getSavingsAddReverseArcs());
    6746  }
    6747  if (other.getSavingsArcCoefficient() != 0D) {
    6748  setSavingsArcCoefficient(other.getSavingsArcCoefficient());
    6749  }
    6750  if (other.getSavingsParallelRoutes() != false) {
    6751  setSavingsParallelRoutes(other.getSavingsParallelRoutes());
    6752  }
    6753  if (other.getCheapestInsertionFarthestSeedsRatio() != 0D) {
    6754  setCheapestInsertionFarthestSeedsRatio(other.getCheapestInsertionFarthestSeedsRatio());
    6755  }
    6756  if (other.getCheapestInsertionNeighborsRatio() != 0D) {
    6757  setCheapestInsertionNeighborsRatio(other.getCheapestInsertionNeighborsRatio());
    6758  }
    6759  if (other.hasLocalSearchOperators()) {
    6760  mergeLocalSearchOperators(other.getLocalSearchOperators());
    6761  }
    6762  if (other.getRelocateExpensiveChainNumArcsToConsider() != 0) {
    6763  setRelocateExpensiveChainNumArcsToConsider(other.getRelocateExpensiveChainNumArcsToConsider());
    6764  }
    6765  if (other.localSearchMetaheuristic_ != 0) {
    6766  setLocalSearchMetaheuristicValue(other.getLocalSearchMetaheuristicValue());
    6767  }
    6768  if (other.getGuidedLocalSearchLambdaCoefficient() != 0D) {
    6769  setGuidedLocalSearchLambdaCoefficient(other.getGuidedLocalSearchLambdaCoefficient());
    6770  }
    6771  if (other.getUseDepthFirstSearch() != false) {
    6772  setUseDepthFirstSearch(other.getUseDepthFirstSearch());
    6773  }
    6774  if (other.useCp_ != 0) {
    6775  setUseCpValue(other.getUseCpValue());
    6776  }
    6777  if (other.useCpSat_ != 0) {
    6778  setUseCpSatValue(other.getUseCpSatValue());
    6779  }
    6780  if (other.getOptimizationStep() != 0D) {
    6781  setOptimizationStep(other.getOptimizationStep());
    6782  }
    6783  if (other.getNumberOfSolutionsToCollect() != 0) {
    6784  setNumberOfSolutionsToCollect(other.getNumberOfSolutionsToCollect());
    6785  }
    6786  if (other.getSolutionLimit() != 0L) {
    6787  setSolutionLimit(other.getSolutionLimit());
    6788  }
    6789  if (other.hasTimeLimit()) {
    6790  mergeTimeLimit(other.getTimeLimit());
    6791  }
    6792  if (other.hasLnsTimeLimit()) {
    6793  mergeLnsTimeLimit(other.getLnsTimeLimit());
    6794  }
    6795  if (other.getUseFullPropagation() != false) {
    6796  setUseFullPropagation(other.getUseFullPropagation());
    6797  }
    6798  if (other.getLogSearch() != false) {
    6799  setLogSearch(other.getLogSearch());
    6800  }
    6801  if (other.getLogCostScalingFactor() != 0D) {
    6802  setLogCostScalingFactor(other.getLogCostScalingFactor());
    6803  }
    6804  this.mergeUnknownFields(other.unknownFields);
    6805  onChanged();
    6806  return this;
    6807  }
    6808 
    6809  @java.lang.Override
    6810  public final boolean isInitialized() {
    6811  return true;
    6812  }
    6813 
    6814  @java.lang.Override
    6816  com.google.protobuf.CodedInputStream input,
    6817  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6818  throws java.io.IOException {
    6820  try {
    6821  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
    6822  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    6823  parsedMessage = (com.google.ortools.constraintsolver.RoutingSearchParameters) e.getUnfinishedMessage();
    6824  throw e.unwrapIOException();
    6825  } finally {
    6826  if (parsedMessage != null) {
    6827  mergeFrom(parsedMessage);
    6828  }
    6829  }
    6830  return this;
    6831  }
    6832 
    6833  private int firstSolutionStrategy_ = 0;
    6842  return firstSolutionStrategy_;
    6843  }
    6852  firstSolutionStrategy_ = value;
    6853  onChanged();
    6854  return this;
    6855  }
    6864  @SuppressWarnings("deprecation")
    6866  return result == null ? com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNRECOGNIZED : result;
    6867  }
    6876  if (value == null) {
    6877  throw new NullPointerException();
    6878  }
    6879 
    6880  firstSolutionStrategy_ = value.getNumber();
    6881  onChanged();
    6882  return this;
    6883  }
    6892 
    6893  firstSolutionStrategy_ = 0;
    6894  onChanged();
    6895  return this;
    6896  }
    6897 
    6898  private boolean useUnfilteredFirstSolutionStrategy_ ;
    6909  return useUnfilteredFirstSolutionStrategy_;
    6910  }
    6921 
    6922  useUnfilteredFirstSolutionStrategy_ = value;
    6923  onChanged();
    6924  return this;
    6925  }
    6936 
    6937  useUnfilteredFirstSolutionStrategy_ = false;
    6938  onChanged();
    6939  return this;
    6940  }
    6941 
    6942  private double savingsNeighborsRatio_ ;
    6952  public double getSavingsNeighborsRatio() {
    6953  return savingsNeighborsRatio_;
    6954  }
    6964  public Builder setSavingsNeighborsRatio(double value) {
    6965 
    6966  savingsNeighborsRatio_ = value;
    6967  onChanged();
    6968  return this;
    6969  }
    6980 
    6981  savingsNeighborsRatio_ = 0D;
    6982  onChanged();
    6983  return this;
    6984  }
    6985 
    6986  private double savingsMaxMemoryUsageBytes_ ;
    7000  return savingsMaxMemoryUsageBytes_;
    7001  }
    7015 
    7016  savingsMaxMemoryUsageBytes_ = value;
    7017  onChanged();
    7018  return this;
    7019  }
    7033 
    7034  savingsMaxMemoryUsageBytes_ = 0D;
    7035  onChanged();
    7036  return this;
    7037  }
    7038 
    7039  private boolean savingsAddReverseArcs_ ;
    7048  public boolean getSavingsAddReverseArcs() {
    7049  return savingsAddReverseArcs_;
    7050  }
    7059  public Builder setSavingsAddReverseArcs(boolean value) {
    7060 
    7061  savingsAddReverseArcs_ = value;
    7062  onChanged();
    7063  return this;
    7064  }
    7074 
    7075  savingsAddReverseArcs_ = false;
    7076  onChanged();
    7077  return this;
    7078  }
    7079 
    7080  private double savingsArcCoefficient_ ;
    7092  public double getSavingsArcCoefficient() {
    7093  return savingsArcCoefficient_;
    7094  }
    7106  public Builder setSavingsArcCoefficient(double value) {
    7107 
    7108  savingsArcCoefficient_ = value;
    7109  onChanged();
    7110  return this;
    7111  }
    7124 
    7125  savingsArcCoefficient_ = 0D;
    7126  onChanged();
    7127  return this;
    7128  }
    7129 
    7130  private boolean savingsParallelRoutes_ ;
    7138  public boolean getSavingsParallelRoutes() {
    7139  return savingsParallelRoutes_;
    7140  }
    7148  public Builder setSavingsParallelRoutes(boolean value) {
    7149 
    7150  savingsParallelRoutes_ = value;
    7151  onChanged();
    7152  return this;
    7153  }
    7162 
    7163  savingsParallelRoutes_ = false;
    7164  onChanged();
    7165  return this;
    7166  }
    7167 
    7168  private double cheapestInsertionFarthestSeedsRatio_ ;
    7179  return cheapestInsertionFarthestSeedsRatio_;
    7180  }
    7191 
    7192  cheapestInsertionFarthestSeedsRatio_ = value;
    7193  onChanged();
    7194  return this;
    7195  }
    7206 
    7207  cheapestInsertionFarthestSeedsRatio_ = 0D;
    7208  onChanged();
    7209  return this;
    7210  }
    7211 
    7212  private double cheapestInsertionNeighborsRatio_ ;
    7224  return cheapestInsertionNeighborsRatio_;
    7225  }
    7237 
    7238  cheapestInsertionNeighborsRatio_ = value;
    7239  onChanged();
    7240  return this;
    7241  }
    7253 
    7254  cheapestInsertionNeighborsRatio_ = 0D;
    7255  onChanged();
    7256  return this;
    7257  }
    7258 
    7260  private com.google.protobuf.SingleFieldBuilderV3<
    7265  public boolean hasLocalSearchOperators() {
    7266  return localSearchOperatorsBuilder_ != null || localSearchOperators_ != null;
    7267  }
    7272  if (localSearchOperatorsBuilder_ == null) {
    7273  return localSearchOperators_ == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance() : localSearchOperators_;
    7274  } else {
    7275  return localSearchOperatorsBuilder_.getMessage();
    7276  }
    7277  }
    7282  if (localSearchOperatorsBuilder_ == null) {
    7283  if (value == null) {
    7284  throw new NullPointerException();
    7285  }
    7286  localSearchOperators_ = value;
    7287  onChanged();
    7288  } else {
    7289  localSearchOperatorsBuilder_.setMessage(value);
    7290  }
    7291 
    7292  return this;
    7293  }
    7299  if (localSearchOperatorsBuilder_ == null) {
    7300  localSearchOperators_ = builderForValue.build();
    7301  onChanged();
    7302  } else {
    7303  localSearchOperatorsBuilder_.setMessage(builderForValue.build());
    7304  }
    7305 
    7306  return this;
    7307  }
    7312  if (localSearchOperatorsBuilder_ == null) {
    7313  if (localSearchOperators_ != null) {
    7314  localSearchOperators_ =
    7316  } else {
    7317  localSearchOperators_ = value;
    7318  }
    7319  onChanged();
    7320  } else {
    7321  localSearchOperatorsBuilder_.mergeFrom(value);
    7322  }
    7323 
    7324  return this;
    7325  }
    7330  if (localSearchOperatorsBuilder_ == null) {
    7331  localSearchOperators_ = null;
    7332  onChanged();
    7333  } else {
    7334  localSearchOperators_ = null;
    7335  localSearchOperatorsBuilder_ = null;
    7336  }
    7337 
    7338  return this;
    7339  }
    7344 
    7345  onChanged();
    7346  return getLocalSearchOperatorsFieldBuilder().getBuilder();
    7347  }
    7352  if (localSearchOperatorsBuilder_ != null) {
    7353  return localSearchOperatorsBuilder_.getMessageOrBuilder();
    7354  } else {
    7355  return localSearchOperators_ == null ?
    7357  }
    7358  }
    7362  private com.google.protobuf.SingleFieldBuilderV3<
    7364  getLocalSearchOperatorsFieldBuilder() {
    7365  if (localSearchOperatorsBuilder_ == null) {
    7366  localSearchOperatorsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
    7369  getParentForChildren(),
    7370  isClean());
    7371  localSearchOperators_ = null;
    7372  }
    7373  return localSearchOperatorsBuilder_;
    7374  }
    7375 
    7376  private int relocateExpensiveChainNumArcsToConsider_ ;
    7391  return relocateExpensiveChainNumArcsToConsider_;
    7392  }
    7407 
    7408  relocateExpensiveChainNumArcsToConsider_ = value;
    7409  onChanged();
    7410  return this;
    7411  }
    7426 
    7427  relocateExpensiveChainNumArcsToConsider_ = 0;
    7428  onChanged();
    7429  return this;
    7430  }
    7431 
    7432  private int localSearchMetaheuristic_ = 0;
    7441  return localSearchMetaheuristic_;
    7442  }
    7451  localSearchMetaheuristic_ = value;
    7452  onChanged();
    7453  return this;
    7454  }
    7463  @SuppressWarnings("deprecation")
    7466  }
    7475  if (value == null) {
    7476  throw new NullPointerException();
    7477  }
    7478 
    7479  localSearchMetaheuristic_ = value.getNumber();
    7480  onChanged();
    7481  return this;
    7482  }
    7491 
    7492  localSearchMetaheuristic_ = 0;
    7493  onChanged();
    7494  return this;
    7495  }
    7496 
    7497  private double guidedLocalSearchLambdaCoefficient_ ;
    7509  return guidedLocalSearchLambdaCoefficient_;
    7510  }
    7522 
    7523  guidedLocalSearchLambdaCoefficient_ = value;
    7524  onChanged();
    7525  return this;
    7526  }
    7538 
    7539  guidedLocalSearchLambdaCoefficient_ = 0D;
    7540  onChanged();
    7541  return this;
    7542  }
    7543 
    7544  private boolean useDepthFirstSearch_ ;
    7554  public boolean getUseDepthFirstSearch() {
    7555  return useDepthFirstSearch_;
    7556  }
    7566  public Builder setUseDepthFirstSearch(boolean value) {
    7567 
    7568  useDepthFirstSearch_ = value;
    7569  onChanged();
    7570  return this;
    7571  }
    7582 
    7583  useDepthFirstSearch_ = false;
    7584  onChanged();
    7585  return this;
    7586  }
    7587 
    7588  private int useCp_ = 0;
    7598  public int getUseCpValue() {
    7599  return useCp_;
    7600  }
    7610  public Builder setUseCpValue(int value) {
    7611  useCp_ = value;
    7612  onChanged();
    7613  return this;
    7614  }
    7625  @SuppressWarnings("deprecation")
    7627  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    7628  }
    7639  if (value == null) {
    7640  throw new NullPointerException();
    7641  }
    7642 
    7643  useCp_ = value.getNumber();
    7644  onChanged();
    7645  return this;
    7646  }
    7656  public Builder clearUseCp() {
    7657 
    7658  useCp_ = 0;
    7659  onChanged();
    7660  return this;
    7661  }
    7662 
    7663  private int useCpSat_ = 0;
    7674  public int getUseCpSatValue() {
    7675  return useCpSat_;
    7676  }
    7687  public Builder setUseCpSatValue(int value) {
    7688  useCpSat_ = value;
    7689  onChanged();
    7690  return this;
    7691  }
    7703  @SuppressWarnings("deprecation")
    7705  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    7706  }
    7718  if (value == null) {
    7719  throw new NullPointerException();
    7720  }
    7721 
    7722  useCpSat_ = value.getNumber();
    7723  onChanged();
    7724  return this;
    7725  }
    7737 
    7738  useCpSat_ = 0;
    7739  onChanged();
    7740  return this;
    7741  }
    7742 
    7743  private double optimizationStep_ ;
    7753  public double getOptimizationStep() {
    7754  return optimizationStep_;
    7755  }
    7765  public Builder setOptimizationStep(double value) {
    7766 
    7767  optimizationStep_ = value;
    7768  onChanged();
    7769  return this;
    7770  }
    7781 
    7782  optimizationStep_ = 0D;
    7783  onChanged();
    7784  return this;
    7785  }
    7786 
    7787  private int numberOfSolutionsToCollect_ ;
    7797  return numberOfSolutionsToCollect_;
    7798  }
    7808 
    7809  numberOfSolutionsToCollect_ = value;
    7810  onChanged();
    7811  return this;
    7812  }
    7822 
    7823  numberOfSolutionsToCollect_ = 0;
    7824  onChanged();
    7825  return this;
    7826  }
    7827 
    7828  private long solutionLimit_ ;
    7838  public long getSolutionLimit() {
    7839  return solutionLimit_;
    7840  }
    7850  public Builder setSolutionLimit(long value) {
    7851 
    7852  solutionLimit_ = value;
    7853  onChanged();
    7854  return this;
    7855  }
    7866 
    7867  solutionLimit_ = 0L;
    7868  onChanged();
    7869  return this;
    7870  }
    7871 
    7872  private com.google.protobuf.Duration timeLimit_;
    7873  private com.google.protobuf.SingleFieldBuilderV3<
    7874  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> timeLimitBuilder_;
    7882  public boolean hasTimeLimit() {
    7883  return timeLimitBuilder_ != null || timeLimit_ != null;
    7884  }
    7892  public com.google.protobuf.Duration getTimeLimit() {
    7893  if (timeLimitBuilder_ == null) {
    7894  return timeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
    7895  } else {
    7896  return timeLimitBuilder_.getMessage();
    7897  }
    7898  }
    7906  public Builder setTimeLimit(com.google.protobuf.Duration value) {
    7907  if (timeLimitBuilder_ == null) {
    7908  if (value == null) {
    7909  throw new NullPointerException();
    7910  }
    7911  timeLimit_ = value;
    7912  onChanged();
    7913  } else {
    7914  timeLimitBuilder_.setMessage(value);
    7915  }
    7916 
    7917  return this;
    7918  }
    7927  com.google.protobuf.Duration.Builder builderForValue) {
    7928  if (timeLimitBuilder_ == null) {
    7929  timeLimit_ = builderForValue.build();
    7930  onChanged();
    7931  } else {
    7932  timeLimitBuilder_.setMessage(builderForValue.build());
    7933  }
    7934 
    7935  return this;
    7936  }
    7944  public Builder mergeTimeLimit(com.google.protobuf.Duration value) {
    7945  if (timeLimitBuilder_ == null) {
    7946  if (timeLimit_ != null) {
    7947  timeLimit_ =
    7948  com.google.protobuf.Duration.newBuilder(timeLimit_).mergeFrom(value).buildPartial();
    7949  } else {
    7950  timeLimit_ = value;
    7951  }
    7952  onChanged();
    7953  } else {
    7954  timeLimitBuilder_.mergeFrom(value);
    7955  }
    7956 
    7957  return this;
    7958  }
    7967  if (timeLimitBuilder_ == null) {
    7968  timeLimit_ = null;
    7969  onChanged();
    7970  } else {
    7971  timeLimit_ = null;
    7972  timeLimitBuilder_ = null;
    7973  }
    7974 
    7975  return this;
    7976  }
    7984  public com.google.protobuf.Duration.Builder getTimeLimitBuilder() {
    7985 
    7986  onChanged();
    7987  return getTimeLimitFieldBuilder().getBuilder();
    7988  }
    7996  public com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder() {
    7997  if (timeLimitBuilder_ != null) {
    7998  return timeLimitBuilder_.getMessageOrBuilder();
    7999  } else {
    8000  return timeLimit_ == null ?
    8001  com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
    8002  }
    8003  }
    8011  private com.google.protobuf.SingleFieldBuilderV3<
    8012  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
    8013  getTimeLimitFieldBuilder() {
    8014  if (timeLimitBuilder_ == null) {
    8015  timeLimitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
    8016  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
    8017  getTimeLimit(),
    8018  getParentForChildren(),
    8019  isClean());
    8020  timeLimit_ = null;
    8021  }
    8022  return timeLimitBuilder_;
    8023  }
    8024 
    8025  private com.google.protobuf.Duration lnsTimeLimit_;
    8026  private com.google.protobuf.SingleFieldBuilderV3<
    8027  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> lnsTimeLimitBuilder_;
    8036  public boolean hasLnsTimeLimit() {
    8037  return lnsTimeLimitBuilder_ != null || lnsTimeLimit_ != null;
    8038  }
    8047  public com.google.protobuf.Duration getLnsTimeLimit() {
    8048  if (lnsTimeLimitBuilder_ == null) {
    8049  return lnsTimeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
    8050  } else {
    8051  return lnsTimeLimitBuilder_.getMessage();
    8052  }
    8053  }
    8062  public Builder setLnsTimeLimit(com.google.protobuf.Duration value) {
    8063  if (lnsTimeLimitBuilder_ == null) {
    8064  if (value == null) {
    8065  throw new NullPointerException();
    8066  }
    8067  lnsTimeLimit_ = value;
    8068  onChanged();
    8069  } else {
    8070  lnsTimeLimitBuilder_.setMessage(value);
    8071  }
    8072 
    8073  return this;
    8074  }
    8084  com.google.protobuf.Duration.Builder builderForValue) {
    8085  if (lnsTimeLimitBuilder_ == null) {
    8086  lnsTimeLimit_ = builderForValue.build();
    8087  onChanged();
    8088  } else {
    8089  lnsTimeLimitBuilder_.setMessage(builderForValue.build());
    8090  }
    8091 
    8092  return this;
    8093  }
    8102  public Builder mergeLnsTimeLimit(com.google.protobuf.Duration value) {
    8103  if (lnsTimeLimitBuilder_ == null) {
    8104  if (lnsTimeLimit_ != null) {
    8105  lnsTimeLimit_ =
    8106  com.google.protobuf.Duration.newBuilder(lnsTimeLimit_).mergeFrom(value).buildPartial();
    8107  } else {
    8108  lnsTimeLimit_ = value;
    8109  }
    8110  onChanged();
    8111  } else {
    8112  lnsTimeLimitBuilder_.mergeFrom(value);
    8113  }
    8114 
    8115  return this;
    8116  }
    8126  if (lnsTimeLimitBuilder_ == null) {
    8127  lnsTimeLimit_ = null;
    8128  onChanged();
    8129  } else {
    8130  lnsTimeLimit_ = null;
    8131  lnsTimeLimitBuilder_ = null;
    8132  }
    8133 
    8134  return this;
    8135  }
    8144  public com.google.protobuf.Duration.Builder getLnsTimeLimitBuilder() {
    8145 
    8146  onChanged();
    8147  return getLnsTimeLimitFieldBuilder().getBuilder();
    8148  }
    8157  public com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder() {
    8158  if (lnsTimeLimitBuilder_ != null) {
    8159  return lnsTimeLimitBuilder_.getMessageOrBuilder();
    8160  } else {
    8161  return lnsTimeLimit_ == null ?
    8162  com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
    8163  }
    8164  }
    8173  private com.google.protobuf.SingleFieldBuilderV3<
    8174  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
    8175  getLnsTimeLimitFieldBuilder() {
    8176  if (lnsTimeLimitBuilder_ == null) {
    8177  lnsTimeLimitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
    8178  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
    8179  getLnsTimeLimit(),
    8180  getParentForChildren(),
    8181  isClean());
    8182  lnsTimeLimit_ = null;
    8183  }
    8184  return lnsTimeLimitBuilder_;
    8185  }
    8186 
    8187  private boolean useFullPropagation_ ;
    8203  public boolean getUseFullPropagation() {
    8204  return useFullPropagation_;
    8205  }
    8221  public Builder setUseFullPropagation(boolean value) {
    8222 
    8223  useFullPropagation_ = value;
    8224  onChanged();
    8225  return this;
    8226  }
    8243 
    8244  useFullPropagation_ = false;
    8245  onChanged();
    8246  return this;
    8247  }
    8248 
    8249  private boolean logSearch_ ;
    8268  public boolean getLogSearch() {
    8269  return logSearch_;
    8270  }
    8289  public Builder setLogSearch(boolean value) {
    8290 
    8291  logSearch_ = value;
    8292  onChanged();
    8293  return this;
    8294  }
    8314 
    8315  logSearch_ = false;
    8316  onChanged();
    8317  return this;
    8318  }
    8319 
    8320  private double logCostScalingFactor_ ;
    8328  public double getLogCostScalingFactor() {
    8329  return logCostScalingFactor_;
    8330  }
    8338  public Builder setLogCostScalingFactor(double value) {
    8339 
    8340  logCostScalingFactor_ = value;
    8341  onChanged();
    8342  return this;
    8343  }
    8352 
    8353  logCostScalingFactor_ = 0D;
    8354  onChanged();
    8355  return this;
    8356  }
    8357  @java.lang.Override
    8359  final com.google.protobuf.UnknownFieldSet unknownFields) {
    8360  return super.setUnknownFields(unknownFields);
    8361  }
    8362 
    8363  @java.lang.Override
    8365  final com.google.protobuf.UnknownFieldSet unknownFields) {
    8366  return super.mergeUnknownFields(unknownFields);
    8367  }
    8368 
    8369 
    8370  // @@protoc_insertion_point(builder_scope:operations_research.RoutingSearchParameters)
    8371  }
    8372 
    8373  // @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters)
    8374  private static final com.google.ortools.constraintsolver.RoutingSearchParameters DEFAULT_INSTANCE;
    8375  static {
    8376  DEFAULT_INSTANCE = new com.google.ortools.constraintsolver.RoutingSearchParameters();
    8377  }
    8378 
    8380  return DEFAULT_INSTANCE;
    8381  }
    8382 
    8383  private static final com.google.protobuf.Parser<RoutingSearchParameters>
    8384  PARSER = new com.google.protobuf.AbstractParser<RoutingSearchParameters>() {
    8385  @java.lang.Override
    8386  public RoutingSearchParameters parsePartialFrom(
    8387  com.google.protobuf.CodedInputStream input,
    8388  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    8389  throws com.google.protobuf.InvalidProtocolBufferException {
    8390  return new RoutingSearchParameters(input, extensionRegistry);
    8391  }
    8392  };
    8393 
    8394  public static com.google.protobuf.Parser<RoutingSearchParameters> parser() {
    8395  return PARSER;
    8396  }
    8397 
    8398  @java.lang.Override
    8400  return PARSER;
    8401  }
    8402 
    8403  @java.lang.Override
    8405  return DEFAULT_INSTANCE;
    8406  }
    8407 
    8408 }
    8409 
    - +Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/constraint_solver/routing_parameters.proto
    3 
    4 package com.google.ortools.constraintsolver;
    5 
    17 public final class RoutingSearchParameters extends
    18  com.google.protobuf.GeneratedMessageV3 implements
    19  // @@protoc_insertion_point(message_implements:operations_research.RoutingSearchParameters)
    21 private static final long serialVersionUID = 0L;
    22  // Use RoutingSearchParameters.newBuilder() to construct.
    23  private RoutingSearchParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    24  super(builder);
    25  }
    26  private RoutingSearchParameters() {
    27  firstSolutionStrategy_ = 0;
    28  localSearchMetaheuristic_ = 0;
    29  useCp_ = 0;
    30  useCpSat_ = 0;
    31  }
    32 
    33  @java.lang.Override
    34  @SuppressWarnings({"unused"})
    35  protected java.lang.Object newInstance(
    36  UnusedPrivateParameter unused) {
    37  return new RoutingSearchParameters();
    38  }
    39 
    40  @java.lang.Override
    41  public final com.google.protobuf.UnknownFieldSet
    43  return this.unknownFields;
    44  }
    46  com.google.protobuf.CodedInputStream input,
    47  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    48  throws com.google.protobuf.InvalidProtocolBufferException {
    49  this();
    50  if (extensionRegistry == null) {
    51  throw new java.lang.NullPointerException();
    52  }
    53  com.google.protobuf.UnknownFieldSet.Builder unknownFields =
    54  com.google.protobuf.UnknownFieldSet.newBuilder();
    55  try {
    56  boolean done = false;
    57  while (!done) {
    58  int tag = input.readTag();
    59  switch (tag) {
    60  case 0:
    61  done = true;
    62  break;
    63  case 8: {
    64  int rawValue = input.readEnum();
    65 
    66  firstSolutionStrategy_ = rawValue;
    67  break;
    68  }
    69  case 16: {
    70 
    71  useUnfilteredFirstSolutionStrategy_ = input.readBool();
    72  break;
    73  }
    74  case 26: {
    76  if (localSearchOperators_ != null) {
    77  subBuilder = localSearchOperators_.toBuilder();
    78  }
    79  localSearchOperators_ = input.readMessage(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.parser(), extensionRegistry);
    80  if (subBuilder != null) {
    81  subBuilder.mergeFrom(localSearchOperators_);
    82  localSearchOperators_ = subBuilder.buildPartial();
    83  }
    84 
    85  break;
    86  }
    87  case 32: {
    88  int rawValue = input.readEnum();
    89 
    90  localSearchMetaheuristic_ = rawValue;
    91  break;
    92  }
    93  case 41: {
    94 
    95  guidedLocalSearchLambdaCoefficient_ = input.readDouble();
    96  break;
    97  }
    98  case 48: {
    99 
    100  useDepthFirstSearch_ = input.readBool();
    101  break;
    102  }
    103  case 57: {
    104 
    105  optimizationStep_ = input.readDouble();
    106  break;
    107  }
    108  case 64: {
    109 
    110  solutionLimit_ = input.readInt64();
    111  break;
    112  }
    113  case 74: {
    114  com.google.protobuf.Duration.Builder subBuilder = null;
    115  if (timeLimit_ != null) {
    116  subBuilder = timeLimit_.toBuilder();
    117  }
    118  timeLimit_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
    119  if (subBuilder != null) {
    120  subBuilder.mergeFrom(timeLimit_);
    121  timeLimit_ = subBuilder.buildPartial();
    122  }
    123 
    124  break;
    125  }
    126  case 82: {
    127  com.google.protobuf.Duration.Builder subBuilder = null;
    128  if (lnsTimeLimit_ != null) {
    129  subBuilder = lnsTimeLimit_.toBuilder();
    130  }
    131  lnsTimeLimit_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
    132  if (subBuilder != null) {
    133  subBuilder.mergeFrom(lnsTimeLimit_);
    134  lnsTimeLimit_ = subBuilder.buildPartial();
    135  }
    136 
    137  break;
    138  }
    139  case 88: {
    140 
    141  useFullPropagation_ = input.readBool();
    142  break;
    143  }
    144  case 104: {
    145 
    146  logSearch_ = input.readBool();
    147  break;
    148  }
    149  case 113: {
    150 
    151  savingsNeighborsRatio_ = input.readDouble();
    152  break;
    153  }
    154  case 120: {
    155 
    156  savingsAddReverseArcs_ = input.readBool();
    157  break;
    158  }
    159  case 129: {
    160 
    161  cheapestInsertionFarthestSeedsRatio_ = input.readDouble();
    162  break;
    163  }
    164  case 136: {
    165 
    166  numberOfSolutionsToCollect_ = input.readInt32();
    167  break;
    168  }
    169  case 145: {
    170 
    171  savingsArcCoefficient_ = input.readDouble();
    172  break;
    173  }
    174  case 152: {
    175 
    176  savingsParallelRoutes_ = input.readBool();
    177  break;
    178  }
    179  case 160: {
    180 
    181  relocateExpensiveChainNumArcsToConsider_ = input.readInt32();
    182  break;
    183  }
    184  case 169: {
    185 
    186  cheapestInsertionNeighborsRatio_ = input.readDouble();
    187  break;
    188  }
    189  case 177: {
    190 
    191  logCostScalingFactor_ = input.readDouble();
    192  break;
    193  }
    194  case 185: {
    195 
    196  savingsMaxMemoryUsageBytes_ = input.readDouble();
    197  break;
    198  }
    199  case 216: {
    200  int rawValue = input.readEnum();
    201 
    202  useCpSat_ = rawValue;
    203  break;
    204  }
    205  case 224: {
    206  int rawValue = input.readEnum();
    207 
    208  useCp_ = rawValue;
    209  break;
    210  }
    211  case 233: {
    212 
    213  logCostOffset_ = input.readDouble();
    214  break;
    215  }
    216  default: {
    217  if (!parseUnknownField(
    218  input, unknownFields, extensionRegistry, tag)) {
    219  done = true;
    220  }
    221  break;
    222  }
    223  }
    224  }
    225  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    226  throw e.setUnfinishedMessage(this);
    227  } catch (java.io.IOException e) {
    228  throw new com.google.protobuf.InvalidProtocolBufferException(
    229  e).setUnfinishedMessage(this);
    230  } finally {
    231  this.unknownFields = unknownFields.build();
    232  makeExtensionsImmutable();
    233  }
    234  }
    235  public static final com.google.protobuf.Descriptors.Descriptor
    237  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
    238  }
    239 
    240  @java.lang.Override
    241  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    243  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable
    244  .ensureFieldAccessorsInitialized(
    246  }
    247 
    249  // @@protoc_insertion_point(interface_extends:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    250  com.google.protobuf.MessageOrBuilder {
    251 
    267  int getUseRelocateValue();
    284 
    317 
    346 
    405 
    444 
    458  int getUseExchangeValue();
    473 
    502 
    521 
    537  int getUseCrossValue();
    554 
    571 
    606 
    623  int getUseTwoOptValue();
    641 
    659  int getUseOrOptValue();
    678 
    701 
    714  int getUseTspOptValue();
    728 
    742  int getUseMakeActiveValue();
    757 
    792 
    817 
    844 
    856  int getUseSwapActiveValue();
    869 
    904 
    941 
    956  int getUsePathLnsValue();
    972 
    989 
    1002  int getUseTspLnsValue();
    1016 
    1026  int getUseInactiveLnsValue();
    1037  }
    1046  public static final class LocalSearchNeighborhoodOperators extends
    1047  com.google.protobuf.GeneratedMessageV3 implements
    1048  // @@protoc_insertion_point(message_implements:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    1050  private static final long serialVersionUID = 0L;
    1051  // Use LocalSearchNeighborhoodOperators.newBuilder() to construct.
    1052  private LocalSearchNeighborhoodOperators(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    1053  super(builder);
    1054  }
    1056  useRelocate_ = 0;
    1057  useRelocatePair_ = 0;
    1058  useLightRelocatePair_ = 0;
    1059  useRelocateNeighbors_ = 0;
    1060  useRelocateSubtrip_ = 0;
    1061  useExchange_ = 0;
    1062  useExchangePair_ = 0;
    1063  useExchangeSubtrip_ = 0;
    1064  useCross_ = 0;
    1065  useCrossExchange_ = 0;
    1066  useRelocateExpensiveChain_ = 0;
    1067  useTwoOpt_ = 0;
    1068  useOrOpt_ = 0;
    1069  useLinKernighan_ = 0;
    1070  useTspOpt_ = 0;
    1071  useMakeActive_ = 0;
    1072  useRelocateAndMakeActive_ = 0;
    1073  useMakeInactive_ = 0;
    1074  useMakeChainInactive_ = 0;
    1075  useSwapActive_ = 0;
    1076  useExtendedSwapActive_ = 0;
    1077  useNodePairSwapActive_ = 0;
    1078  usePathLns_ = 0;
    1079  useFullPathLns_ = 0;
    1080  useTspLns_ = 0;
    1081  useInactiveLns_ = 0;
    1082  }
    1083 
    1084  @java.lang.Override
    1085  @SuppressWarnings({"unused"})
    1086  protected java.lang.Object newInstance(
    1087  UnusedPrivateParameter unused) {
    1088  return new LocalSearchNeighborhoodOperators();
    1089  }
    1090 
    1091  @java.lang.Override
    1092  public final com.google.protobuf.UnknownFieldSet
    1094  return this.unknownFields;
    1095  }
    1097  com.google.protobuf.CodedInputStream input,
    1098  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    1099  throws com.google.protobuf.InvalidProtocolBufferException {
    1100  this();
    1101  if (extensionRegistry == null) {
    1102  throw new java.lang.NullPointerException();
    1103  }
    1104  com.google.protobuf.UnknownFieldSet.Builder unknownFields =
    1105  com.google.protobuf.UnknownFieldSet.newBuilder();
    1106  try {
    1107  boolean done = false;
    1108  while (!done) {
    1109  int tag = input.readTag();
    1110  switch (tag) {
    1111  case 0:
    1112  done = true;
    1113  break;
    1114  case 8: {
    1115  int rawValue = input.readEnum();
    1116 
    1117  useRelocate_ = rawValue;
    1118  break;
    1119  }
    1120  case 16: {
    1121  int rawValue = input.readEnum();
    1122 
    1123  useRelocatePair_ = rawValue;
    1124  break;
    1125  }
    1126  case 24: {
    1127  int rawValue = input.readEnum();
    1128 
    1129  useRelocateNeighbors_ = rawValue;
    1130  break;
    1131  }
    1132  case 32: {
    1133  int rawValue = input.readEnum();
    1134 
    1135  useExchange_ = rawValue;
    1136  break;
    1137  }
    1138  case 40: {
    1139  int rawValue = input.readEnum();
    1140 
    1141  useCross_ = rawValue;
    1142  break;
    1143  }
    1144  case 48: {
    1145  int rawValue = input.readEnum();
    1146 
    1147  useCrossExchange_ = rawValue;
    1148  break;
    1149  }
    1150  case 56: {
    1151  int rawValue = input.readEnum();
    1152 
    1153  useTwoOpt_ = rawValue;
    1154  break;
    1155  }
    1156  case 64: {
    1157  int rawValue = input.readEnum();
    1158 
    1159  useOrOpt_ = rawValue;
    1160  break;
    1161  }
    1162  case 72: {
    1163  int rawValue = input.readEnum();
    1164 
    1165  useLinKernighan_ = rawValue;
    1166  break;
    1167  }
    1168  case 80: {
    1169  int rawValue = input.readEnum();
    1170 
    1171  useTspOpt_ = rawValue;
    1172  break;
    1173  }
    1174  case 88: {
    1175  int rawValue = input.readEnum();
    1176 
    1177  useMakeActive_ = rawValue;
    1178  break;
    1179  }
    1180  case 96: {
    1181  int rawValue = input.readEnum();
    1182 
    1183  useMakeInactive_ = rawValue;
    1184  break;
    1185  }
    1186  case 104: {
    1187  int rawValue = input.readEnum();
    1188 
    1189  useMakeChainInactive_ = rawValue;
    1190  break;
    1191  }
    1192  case 112: {
    1193  int rawValue = input.readEnum();
    1194 
    1195  useSwapActive_ = rawValue;
    1196  break;
    1197  }
    1198  case 120: {
    1199  int rawValue = input.readEnum();
    1200 
    1201  useExtendedSwapActive_ = rawValue;
    1202  break;
    1203  }
    1204  case 128: {
    1205  int rawValue = input.readEnum();
    1206 
    1207  usePathLns_ = rawValue;
    1208  break;
    1209  }
    1210  case 136: {
    1211  int rawValue = input.readEnum();
    1212 
    1213  useFullPathLns_ = rawValue;
    1214  break;
    1215  }
    1216  case 144: {
    1217  int rawValue = input.readEnum();
    1218 
    1219  useTspLns_ = rawValue;
    1220  break;
    1221  }
    1222  case 152: {
    1223  int rawValue = input.readEnum();
    1224 
    1225  useInactiveLns_ = rawValue;
    1226  break;
    1227  }
    1228  case 160: {
    1229  int rawValue = input.readEnum();
    1230 
    1231  useNodePairSwapActive_ = rawValue;
    1232  break;
    1233  }
    1234  case 168: {
    1235  int rawValue = input.readEnum();
    1236 
    1237  useRelocateAndMakeActive_ = rawValue;
    1238  break;
    1239  }
    1240  case 176: {
    1241  int rawValue = input.readEnum();
    1242 
    1243  useExchangePair_ = rawValue;
    1244  break;
    1245  }
    1246  case 184: {
    1247  int rawValue = input.readEnum();
    1248 
    1249  useRelocateExpensiveChain_ = rawValue;
    1250  break;
    1251  }
    1252  case 192: {
    1253  int rawValue = input.readEnum();
    1254 
    1255  useLightRelocatePair_ = rawValue;
    1256  break;
    1257  }
    1258  case 200: {
    1259  int rawValue = input.readEnum();
    1260 
    1261  useRelocateSubtrip_ = rawValue;
    1262  break;
    1263  }
    1264  case 208: {
    1265  int rawValue = input.readEnum();
    1266 
    1267  useExchangeSubtrip_ = rawValue;
    1268  break;
    1269  }
    1270  default: {
    1271  if (!parseUnknownField(
    1272  input, unknownFields, extensionRegistry, tag)) {
    1273  done = true;
    1274  }
    1275  break;
    1276  }
    1277  }
    1278  }
    1279  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    1280  throw e.setUnfinishedMessage(this);
    1281  } catch (java.io.IOException e) {
    1282  throw new com.google.protobuf.InvalidProtocolBufferException(
    1283  e).setUnfinishedMessage(this);
    1284  } finally {
    1285  this.unknownFields = unknownFields.build();
    1286  makeExtensionsImmutable();
    1287  }
    1288  }
    1289  public static final com.google.protobuf.Descriptors.Descriptor
    1291  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    1292  }
    1293 
    1294  @java.lang.Override
    1295  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    1297  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable
    1298  .ensureFieldAccessorsInitialized(
    1300  }
    1301 
    1302  public static final int USE_RELOCATE_FIELD_NUMBER = 1;
    1303  private int useRelocate_;
    1319  public int getUseRelocateValue() {
    1320  return useRelocate_;
    1321  }
    1338  @SuppressWarnings("deprecation")
    1340  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1341  }
    1342 
    1343  public static final int USE_RELOCATE_PAIR_FIELD_NUMBER = 2;
    1344  private int useRelocatePair_;
    1361  return useRelocatePair_;
    1362  }
    1379  @SuppressWarnings("deprecation")
    1381  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1382  }
    1383 
    1384  public static final int USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER = 24;
    1385  private int useLightRelocatePair_;
    1400  return useLightRelocatePair_;
    1401  }
    1416  @SuppressWarnings("deprecation")
    1418  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1419  }
    1420 
    1421  public static final int USE_RELOCATE_NEIGHBORS_FIELD_NUMBER = 3;
    1422  private int useRelocateNeighbors_;
    1452  return useRelocateNeighbors_;
    1453  }
    1483  @SuppressWarnings("deprecation")
    1485  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1486  }
    1487 
    1488  public static final int USE_RELOCATE_SUBTRIP_FIELD_NUMBER = 25;
    1489  private int useRelocateSubtrip_;
    1509  return useRelocateSubtrip_;
    1510  }
    1530  @SuppressWarnings("deprecation")
    1532  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1533  }
    1534 
    1535  public static final int USE_EXCHANGE_FIELD_NUMBER = 4;
    1536  private int useExchange_;
    1550  public int getUseExchangeValue() {
    1551  return useExchange_;
    1552  }
    1567  @SuppressWarnings("deprecation")
    1569  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1570  }
    1571 
    1572  public static final int USE_EXCHANGE_PAIR_FIELD_NUMBER = 22;
    1573  private int useExchangePair_;
    1588  return useExchangePair_;
    1589  }
    1604  @SuppressWarnings("deprecation")
    1606  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1607  }
    1608 
    1609  public static final int USE_EXCHANGE_SUBTRIP_FIELD_NUMBER = 26;
    1610  private int useExchangeSubtrip_;
    1620  return useExchangeSubtrip_;
    1621  }
    1631  @SuppressWarnings("deprecation")
    1633  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1634  }
    1635 
    1636  public static final int USE_CROSS_FIELD_NUMBER = 5;
    1637  private int useCross_;
    1653  public int getUseCrossValue() {
    1654  return useCross_;
    1655  }
    1672  @SuppressWarnings("deprecation")
    1674  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1675  }
    1676 
    1677  public static final int USE_CROSS_EXCHANGE_FIELD_NUMBER = 6;
    1678  private int useCrossExchange_;
    1687  return useCrossExchange_;
    1688  }
    1697  @SuppressWarnings("deprecation")
    1699  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1700  }
    1701 
    1702  public static final int USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER = 23;
    1703  private int useRelocateExpensiveChain_;
    1721  return useRelocateExpensiveChain_;
    1722  }
    1740  @SuppressWarnings("deprecation")
    1741  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateExpensiveChain_);
    1742  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1743  }
    1744 
    1745  public static final int USE_TWO_OPT_FIELD_NUMBER = 7;
    1746  private int useTwoOpt_;
    1763  public int getUseTwoOptValue() {
    1764  return useTwoOpt_;
    1765  }
    1783  @SuppressWarnings("deprecation")
    1785  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1786  }
    1787 
    1788  public static final int USE_OR_OPT_FIELD_NUMBER = 8;
    1789  private int useOrOpt_;
    1807  public int getUseOrOptValue() {
    1808  return useOrOpt_;
    1809  }
    1828  @SuppressWarnings("deprecation")
    1830  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1831  }
    1832 
    1833  public static final int USE_LIN_KERNIGHAN_FIELD_NUMBER = 9;
    1834  private int useLinKernighan_;
    1846  return useLinKernighan_;
    1847  }
    1859  @SuppressWarnings("deprecation")
    1861  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1862  }
    1863 
    1864  public static final int USE_TSP_OPT_FIELD_NUMBER = 10;
    1865  private int useTspOpt_;
    1878  public int getUseTspOptValue() {
    1879  return useTspOpt_;
    1880  }
    1894  @SuppressWarnings("deprecation")
    1896  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1897  }
    1898 
    1899  public static final int USE_MAKE_ACTIVE_FIELD_NUMBER = 11;
    1900  private int useMakeActive_;
    1914  public int getUseMakeActiveValue() {
    1915  return useMakeActive_;
    1916  }
    1931  @SuppressWarnings("deprecation")
    1933  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1934  }
    1935 
    1936  public static final int USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER = 21;
    1937  private int useRelocateAndMakeActive_;
    1955  return useRelocateAndMakeActive_;
    1956  }
    1974  @SuppressWarnings("deprecation")
    1975  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateAndMakeActive_);
    1976  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    1977  }
    1978 
    1979  public static final int USE_MAKE_INACTIVE_FIELD_NUMBER = 12;
    1980  private int useMakeInactive_;
    1993  return useMakeInactive_;
    1994  }
    2007  @SuppressWarnings("deprecation")
    2009  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2010  }
    2011 
    2012  public static final int USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER = 13;
    2013  private int useMakeChainInactive_;
    2027  return useMakeChainInactive_;
    2028  }
    2042  @SuppressWarnings("deprecation")
    2044  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2045  }
    2046 
    2047  public static final int USE_SWAP_ACTIVE_FIELD_NUMBER = 14;
    2048  private int useSwapActive_;
    2060  public int getUseSwapActiveValue() {
    2061  return useSwapActive_;
    2062  }
    2075  @SuppressWarnings("deprecation")
    2077  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2078  }
    2079 
    2080  public static final int USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER = 15;
    2081  private int useExtendedSwapActive_;
    2099  return useExtendedSwapActive_;
    2100  }
    2118  @SuppressWarnings("deprecation")
    2119  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExtendedSwapActive_);
    2120  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2121  }
    2122 
    2123  public static final int USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER = 20;
    2124  private int useNodePairSwapActive_;
    2143  return useNodePairSwapActive_;
    2144  }
    2163  @SuppressWarnings("deprecation")
    2164  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useNodePairSwapActive_);
    2165  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2166  }
    2167 
    2168  public static final int USE_PATH_LNS_FIELD_NUMBER = 16;
    2169  private int usePathLns_;
    2184  public int getUsePathLnsValue() {
    2185  return usePathLns_;
    2186  }
    2202  @SuppressWarnings("deprecation")
    2204  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2205  }
    2206 
    2207  public static final int USE_FULL_PATH_LNS_FIELD_NUMBER = 17;
    2208  private int useFullPathLns_;
    2216  public int getUseFullPathLnsValue() {
    2217  return useFullPathLns_;
    2218  }
    2227  @SuppressWarnings("deprecation")
    2229  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2230  }
    2231 
    2232  public static final int USE_TSP_LNS_FIELD_NUMBER = 18;
    2233  private int useTspLns_;
    2246  public int getUseTspLnsValue() {
    2247  return useTspLns_;
    2248  }
    2262  @SuppressWarnings("deprecation")
    2264  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2265  }
    2266 
    2267  public static final int USE_INACTIVE_LNS_FIELD_NUMBER = 19;
    2268  private int useInactiveLns_;
    2278  public int getUseInactiveLnsValue() {
    2279  return useInactiveLns_;
    2280  }
    2291  @SuppressWarnings("deprecation")
    2293  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    2294  }
    2295 
    2296  private byte memoizedIsInitialized = -1;
    2297  @java.lang.Override
    2298  public final boolean isInitialized() {
    2299  byte isInitialized = memoizedIsInitialized;
    2300  if (isInitialized == 1) return true;
    2301  if (isInitialized == 0) return false;
    2302 
    2303  memoizedIsInitialized = 1;
    2304  return true;
    2305  }
    2306 
    2307  @java.lang.Override
    2308  public void writeTo(com.google.protobuf.CodedOutputStream output)
    2309  throws java.io.IOException {
    2310  if (useRelocate_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2311  output.writeEnum(1, useRelocate_);
    2312  }
    2313  if (useRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2314  output.writeEnum(2, useRelocatePair_);
    2315  }
    2316  if (useRelocateNeighbors_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2317  output.writeEnum(3, useRelocateNeighbors_);
    2318  }
    2319  if (useExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2320  output.writeEnum(4, useExchange_);
    2321  }
    2322  if (useCross_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2323  output.writeEnum(5, useCross_);
    2324  }
    2325  if (useCrossExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2326  output.writeEnum(6, useCrossExchange_);
    2327  }
    2328  if (useTwoOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2329  output.writeEnum(7, useTwoOpt_);
    2330  }
    2331  if (useOrOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2332  output.writeEnum(8, useOrOpt_);
    2333  }
    2334  if (useLinKernighan_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2335  output.writeEnum(9, useLinKernighan_);
    2336  }
    2337  if (useTspOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2338  output.writeEnum(10, useTspOpt_);
    2339  }
    2340  if (useMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2341  output.writeEnum(11, useMakeActive_);
    2342  }
    2343  if (useMakeInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2344  output.writeEnum(12, useMakeInactive_);
    2345  }
    2346  if (useMakeChainInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2347  output.writeEnum(13, useMakeChainInactive_);
    2348  }
    2349  if (useSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2350  output.writeEnum(14, useSwapActive_);
    2351  }
    2352  if (useExtendedSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2353  output.writeEnum(15, useExtendedSwapActive_);
    2354  }
    2355  if (usePathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2356  output.writeEnum(16, usePathLns_);
    2357  }
    2358  if (useFullPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2359  output.writeEnum(17, useFullPathLns_);
    2360  }
    2361  if (useTspLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2362  output.writeEnum(18, useTspLns_);
    2363  }
    2364  if (useInactiveLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2365  output.writeEnum(19, useInactiveLns_);
    2366  }
    2367  if (useNodePairSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2368  output.writeEnum(20, useNodePairSwapActive_);
    2369  }
    2370  if (useRelocateAndMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2371  output.writeEnum(21, useRelocateAndMakeActive_);
    2372  }
    2373  if (useExchangePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2374  output.writeEnum(22, useExchangePair_);
    2375  }
    2376  if (useRelocateExpensiveChain_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2377  output.writeEnum(23, useRelocateExpensiveChain_);
    2378  }
    2379  if (useLightRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2380  output.writeEnum(24, useLightRelocatePair_);
    2381  }
    2382  if (useRelocateSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2383  output.writeEnum(25, useRelocateSubtrip_);
    2384  }
    2385  if (useExchangeSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2386  output.writeEnum(26, useExchangeSubtrip_);
    2387  }
    2388  unknownFields.writeTo(output);
    2389  }
    2390 
    2391  @java.lang.Override
    2392  public int getSerializedSize() {
    2393  int size = memoizedSize;
    2394  if (size != -1) return size;
    2395 
    2396  size = 0;
    2397  if (useRelocate_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2398  size += com.google.protobuf.CodedOutputStream
    2399  .computeEnumSize(1, useRelocate_);
    2400  }
    2401  if (useRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2402  size += com.google.protobuf.CodedOutputStream
    2403  .computeEnumSize(2, useRelocatePair_);
    2404  }
    2405  if (useRelocateNeighbors_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2406  size += com.google.protobuf.CodedOutputStream
    2407  .computeEnumSize(3, useRelocateNeighbors_);
    2408  }
    2409  if (useExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2410  size += com.google.protobuf.CodedOutputStream
    2411  .computeEnumSize(4, useExchange_);
    2412  }
    2413  if (useCross_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2414  size += com.google.protobuf.CodedOutputStream
    2415  .computeEnumSize(5, useCross_);
    2416  }
    2417  if (useCrossExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2418  size += com.google.protobuf.CodedOutputStream
    2419  .computeEnumSize(6, useCrossExchange_);
    2420  }
    2421  if (useTwoOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2422  size += com.google.protobuf.CodedOutputStream
    2423  .computeEnumSize(7, useTwoOpt_);
    2424  }
    2425  if (useOrOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2426  size += com.google.protobuf.CodedOutputStream
    2427  .computeEnumSize(8, useOrOpt_);
    2428  }
    2429  if (useLinKernighan_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2430  size += com.google.protobuf.CodedOutputStream
    2431  .computeEnumSize(9, useLinKernighan_);
    2432  }
    2433  if (useTspOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2434  size += com.google.protobuf.CodedOutputStream
    2435  .computeEnumSize(10, useTspOpt_);
    2436  }
    2437  if (useMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2438  size += com.google.protobuf.CodedOutputStream
    2439  .computeEnumSize(11, useMakeActive_);
    2440  }
    2441  if (useMakeInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2442  size += com.google.protobuf.CodedOutputStream
    2443  .computeEnumSize(12, useMakeInactive_);
    2444  }
    2445  if (useMakeChainInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2446  size += com.google.protobuf.CodedOutputStream
    2447  .computeEnumSize(13, useMakeChainInactive_);
    2448  }
    2449  if (useSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2450  size += com.google.protobuf.CodedOutputStream
    2451  .computeEnumSize(14, useSwapActive_);
    2452  }
    2453  if (useExtendedSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2454  size += com.google.protobuf.CodedOutputStream
    2455  .computeEnumSize(15, useExtendedSwapActive_);
    2456  }
    2457  if (usePathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2458  size += com.google.protobuf.CodedOutputStream
    2459  .computeEnumSize(16, usePathLns_);
    2460  }
    2461  if (useFullPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2462  size += com.google.protobuf.CodedOutputStream
    2463  .computeEnumSize(17, useFullPathLns_);
    2464  }
    2465  if (useTspLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2466  size += com.google.protobuf.CodedOutputStream
    2467  .computeEnumSize(18, useTspLns_);
    2468  }
    2469  if (useInactiveLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2470  size += com.google.protobuf.CodedOutputStream
    2471  .computeEnumSize(19, useInactiveLns_);
    2472  }
    2473  if (useNodePairSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2474  size += com.google.protobuf.CodedOutputStream
    2475  .computeEnumSize(20, useNodePairSwapActive_);
    2476  }
    2477  if (useRelocateAndMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2478  size += com.google.protobuf.CodedOutputStream
    2479  .computeEnumSize(21, useRelocateAndMakeActive_);
    2480  }
    2481  if (useExchangePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2482  size += com.google.protobuf.CodedOutputStream
    2483  .computeEnumSize(22, useExchangePair_);
    2484  }
    2485  if (useRelocateExpensiveChain_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2486  size += com.google.protobuf.CodedOutputStream
    2487  .computeEnumSize(23, useRelocateExpensiveChain_);
    2488  }
    2489  if (useLightRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2490  size += com.google.protobuf.CodedOutputStream
    2491  .computeEnumSize(24, useLightRelocatePair_);
    2492  }
    2493  if (useRelocateSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2494  size += com.google.protobuf.CodedOutputStream
    2495  .computeEnumSize(25, useRelocateSubtrip_);
    2496  }
    2497  if (useExchangeSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    2498  size += com.google.protobuf.CodedOutputStream
    2499  .computeEnumSize(26, useExchangeSubtrip_);
    2500  }
    2501  size += unknownFields.getSerializedSize();
    2502  memoizedSize = size;
    2503  return size;
    2504  }
    2505 
    2506  @java.lang.Override
    2507  public boolean equals(final java.lang.Object obj) {
    2508  if (obj == this) {
    2509  return true;
    2510  }
    2512  return super.equals(obj);
    2513  }
    2515 
    2516  if (useRelocate_ != other.useRelocate_) return false;
    2517  if (useRelocatePair_ != other.useRelocatePair_) return false;
    2518  if (useLightRelocatePair_ != other.useLightRelocatePair_) return false;
    2519  if (useRelocateNeighbors_ != other.useRelocateNeighbors_) return false;
    2520  if (useRelocateSubtrip_ != other.useRelocateSubtrip_) return false;
    2521  if (useExchange_ != other.useExchange_) return false;
    2522  if (useExchangePair_ != other.useExchangePair_) return false;
    2523  if (useExchangeSubtrip_ != other.useExchangeSubtrip_) return false;
    2524  if (useCross_ != other.useCross_) return false;
    2525  if (useCrossExchange_ != other.useCrossExchange_) return false;
    2526  if (useRelocateExpensiveChain_ != other.useRelocateExpensiveChain_) return false;
    2527  if (useTwoOpt_ != other.useTwoOpt_) return false;
    2528  if (useOrOpt_ != other.useOrOpt_) return false;
    2529  if (useLinKernighan_ != other.useLinKernighan_) return false;
    2530  if (useTspOpt_ != other.useTspOpt_) return false;
    2531  if (useMakeActive_ != other.useMakeActive_) return false;
    2532  if (useRelocateAndMakeActive_ != other.useRelocateAndMakeActive_) return false;
    2533  if (useMakeInactive_ != other.useMakeInactive_) return false;
    2534  if (useMakeChainInactive_ != other.useMakeChainInactive_) return false;
    2535  if (useSwapActive_ != other.useSwapActive_) return false;
    2536  if (useExtendedSwapActive_ != other.useExtendedSwapActive_) return false;
    2537  if (useNodePairSwapActive_ != other.useNodePairSwapActive_) return false;
    2538  if (usePathLns_ != other.usePathLns_) return false;
    2539  if (useFullPathLns_ != other.useFullPathLns_) return false;
    2540  if (useTspLns_ != other.useTspLns_) return false;
    2541  if (useInactiveLns_ != other.useInactiveLns_) return false;
    2542  if (!unknownFields.equals(other.unknownFields)) return false;
    2543  return true;
    2544  }
    2545 
    2546  @java.lang.Override
    2547  public int hashCode() {
    2548  if (memoizedHashCode != 0) {
    2549  return memoizedHashCode;
    2550  }
    2551  int hash = 41;
    2552  hash = (19 * hash) + getDescriptor().hashCode();
    2553  hash = (37 * hash) + USE_RELOCATE_FIELD_NUMBER;
    2554  hash = (53 * hash) + useRelocate_;
    2555  hash = (37 * hash) + USE_RELOCATE_PAIR_FIELD_NUMBER;
    2556  hash = (53 * hash) + useRelocatePair_;
    2557  hash = (37 * hash) + USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER;
    2558  hash = (53 * hash) + useLightRelocatePair_;
    2559  hash = (37 * hash) + USE_RELOCATE_NEIGHBORS_FIELD_NUMBER;
    2560  hash = (53 * hash) + useRelocateNeighbors_;
    2561  hash = (37 * hash) + USE_RELOCATE_SUBTRIP_FIELD_NUMBER;
    2562  hash = (53 * hash) + useRelocateSubtrip_;
    2563  hash = (37 * hash) + USE_EXCHANGE_FIELD_NUMBER;
    2564  hash = (53 * hash) + useExchange_;
    2565  hash = (37 * hash) + USE_EXCHANGE_PAIR_FIELD_NUMBER;
    2566  hash = (53 * hash) + useExchangePair_;
    2567  hash = (37 * hash) + USE_EXCHANGE_SUBTRIP_FIELD_NUMBER;
    2568  hash = (53 * hash) + useExchangeSubtrip_;
    2569  hash = (37 * hash) + USE_CROSS_FIELD_NUMBER;
    2570  hash = (53 * hash) + useCross_;
    2571  hash = (37 * hash) + USE_CROSS_EXCHANGE_FIELD_NUMBER;
    2572  hash = (53 * hash) + useCrossExchange_;
    2573  hash = (37 * hash) + USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER;
    2574  hash = (53 * hash) + useRelocateExpensiveChain_;
    2575  hash = (37 * hash) + USE_TWO_OPT_FIELD_NUMBER;
    2576  hash = (53 * hash) + useTwoOpt_;
    2577  hash = (37 * hash) + USE_OR_OPT_FIELD_NUMBER;
    2578  hash = (53 * hash) + useOrOpt_;
    2579  hash = (37 * hash) + USE_LIN_KERNIGHAN_FIELD_NUMBER;
    2580  hash = (53 * hash) + useLinKernighan_;
    2581  hash = (37 * hash) + USE_TSP_OPT_FIELD_NUMBER;
    2582  hash = (53 * hash) + useTspOpt_;
    2583  hash = (37 * hash) + USE_MAKE_ACTIVE_FIELD_NUMBER;
    2584  hash = (53 * hash) + useMakeActive_;
    2585  hash = (37 * hash) + USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER;
    2586  hash = (53 * hash) + useRelocateAndMakeActive_;
    2587  hash = (37 * hash) + USE_MAKE_INACTIVE_FIELD_NUMBER;
    2588  hash = (53 * hash) + useMakeInactive_;
    2589  hash = (37 * hash) + USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER;
    2590  hash = (53 * hash) + useMakeChainInactive_;
    2591  hash = (37 * hash) + USE_SWAP_ACTIVE_FIELD_NUMBER;
    2592  hash = (53 * hash) + useSwapActive_;
    2593  hash = (37 * hash) + USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER;
    2594  hash = (53 * hash) + useExtendedSwapActive_;
    2595  hash = (37 * hash) + USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER;
    2596  hash = (53 * hash) + useNodePairSwapActive_;
    2597  hash = (37 * hash) + USE_PATH_LNS_FIELD_NUMBER;
    2598  hash = (53 * hash) + usePathLns_;
    2599  hash = (37 * hash) + USE_FULL_PATH_LNS_FIELD_NUMBER;
    2600  hash = (53 * hash) + useFullPathLns_;
    2601  hash = (37 * hash) + USE_TSP_LNS_FIELD_NUMBER;
    2602  hash = (53 * hash) + useTspLns_;
    2603  hash = (37 * hash) + USE_INACTIVE_LNS_FIELD_NUMBER;
    2604  hash = (53 * hash) + useInactiveLns_;
    2605  hash = (29 * hash) + unknownFields.hashCode();
    2606  memoizedHashCode = hash;
    2607  return hash;
    2608  }
    2609 
    2611  java.nio.ByteBuffer data)
    2612  throws com.google.protobuf.InvalidProtocolBufferException {
    2613  return PARSER.parseFrom(data);
    2614  }
    2616  java.nio.ByteBuffer data,
    2617  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2618  throws com.google.protobuf.InvalidProtocolBufferException {
    2619  return PARSER.parseFrom(data, extensionRegistry);
    2620  }
    2622  com.google.protobuf.ByteString data)
    2623  throws com.google.protobuf.InvalidProtocolBufferException {
    2624  return PARSER.parseFrom(data);
    2625  }
    2627  com.google.protobuf.ByteString data,
    2628  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2629  throws com.google.protobuf.InvalidProtocolBufferException {
    2630  return PARSER.parseFrom(data, extensionRegistry);
    2631  }
    2633  throws com.google.protobuf.InvalidProtocolBufferException {
    2634  return PARSER.parseFrom(data);
    2635  }
    2637  byte[] data,
    2638  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2639  throws com.google.protobuf.InvalidProtocolBufferException {
    2640  return PARSER.parseFrom(data, extensionRegistry);
    2641  }
    2643  throws java.io.IOException {
    2644  return com.google.protobuf.GeneratedMessageV3
    2645  .parseWithIOException(PARSER, input);
    2646  }
    2648  java.io.InputStream input,
    2649  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2650  throws java.io.IOException {
    2651  return com.google.protobuf.GeneratedMessageV3
    2652  .parseWithIOException(PARSER, input, extensionRegistry);
    2653  }
    2655  throws java.io.IOException {
    2656  return com.google.protobuf.GeneratedMessageV3
    2657  .parseDelimitedWithIOException(PARSER, input);
    2658  }
    2660  java.io.InputStream input,
    2661  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2662  throws java.io.IOException {
    2663  return com.google.protobuf.GeneratedMessageV3
    2664  .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    2665  }
    2667  com.google.protobuf.CodedInputStream input)
    2668  throws java.io.IOException {
    2669  return com.google.protobuf.GeneratedMessageV3
    2670  .parseWithIOException(PARSER, input);
    2671  }
    2673  com.google.protobuf.CodedInputStream input,
    2674  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2675  throws java.io.IOException {
    2676  return com.google.protobuf.GeneratedMessageV3
    2677  .parseWithIOException(PARSER, input, extensionRegistry);
    2678  }
    2679 
    2680  @java.lang.Override
    2681  public Builder newBuilderForType() { return newBuilder(); }
    2682  public static Builder newBuilder() {
    2683  return DEFAULT_INSTANCE.toBuilder();
    2684  }
    2686  return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    2687  }
    2688  @java.lang.Override
    2689  public Builder toBuilder() {
    2690  return this == DEFAULT_INSTANCE
    2691  ? new Builder() : new Builder().mergeFrom(this);
    2692  }
    2693 
    2694  @java.lang.Override
    2696  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    2697  Builder builder = new Builder(parent);
    2698  return builder;
    2699  }
    2708  public static final class Builder extends
    2709  com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
    2710  // @@protoc_insertion_point(builder_implements:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    2712  public static final com.google.protobuf.Descriptors.Descriptor
    2714  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    2715  }
    2716 
    2717  @java.lang.Override
    2718  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    2720  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable
    2721  .ensureFieldAccessorsInitialized(
    2723  }
    2724 
    2725  // Construct using com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.newBuilder()
    2726  private Builder() {
    2727  maybeForceBuilderInitialization();
    2728  }
    2729 
    2730  private Builder(
    2731  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    2732  super(parent);
    2733  maybeForceBuilderInitialization();
    2734  }
    2735  private void maybeForceBuilderInitialization() {
    2736  if (com.google.protobuf.GeneratedMessageV3
    2737  .alwaysUseFieldBuilders) {
    2738  }
    2739  }
    2740  @java.lang.Override
    2741  public Builder clear() {
    2742  super.clear();
    2743  useRelocate_ = 0;
    2744 
    2745  useRelocatePair_ = 0;
    2746 
    2747  useLightRelocatePair_ = 0;
    2748 
    2749  useRelocateNeighbors_ = 0;
    2750 
    2751  useRelocateSubtrip_ = 0;
    2752 
    2753  useExchange_ = 0;
    2754 
    2755  useExchangePair_ = 0;
    2756 
    2757  useExchangeSubtrip_ = 0;
    2758 
    2759  useCross_ = 0;
    2760 
    2761  useCrossExchange_ = 0;
    2762 
    2763  useRelocateExpensiveChain_ = 0;
    2764 
    2765  useTwoOpt_ = 0;
    2766 
    2767  useOrOpt_ = 0;
    2768 
    2769  useLinKernighan_ = 0;
    2770 
    2771  useTspOpt_ = 0;
    2772 
    2773  useMakeActive_ = 0;
    2774 
    2775  useRelocateAndMakeActive_ = 0;
    2776 
    2777  useMakeInactive_ = 0;
    2778 
    2779  useMakeChainInactive_ = 0;
    2780 
    2781  useSwapActive_ = 0;
    2782 
    2783  useExtendedSwapActive_ = 0;
    2784 
    2785  useNodePairSwapActive_ = 0;
    2786 
    2787  usePathLns_ = 0;
    2788 
    2789  useFullPathLns_ = 0;
    2790 
    2791  useTspLns_ = 0;
    2792 
    2793  useInactiveLns_ = 0;
    2794 
    2795  return this;
    2796  }
    2797 
    2798  @java.lang.Override
    2799  public com.google.protobuf.Descriptors.Descriptor
    2801  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
    2802  }
    2803 
    2804  @java.lang.Override
    2807  }
    2808 
    2809  @java.lang.Override
    2812  if (!result.isInitialized()) {
    2813  throw newUninitializedMessageException(result);
    2814  }
    2815  return result;
    2816  }
    2817 
    2818  @java.lang.Override
    2821  result.useRelocate_ = useRelocate_;
    2822  result.useRelocatePair_ = useRelocatePair_;
    2823  result.useLightRelocatePair_ = useLightRelocatePair_;
    2824  result.useRelocateNeighbors_ = useRelocateNeighbors_;
    2825  result.useRelocateSubtrip_ = useRelocateSubtrip_;
    2826  result.useExchange_ = useExchange_;
    2827  result.useExchangePair_ = useExchangePair_;
    2828  result.useExchangeSubtrip_ = useExchangeSubtrip_;
    2829  result.useCross_ = useCross_;
    2830  result.useCrossExchange_ = useCrossExchange_;
    2831  result.useRelocateExpensiveChain_ = useRelocateExpensiveChain_;
    2832  result.useTwoOpt_ = useTwoOpt_;
    2833  result.useOrOpt_ = useOrOpt_;
    2834  result.useLinKernighan_ = useLinKernighan_;
    2835  result.useTspOpt_ = useTspOpt_;
    2836  result.useMakeActive_ = useMakeActive_;
    2837  result.useRelocateAndMakeActive_ = useRelocateAndMakeActive_;
    2838  result.useMakeInactive_ = useMakeInactive_;
    2839  result.useMakeChainInactive_ = useMakeChainInactive_;
    2840  result.useSwapActive_ = useSwapActive_;
    2841  result.useExtendedSwapActive_ = useExtendedSwapActive_;
    2842  result.useNodePairSwapActive_ = useNodePairSwapActive_;
    2843  result.usePathLns_ = usePathLns_;
    2844  result.useFullPathLns_ = useFullPathLns_;
    2845  result.useTspLns_ = useTspLns_;
    2846  result.useInactiveLns_ = useInactiveLns_;
    2847  onBuilt();
    2848  return result;
    2849  }
    2850 
    2851  @java.lang.Override
    2852  public Builder clone() {
    2853  return super.clone();
    2854  }
    2855  @java.lang.Override
    2857  com.google.protobuf.Descriptors.FieldDescriptor field,
    2858  java.lang.Object value) {
    2859  return super.setField(field, value);
    2860  }
    2861  @java.lang.Override
    2863  com.google.protobuf.Descriptors.FieldDescriptor field) {
    2864  return super.clearField(field);
    2865  }
    2866  @java.lang.Override
    2868  com.google.protobuf.Descriptors.OneofDescriptor oneof) {
    2869  return super.clearOneof(oneof);
    2870  }
    2871  @java.lang.Override
    2873  com.google.protobuf.Descriptors.FieldDescriptor field,
    2874  int index, java.lang.Object value) {
    2875  return super.setRepeatedField(field, index, value);
    2876  }
    2877  @java.lang.Override
    2879  com.google.protobuf.Descriptors.FieldDescriptor field,
    2880  java.lang.Object value) {
    2881  return super.addRepeatedField(field, value);
    2882  }
    2883  @java.lang.Override
    2884  public Builder mergeFrom(com.google.protobuf.Message other) {
    2887  } else {
    2888  super.mergeFrom(other);
    2889  return this;
    2890  }
    2891  }
    2892 
    2895  if (other.useRelocate_ != 0) {
    2896  setUseRelocateValue(other.getUseRelocateValue());
    2897  }
    2898  if (other.useRelocatePair_ != 0) {
    2899  setUseRelocatePairValue(other.getUseRelocatePairValue());
    2900  }
    2901  if (other.useLightRelocatePair_ != 0) {
    2902  setUseLightRelocatePairValue(other.getUseLightRelocatePairValue());
    2903  }
    2904  if (other.useRelocateNeighbors_ != 0) {
    2905  setUseRelocateNeighborsValue(other.getUseRelocateNeighborsValue());
    2906  }
    2907  if (other.useRelocateSubtrip_ != 0) {
    2908  setUseRelocateSubtripValue(other.getUseRelocateSubtripValue());
    2909  }
    2910  if (other.useExchange_ != 0) {
    2911  setUseExchangeValue(other.getUseExchangeValue());
    2912  }
    2913  if (other.useExchangePair_ != 0) {
    2914  setUseExchangePairValue(other.getUseExchangePairValue());
    2915  }
    2916  if (other.useExchangeSubtrip_ != 0) {
    2917  setUseExchangeSubtripValue(other.getUseExchangeSubtripValue());
    2918  }
    2919  if (other.useCross_ != 0) {
    2920  setUseCrossValue(other.getUseCrossValue());
    2921  }
    2922  if (other.useCrossExchange_ != 0) {
    2923  setUseCrossExchangeValue(other.getUseCrossExchangeValue());
    2924  }
    2925  if (other.useRelocateExpensiveChain_ != 0) {
    2926  setUseRelocateExpensiveChainValue(other.getUseRelocateExpensiveChainValue());
    2927  }
    2928  if (other.useTwoOpt_ != 0) {
    2929  setUseTwoOptValue(other.getUseTwoOptValue());
    2930  }
    2931  if (other.useOrOpt_ != 0) {
    2932  setUseOrOptValue(other.getUseOrOptValue());
    2933  }
    2934  if (other.useLinKernighan_ != 0) {
    2935  setUseLinKernighanValue(other.getUseLinKernighanValue());
    2936  }
    2937  if (other.useTspOpt_ != 0) {
    2938  setUseTspOptValue(other.getUseTspOptValue());
    2939  }
    2940  if (other.useMakeActive_ != 0) {
    2941  setUseMakeActiveValue(other.getUseMakeActiveValue());
    2942  }
    2943  if (other.useRelocateAndMakeActive_ != 0) {
    2944  setUseRelocateAndMakeActiveValue(other.getUseRelocateAndMakeActiveValue());
    2945  }
    2946  if (other.useMakeInactive_ != 0) {
    2947  setUseMakeInactiveValue(other.getUseMakeInactiveValue());
    2948  }
    2949  if (other.useMakeChainInactive_ != 0) {
    2950  setUseMakeChainInactiveValue(other.getUseMakeChainInactiveValue());
    2951  }
    2952  if (other.useSwapActive_ != 0) {
    2953  setUseSwapActiveValue(other.getUseSwapActiveValue());
    2954  }
    2955  if (other.useExtendedSwapActive_ != 0) {
    2956  setUseExtendedSwapActiveValue(other.getUseExtendedSwapActiveValue());
    2957  }
    2958  if (other.useNodePairSwapActive_ != 0) {
    2959  setUseNodePairSwapActiveValue(other.getUseNodePairSwapActiveValue());
    2960  }
    2961  if (other.usePathLns_ != 0) {
    2962  setUsePathLnsValue(other.getUsePathLnsValue());
    2963  }
    2964  if (other.useFullPathLns_ != 0) {
    2965  setUseFullPathLnsValue(other.getUseFullPathLnsValue());
    2966  }
    2967  if (other.useTspLns_ != 0) {
    2968  setUseTspLnsValue(other.getUseTspLnsValue());
    2969  }
    2970  if (other.useInactiveLns_ != 0) {
    2971  setUseInactiveLnsValue(other.getUseInactiveLnsValue());
    2972  }
    2973  this.mergeUnknownFields(other.unknownFields);
    2974  onChanged();
    2975  return this;
    2976  }
    2977 
    2978  @java.lang.Override
    2979  public final boolean isInitialized() {
    2980  return true;
    2981  }
    2982 
    2983  @java.lang.Override
    2985  com.google.protobuf.CodedInputStream input,
    2986  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    2987  throws java.io.IOException {
    2989  try {
    2990  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
    2991  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    2993  throw e.unwrapIOException();
    2994  } finally {
    2995  if (parsedMessage != null) {
    2996  mergeFrom(parsedMessage);
    2997  }
    2998  }
    2999  return this;
    3000  }
    3001 
    3002  private int useRelocate_ = 0;
    3018  public int getUseRelocateValue() {
    3019  return useRelocate_;
    3020  }
    3036  public Builder setUseRelocateValue(int value) {
    3037  useRelocate_ = value;
    3038  onChanged();
    3039  return this;
    3040  }
    3057  @SuppressWarnings("deprecation")
    3059  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3060  }
    3077  if (value == null) {
    3078  throw new NullPointerException();
    3079  }
    3080 
    3081  useRelocate_ = value.getNumber();
    3082  onChanged();
    3083  return this;
    3084  }
    3101 
    3102  useRelocate_ = 0;
    3103  onChanged();
    3104  return this;
    3105  }
    3106 
    3107  private int useRelocatePair_ = 0;
    3124  return useRelocatePair_;
    3125  }
    3141  public Builder setUseRelocatePairValue(int value) {
    3142  useRelocatePair_ = value;
    3143  onChanged();
    3144  return this;
    3145  }
    3162  @SuppressWarnings("deprecation")
    3164  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3165  }
    3182  if (value == null) {
    3183  throw new NullPointerException();
    3184  }
    3185 
    3186  useRelocatePair_ = value.getNumber();
    3187  onChanged();
    3188  return this;
    3189  }
    3206 
    3207  useRelocatePair_ = 0;
    3208  onChanged();
    3209  return this;
    3210  }
    3211 
    3212  private int useLightRelocatePair_ = 0;
    3227  return useLightRelocatePair_;
    3228  }
    3243  useLightRelocatePair_ = value;
    3244  onChanged();
    3245  return this;
    3246  }
    3261  @SuppressWarnings("deprecation")
    3263  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3264  }
    3279  if (value == null) {
    3280  throw new NullPointerException();
    3281  }
    3282 
    3283  useLightRelocatePair_ = value.getNumber();
    3284  onChanged();
    3285  return this;
    3286  }
    3301 
    3302  useLightRelocatePair_ = 0;
    3303  onChanged();
    3304  return this;
    3305  }
    3306 
    3307  private int useRelocateNeighbors_ = 0;
    3337  return useRelocateNeighbors_;
    3338  }
    3368  useRelocateNeighbors_ = value;
    3369  onChanged();
    3370  return this;
    3371  }
    3401  @SuppressWarnings("deprecation")
    3403  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3404  }
    3434  if (value == null) {
    3435  throw new NullPointerException();
    3436  }
    3437 
    3438  useRelocateNeighbors_ = value.getNumber();
    3439  onChanged();
    3440  return this;
    3441  }
    3471 
    3472  useRelocateNeighbors_ = 0;
    3473  onChanged();
    3474  return this;
    3475  }
    3476 
    3477  private int useRelocateSubtrip_ = 0;
    3497  return useRelocateSubtrip_;
    3498  }
    3518  useRelocateSubtrip_ = value;
    3519  onChanged();
    3520  return this;
    3521  }
    3541  @SuppressWarnings("deprecation")
    3543  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3544  }
    3564  if (value == null) {
    3565  throw new NullPointerException();
    3566  }
    3567 
    3568  useRelocateSubtrip_ = value.getNumber();
    3569  onChanged();
    3570  return this;
    3571  }
    3591 
    3592  useRelocateSubtrip_ = 0;
    3593  onChanged();
    3594  return this;
    3595  }
    3596 
    3597  private int useExchange_ = 0;
    3611  public int getUseExchangeValue() {
    3612  return useExchange_;
    3613  }
    3627  public Builder setUseExchangeValue(int value) {
    3628  useExchange_ = value;
    3629  onChanged();
    3630  return this;
    3631  }
    3646  @SuppressWarnings("deprecation")
    3648  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3649  }
    3664  if (value == null) {
    3665  throw new NullPointerException();
    3666  }
    3667 
    3668  useExchange_ = value.getNumber();
    3669  onChanged();
    3670  return this;
    3671  }
    3686 
    3687  useExchange_ = 0;
    3688  onChanged();
    3689  return this;
    3690  }
    3691 
    3692  private int useExchangePair_ = 0;
    3707  return useExchangePair_;
    3708  }
    3722  public Builder setUseExchangePairValue(int value) {
    3723  useExchangePair_ = value;
    3724  onChanged();
    3725  return this;
    3726  }
    3741  @SuppressWarnings("deprecation")
    3743  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3744  }
    3759  if (value == null) {
    3760  throw new NullPointerException();
    3761  }
    3762 
    3763  useExchangePair_ = value.getNumber();
    3764  onChanged();
    3765  return this;
    3766  }
    3781 
    3782  useExchangePair_ = 0;
    3783  onChanged();
    3784  return this;
    3785  }
    3786 
    3787  private int useExchangeSubtrip_ = 0;
    3797  return useExchangeSubtrip_;
    3798  }
    3808  useExchangeSubtrip_ = value;
    3809  onChanged();
    3810  return this;
    3811  }
    3821  @SuppressWarnings("deprecation")
    3823  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3824  }
    3834  if (value == null) {
    3835  throw new NullPointerException();
    3836  }
    3837 
    3838  useExchangeSubtrip_ = value.getNumber();
    3839  onChanged();
    3840  return this;
    3841  }
    3851 
    3852  useExchangeSubtrip_ = 0;
    3853  onChanged();
    3854  return this;
    3855  }
    3856 
    3857  private int useCross_ = 0;
    3873  public int getUseCrossValue() {
    3874  return useCross_;
    3875  }
    3891  public Builder setUseCrossValue(int value) {
    3892  useCross_ = value;
    3893  onChanged();
    3894  return this;
    3895  }
    3912  @SuppressWarnings("deprecation")
    3914  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3915  }
    3932  if (value == null) {
    3933  throw new NullPointerException();
    3934  }
    3935 
    3936  useCross_ = value.getNumber();
    3937  onChanged();
    3938  return this;
    3939  }
    3956 
    3957  useCross_ = 0;
    3958  onChanged();
    3959  return this;
    3960  }
    3961 
    3962  private int useCrossExchange_ = 0;
    3971  return useCrossExchange_;
    3972  }
    3980  public Builder setUseCrossExchangeValue(int value) {
    3981  useCrossExchange_ = value;
    3982  onChanged();
    3983  return this;
    3984  }
    3993  @SuppressWarnings("deprecation")
    3995  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    3996  }
    4005  if (value == null) {
    4006  throw new NullPointerException();
    4007  }
    4008 
    4009  useCrossExchange_ = value.getNumber();
    4010  onChanged();
    4011  return this;
    4012  }
    4021 
    4022  useCrossExchange_ = 0;
    4023  onChanged();
    4024  return this;
    4025  }
    4026 
    4027  private int useRelocateExpensiveChain_ = 0;
    4045  return useRelocateExpensiveChain_;
    4046  }
    4064  useRelocateExpensiveChain_ = value;
    4065  onChanged();
    4066  return this;
    4067  }
    4085  @SuppressWarnings("deprecation")
    4086  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateExpensiveChain_);
    4087  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4088  }
    4106  if (value == null) {
    4107  throw new NullPointerException();
    4108  }
    4109 
    4110  useRelocateExpensiveChain_ = value.getNumber();
    4111  onChanged();
    4112  return this;
    4113  }
    4131 
    4132  useRelocateExpensiveChain_ = 0;
    4133  onChanged();
    4134  return this;
    4135  }
    4136 
    4137  private int useTwoOpt_ = 0;
    4154  public int getUseTwoOptValue() {
    4155  return useTwoOpt_;
    4156  }
    4173  public Builder setUseTwoOptValue(int value) {
    4174  useTwoOpt_ = value;
    4175  onChanged();
    4176  return this;
    4177  }
    4195  @SuppressWarnings("deprecation")
    4197  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4198  }
    4216  if (value == null) {
    4217  throw new NullPointerException();
    4218  }
    4219 
    4220  useTwoOpt_ = value.getNumber();
    4221  onChanged();
    4222  return this;
    4223  }
    4241 
    4242  useTwoOpt_ = 0;
    4243  onChanged();
    4244  return this;
    4245  }
    4246 
    4247  private int useOrOpt_ = 0;
    4265  public int getUseOrOptValue() {
    4266  return useOrOpt_;
    4267  }
    4285  public Builder setUseOrOptValue(int value) {
    4286  useOrOpt_ = value;
    4287  onChanged();
    4288  return this;
    4289  }
    4308  @SuppressWarnings("deprecation")
    4310  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4311  }
    4330  if (value == null) {
    4331  throw new NullPointerException();
    4332  }
    4333 
    4334  useOrOpt_ = value.getNumber();
    4335  onChanged();
    4336  return this;
    4337  }
    4356 
    4357  useOrOpt_ = 0;
    4358  onChanged();
    4359  return this;
    4360  }
    4361 
    4362  private int useLinKernighan_ = 0;
    4374  return useLinKernighan_;
    4375  }
    4386  public Builder setUseLinKernighanValue(int value) {
    4387  useLinKernighan_ = value;
    4388  onChanged();
    4389  return this;
    4390  }
    4402  @SuppressWarnings("deprecation")
    4404  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4405  }
    4417  if (value == null) {
    4418  throw new NullPointerException();
    4419  }
    4420 
    4421  useLinKernighan_ = value.getNumber();
    4422  onChanged();
    4423  return this;
    4424  }
    4436 
    4437  useLinKernighan_ = 0;
    4438  onChanged();
    4439  return this;
    4440  }
    4441 
    4442  private int useTspOpt_ = 0;
    4455  public int getUseTspOptValue() {
    4456  return useTspOpt_;
    4457  }
    4470  public Builder setUseTspOptValue(int value) {
    4471  useTspOpt_ = value;
    4472  onChanged();
    4473  return this;
    4474  }
    4488  @SuppressWarnings("deprecation")
    4490  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4491  }
    4505  if (value == null) {
    4506  throw new NullPointerException();
    4507  }
    4508 
    4509  useTspOpt_ = value.getNumber();
    4510  onChanged();
    4511  return this;
    4512  }
    4526 
    4527  useTspOpt_ = 0;
    4528  onChanged();
    4529  return this;
    4530  }
    4531 
    4532  private int useMakeActive_ = 0;
    4546  public int getUseMakeActiveValue() {
    4547  return useMakeActive_;
    4548  }
    4562  public Builder setUseMakeActiveValue(int value) {
    4563  useMakeActive_ = value;
    4564  onChanged();
    4565  return this;
    4566  }
    4581  @SuppressWarnings("deprecation")
    4583  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4584  }
    4599  if (value == null) {
    4600  throw new NullPointerException();
    4601  }
    4602 
    4603  useMakeActive_ = value.getNumber();
    4604  onChanged();
    4605  return this;
    4606  }
    4621 
    4622  useMakeActive_ = 0;
    4623  onChanged();
    4624  return this;
    4625  }
    4626 
    4627  private int useRelocateAndMakeActive_ = 0;
    4645  return useRelocateAndMakeActive_;
    4646  }
    4664  useRelocateAndMakeActive_ = value;
    4665  onChanged();
    4666  return this;
    4667  }
    4685  @SuppressWarnings("deprecation")
    4686  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateAndMakeActive_);
    4687  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4688  }
    4706  if (value == null) {
    4707  throw new NullPointerException();
    4708  }
    4709 
    4710  useRelocateAndMakeActive_ = value.getNumber();
    4711  onChanged();
    4712  return this;
    4713  }
    4731 
    4732  useRelocateAndMakeActive_ = 0;
    4733  onChanged();
    4734  return this;
    4735  }
    4736 
    4737  private int useMakeInactive_ = 0;
    4750  return useMakeInactive_;
    4751  }
    4763  public Builder setUseMakeInactiveValue(int value) {
    4764  useMakeInactive_ = value;
    4765  onChanged();
    4766  return this;
    4767  }
    4780  @SuppressWarnings("deprecation")
    4782  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4783  }
    4796  if (value == null) {
    4797  throw new NullPointerException();
    4798  }
    4799 
    4800  useMakeInactive_ = value.getNumber();
    4801  onChanged();
    4802  return this;
    4803  }
    4816 
    4817  useMakeInactive_ = 0;
    4818  onChanged();
    4819  return this;
    4820  }
    4821 
    4822  private int useMakeChainInactive_ = 0;
    4836  return useMakeChainInactive_;
    4837  }
    4851  useMakeChainInactive_ = value;
    4852  onChanged();
    4853  return this;
    4854  }
    4868  @SuppressWarnings("deprecation")
    4870  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4871  }
    4885  if (value == null) {
    4886  throw new NullPointerException();
    4887  }
    4888 
    4889  useMakeChainInactive_ = value.getNumber();
    4890  onChanged();
    4891  return this;
    4892  }
    4906 
    4907  useMakeChainInactive_ = 0;
    4908  onChanged();
    4909  return this;
    4910  }
    4911 
    4912  private int useSwapActive_ = 0;
    4924  public int getUseSwapActiveValue() {
    4925  return useSwapActive_;
    4926  }
    4938  public Builder setUseSwapActiveValue(int value) {
    4939  useSwapActive_ = value;
    4940  onChanged();
    4941  return this;
    4942  }
    4955  @SuppressWarnings("deprecation")
    4957  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    4958  }
    4971  if (value == null) {
    4972  throw new NullPointerException();
    4973  }
    4974 
    4975  useSwapActive_ = value.getNumber();
    4976  onChanged();
    4977  return this;
    4978  }
    4991 
    4992  useSwapActive_ = 0;
    4993  onChanged();
    4994  return this;
    4995  }
    4996 
    4997  private int useExtendedSwapActive_ = 0;
    5015  return useExtendedSwapActive_;
    5016  }
    5034  useExtendedSwapActive_ = value;
    5035  onChanged();
    5036  return this;
    5037  }
    5055  @SuppressWarnings("deprecation")
    5056  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExtendedSwapActive_);
    5057  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5058  }
    5076  if (value == null) {
    5077  throw new NullPointerException();
    5078  }
    5079 
    5080  useExtendedSwapActive_ = value.getNumber();
    5081  onChanged();
    5082  return this;
    5083  }
    5101 
    5102  useExtendedSwapActive_ = 0;
    5103  onChanged();
    5104  return this;
    5105  }
    5106 
    5107  private int useNodePairSwapActive_ = 0;
    5126  return useNodePairSwapActive_;
    5127  }
    5146  useNodePairSwapActive_ = value;
    5147  onChanged();
    5148  return this;
    5149  }
    5168  @SuppressWarnings("deprecation")
    5169  com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useNodePairSwapActive_);
    5170  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5171  }
    5190  if (value == null) {
    5191  throw new NullPointerException();
    5192  }
    5193 
    5194  useNodePairSwapActive_ = value.getNumber();
    5195  onChanged();
    5196  return this;
    5197  }
    5216 
    5217  useNodePairSwapActive_ = 0;
    5218  onChanged();
    5219  return this;
    5220  }
    5221 
    5222  private int usePathLns_ = 0;
    5237  public int getUsePathLnsValue() {
    5238  return usePathLns_;
    5239  }
    5254  public Builder setUsePathLnsValue(int value) {
    5255  usePathLns_ = value;
    5256  onChanged();
    5257  return this;
    5258  }
    5274  @SuppressWarnings("deprecation")
    5276  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5277  }
    5293  if (value == null) {
    5294  throw new NullPointerException();
    5295  }
    5296 
    5297  usePathLns_ = value.getNumber();
    5298  onChanged();
    5299  return this;
    5300  }
    5316 
    5317  usePathLns_ = 0;
    5318  onChanged();
    5319  return this;
    5320  }
    5321 
    5322  private int useFullPathLns_ = 0;
    5330  public int getUseFullPathLnsValue() {
    5331  return useFullPathLns_;
    5332  }
    5340  public Builder setUseFullPathLnsValue(int value) {
    5341  useFullPathLns_ = value;
    5342  onChanged();
    5343  return this;
    5344  }
    5353  @SuppressWarnings("deprecation")
    5355  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5356  }
    5365  if (value == null) {
    5366  throw new NullPointerException();
    5367  }
    5368 
    5369  useFullPathLns_ = value.getNumber();
    5370  onChanged();
    5371  return this;
    5372  }
    5381 
    5382  useFullPathLns_ = 0;
    5383  onChanged();
    5384  return this;
    5385  }
    5386 
    5387  private int useTspLns_ = 0;
    5400  public int getUseTspLnsValue() {
    5401  return useTspLns_;
    5402  }
    5415  public Builder setUseTspLnsValue(int value) {
    5416  useTspLns_ = value;
    5417  onChanged();
    5418  return this;
    5419  }
    5433  @SuppressWarnings("deprecation")
    5435  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5436  }
    5450  if (value == null) {
    5451  throw new NullPointerException();
    5452  }
    5453 
    5454  useTspLns_ = value.getNumber();
    5455  onChanged();
    5456  return this;
    5457  }
    5471 
    5472  useTspLns_ = 0;
    5473  onChanged();
    5474  return this;
    5475  }
    5476 
    5477  private int useInactiveLns_ = 0;
    5487  public int getUseInactiveLnsValue() {
    5488  return useInactiveLns_;
    5489  }
    5499  public Builder setUseInactiveLnsValue(int value) {
    5500  useInactiveLns_ = value;
    5501  onChanged();
    5502  return this;
    5503  }
    5514  @SuppressWarnings("deprecation")
    5516  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5517  }
    5528  if (value == null) {
    5529  throw new NullPointerException();
    5530  }
    5531 
    5532  useInactiveLns_ = value.getNumber();
    5533  onChanged();
    5534  return this;
    5535  }
    5546 
    5547  useInactiveLns_ = 0;
    5548  onChanged();
    5549  return this;
    5550  }
    5551  @java.lang.Override
    5553  final com.google.protobuf.UnknownFieldSet unknownFields) {
    5554  return super.setUnknownFields(unknownFields);
    5555  }
    5556 
    5557  @java.lang.Override
    5559  final com.google.protobuf.UnknownFieldSet unknownFields) {
    5560  return super.mergeUnknownFields(unknownFields);
    5561  }
    5562 
    5563 
    5564  // @@protoc_insertion_point(builder_scope:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    5565  }
    5566 
    5567  // @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
    5569  static {
    5571  }
    5572 
    5574  return DEFAULT_INSTANCE;
    5575  }
    5576 
    5577  private static final com.google.protobuf.Parser<LocalSearchNeighborhoodOperators>
    5578  PARSER = new com.google.protobuf.AbstractParser<LocalSearchNeighborhoodOperators>() {
    5579  @java.lang.Override
    5580  public LocalSearchNeighborhoodOperators parsePartialFrom(
    5581  com.google.protobuf.CodedInputStream input,
    5582  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    5583  throws com.google.protobuf.InvalidProtocolBufferException {
    5584  return new LocalSearchNeighborhoodOperators(input, extensionRegistry);
    5585  }
    5586  };
    5587 
    5588  public static com.google.protobuf.Parser<LocalSearchNeighborhoodOperators> parser() {
    5589  return PARSER;
    5590  }
    5591 
    5592  @java.lang.Override
    5594  return PARSER;
    5595  }
    5596 
    5597  @java.lang.Override
    5599  return DEFAULT_INSTANCE;
    5600  }
    5601 
    5602  }
    5603 
    5604  public static final int FIRST_SOLUTION_STRATEGY_FIELD_NUMBER = 1;
    5605  private int firstSolutionStrategy_;
    5614  return firstSolutionStrategy_;
    5615  }
    5624  @SuppressWarnings("deprecation")
    5626  return result == null ? com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNRECOGNIZED : result;
    5627  }
    5628 
    5630  private boolean useUnfilteredFirstSolutionStrategy_;
    5641  return useUnfilteredFirstSolutionStrategy_;
    5642  }
    5643 
    5644  public static final int SAVINGS_NEIGHBORS_RATIO_FIELD_NUMBER = 14;
    5645  private double savingsNeighborsRatio_;
    5655  public double getSavingsNeighborsRatio() {
    5656  return savingsNeighborsRatio_;
    5657  }
    5658 
    5659  public static final int SAVINGS_MAX_MEMORY_USAGE_BYTES_FIELD_NUMBER = 23;
    5660  private double savingsMaxMemoryUsageBytes_;
    5674  return savingsMaxMemoryUsageBytes_;
    5675  }
    5676 
    5677  public static final int SAVINGS_ADD_REVERSE_ARCS_FIELD_NUMBER = 15;
    5678  private boolean savingsAddReverseArcs_;
    5687  public boolean getSavingsAddReverseArcs() {
    5688  return savingsAddReverseArcs_;
    5689  }
    5690 
    5691  public static final int SAVINGS_ARC_COEFFICIENT_FIELD_NUMBER = 18;
    5692  private double savingsArcCoefficient_;
    5704  public double getSavingsArcCoefficient() {
    5705  return savingsArcCoefficient_;
    5706  }
    5707 
    5708  public static final int SAVINGS_PARALLEL_ROUTES_FIELD_NUMBER = 19;
    5709  private boolean savingsParallelRoutes_;
    5717  public boolean getSavingsParallelRoutes() {
    5718  return savingsParallelRoutes_;
    5719  }
    5720 
    5722  private double cheapestInsertionFarthestSeedsRatio_;
    5733  return cheapestInsertionFarthestSeedsRatio_;
    5734  }
    5735 
    5737  private double cheapestInsertionNeighborsRatio_;
    5749  return cheapestInsertionNeighborsRatio_;
    5750  }
    5751 
    5752  public static final int LOCAL_SEARCH_OPERATORS_FIELD_NUMBER = 3;
    5757  public boolean hasLocalSearchOperators() {
    5758  return localSearchOperators_ != null;
    5759  }
    5764  return localSearchOperators_ == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance() : localSearchOperators_;
    5765  }
    5770  return getLocalSearchOperators();
    5771  }
    5772 
    5774  private int relocateExpensiveChainNumArcsToConsider_;
    5789  return relocateExpensiveChainNumArcsToConsider_;
    5790  }
    5791 
    5792  public static final int LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER = 4;
    5793  private int localSearchMetaheuristic_;
    5802  return localSearchMetaheuristic_;
    5803  }
    5812  @SuppressWarnings("deprecation")
    5815  }
    5816 
    5818  private double guidedLocalSearchLambdaCoefficient_;
    5830  return guidedLocalSearchLambdaCoefficient_;
    5831  }
    5832 
    5833  public static final int USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER = 6;
    5834  private boolean useDepthFirstSearch_;
    5844  public boolean getUseDepthFirstSearch() {
    5845  return useDepthFirstSearch_;
    5846  }
    5847 
    5848  public static final int USE_CP_FIELD_NUMBER = 28;
    5849  private int useCp_;
    5859  public int getUseCpValue() {
    5860  return useCp_;
    5861  }
    5872  @SuppressWarnings("deprecation")
    5874  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5875  }
    5876 
    5877  public static final int USE_CP_SAT_FIELD_NUMBER = 27;
    5878  private int useCpSat_;
    5889  public int getUseCpSatValue() {
    5890  return useCpSat_;
    5891  }
    5903  @SuppressWarnings("deprecation")
    5905  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    5906  }
    5907 
    5908  public static final int OPTIMIZATION_STEP_FIELD_NUMBER = 7;
    5909  private double optimizationStep_;
    5919  public double getOptimizationStep() {
    5920  return optimizationStep_;
    5921  }
    5922 
    5923  public static final int NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER = 17;
    5924  private int numberOfSolutionsToCollect_;
    5934  return numberOfSolutionsToCollect_;
    5935  }
    5936 
    5937  public static final int SOLUTION_LIMIT_FIELD_NUMBER = 8;
    5938  private long solutionLimit_;
    5948  public long getSolutionLimit() {
    5949  return solutionLimit_;
    5950  }
    5951 
    5952  public static final int TIME_LIMIT_FIELD_NUMBER = 9;
    5953  private com.google.protobuf.Duration timeLimit_;
    5961  public boolean hasTimeLimit() {
    5962  return timeLimit_ != null;
    5963  }
    5971  public com.google.protobuf.Duration getTimeLimit() {
    5972  return timeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
    5973  }
    5981  public com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder() {
    5982  return getTimeLimit();
    5983  }
    5984 
    5985  public static final int LNS_TIME_LIMIT_FIELD_NUMBER = 10;
    5986  private com.google.protobuf.Duration lnsTimeLimit_;
    5995  public boolean hasLnsTimeLimit() {
    5996  return lnsTimeLimit_ != null;
    5997  }
    6006  public com.google.protobuf.Duration getLnsTimeLimit() {
    6007  return lnsTimeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
    6008  }
    6017  public com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder() {
    6018  return getLnsTimeLimit();
    6019  }
    6020 
    6021  public static final int USE_FULL_PROPAGATION_FIELD_NUMBER = 11;
    6022  private boolean useFullPropagation_;
    6038  public boolean getUseFullPropagation() {
    6039  return useFullPropagation_;
    6040  }
    6041 
    6042  public static final int LOG_SEARCH_FIELD_NUMBER = 13;
    6043  private boolean logSearch_;
    6062  public boolean getLogSearch() {
    6063  return logSearch_;
    6064  }
    6065 
    6066  public static final int LOG_COST_SCALING_FACTOR_FIELD_NUMBER = 22;
    6067  private double logCostScalingFactor_;
    6076  public double getLogCostScalingFactor() {
    6077  return logCostScalingFactor_;
    6078  }
    6079 
    6080  public static final int LOG_COST_OFFSET_FIELD_NUMBER = 29;
    6081  private double logCostOffset_;
    6085  public double getLogCostOffset() {
    6086  return logCostOffset_;
    6087  }
    6088 
    6089  private byte memoizedIsInitialized = -1;
    6090  @java.lang.Override
    6091  public final boolean isInitialized() {
    6092  byte isInitialized = memoizedIsInitialized;
    6093  if (isInitialized == 1) return true;
    6094  if (isInitialized == 0) return false;
    6095 
    6096  memoizedIsInitialized = 1;
    6097  return true;
    6098  }
    6099 
    6100  @java.lang.Override
    6101  public void writeTo(com.google.protobuf.CodedOutputStream output)
    6102  throws java.io.IOException {
    6103  if (firstSolutionStrategy_ != com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNSET.getNumber()) {
    6104  output.writeEnum(1, firstSolutionStrategy_);
    6105  }
    6106  if (useUnfilteredFirstSolutionStrategy_ != false) {
    6107  output.writeBool(2, useUnfilteredFirstSolutionStrategy_);
    6108  }
    6109  if (localSearchOperators_ != null) {
    6110  output.writeMessage(3, getLocalSearchOperators());
    6111  }
    6112  if (localSearchMetaheuristic_ != com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNSET.getNumber()) {
    6113  output.writeEnum(4, localSearchMetaheuristic_);
    6114  }
    6115  if (guidedLocalSearchLambdaCoefficient_ != 0D) {
    6116  output.writeDouble(5, guidedLocalSearchLambdaCoefficient_);
    6117  }
    6118  if (useDepthFirstSearch_ != false) {
    6119  output.writeBool(6, useDepthFirstSearch_);
    6120  }
    6121  if (optimizationStep_ != 0D) {
    6122  output.writeDouble(7, optimizationStep_);
    6123  }
    6124  if (solutionLimit_ != 0L) {
    6125  output.writeInt64(8, solutionLimit_);
    6126  }
    6127  if (timeLimit_ != null) {
    6128  output.writeMessage(9, getTimeLimit());
    6129  }
    6130  if (lnsTimeLimit_ != null) {
    6131  output.writeMessage(10, getLnsTimeLimit());
    6132  }
    6133  if (useFullPropagation_ != false) {
    6134  output.writeBool(11, useFullPropagation_);
    6135  }
    6136  if (logSearch_ != false) {
    6137  output.writeBool(13, logSearch_);
    6138  }
    6139  if (savingsNeighborsRatio_ != 0D) {
    6140  output.writeDouble(14, savingsNeighborsRatio_);
    6141  }
    6142  if (savingsAddReverseArcs_ != false) {
    6143  output.writeBool(15, savingsAddReverseArcs_);
    6144  }
    6145  if (cheapestInsertionFarthestSeedsRatio_ != 0D) {
    6146  output.writeDouble(16, cheapestInsertionFarthestSeedsRatio_);
    6147  }
    6148  if (numberOfSolutionsToCollect_ != 0) {
    6149  output.writeInt32(17, numberOfSolutionsToCollect_);
    6150  }
    6151  if (savingsArcCoefficient_ != 0D) {
    6152  output.writeDouble(18, savingsArcCoefficient_);
    6153  }
    6154  if (savingsParallelRoutes_ != false) {
    6155  output.writeBool(19, savingsParallelRoutes_);
    6156  }
    6157  if (relocateExpensiveChainNumArcsToConsider_ != 0) {
    6158  output.writeInt32(20, relocateExpensiveChainNumArcsToConsider_);
    6159  }
    6160  if (cheapestInsertionNeighborsRatio_ != 0D) {
    6161  output.writeDouble(21, cheapestInsertionNeighborsRatio_);
    6162  }
    6163  if (logCostScalingFactor_ != 0D) {
    6164  output.writeDouble(22, logCostScalingFactor_);
    6165  }
    6166  if (savingsMaxMemoryUsageBytes_ != 0D) {
    6167  output.writeDouble(23, savingsMaxMemoryUsageBytes_);
    6168  }
    6169  if (useCpSat_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6170  output.writeEnum(27, useCpSat_);
    6171  }
    6172  if (useCp_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6173  output.writeEnum(28, useCp_);
    6174  }
    6175  if (logCostOffset_ != 0D) {
    6176  output.writeDouble(29, logCostOffset_);
    6177  }
    6178  unknownFields.writeTo(output);
    6179  }
    6180 
    6181  @java.lang.Override
    6182  public int getSerializedSize() {
    6183  int size = memoizedSize;
    6184  if (size != -1) return size;
    6185 
    6186  size = 0;
    6187  if (firstSolutionStrategy_ != com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNSET.getNumber()) {
    6188  size += com.google.protobuf.CodedOutputStream
    6189  .computeEnumSize(1, firstSolutionStrategy_);
    6190  }
    6191  if (useUnfilteredFirstSolutionStrategy_ != false) {
    6192  size += com.google.protobuf.CodedOutputStream
    6193  .computeBoolSize(2, useUnfilteredFirstSolutionStrategy_);
    6194  }
    6195  if (localSearchOperators_ != null) {
    6196  size += com.google.protobuf.CodedOutputStream
    6197  .computeMessageSize(3, getLocalSearchOperators());
    6198  }
    6199  if (localSearchMetaheuristic_ != com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNSET.getNumber()) {
    6200  size += com.google.protobuf.CodedOutputStream
    6201  .computeEnumSize(4, localSearchMetaheuristic_);
    6202  }
    6203  if (guidedLocalSearchLambdaCoefficient_ != 0D) {
    6204  size += com.google.protobuf.CodedOutputStream
    6205  .computeDoubleSize(5, guidedLocalSearchLambdaCoefficient_);
    6206  }
    6207  if (useDepthFirstSearch_ != false) {
    6208  size += com.google.protobuf.CodedOutputStream
    6209  .computeBoolSize(6, useDepthFirstSearch_);
    6210  }
    6211  if (optimizationStep_ != 0D) {
    6212  size += com.google.protobuf.CodedOutputStream
    6213  .computeDoubleSize(7, optimizationStep_);
    6214  }
    6215  if (solutionLimit_ != 0L) {
    6216  size += com.google.protobuf.CodedOutputStream
    6217  .computeInt64Size(8, solutionLimit_);
    6218  }
    6219  if (timeLimit_ != null) {
    6220  size += com.google.protobuf.CodedOutputStream
    6221  .computeMessageSize(9, getTimeLimit());
    6222  }
    6223  if (lnsTimeLimit_ != null) {
    6224  size += com.google.protobuf.CodedOutputStream
    6225  .computeMessageSize(10, getLnsTimeLimit());
    6226  }
    6227  if (useFullPropagation_ != false) {
    6228  size += com.google.protobuf.CodedOutputStream
    6229  .computeBoolSize(11, useFullPropagation_);
    6230  }
    6231  if (logSearch_ != false) {
    6232  size += com.google.protobuf.CodedOutputStream
    6233  .computeBoolSize(13, logSearch_);
    6234  }
    6235  if (savingsNeighborsRatio_ != 0D) {
    6236  size += com.google.protobuf.CodedOutputStream
    6237  .computeDoubleSize(14, savingsNeighborsRatio_);
    6238  }
    6239  if (savingsAddReverseArcs_ != false) {
    6240  size += com.google.protobuf.CodedOutputStream
    6241  .computeBoolSize(15, savingsAddReverseArcs_);
    6242  }
    6243  if (cheapestInsertionFarthestSeedsRatio_ != 0D) {
    6244  size += com.google.protobuf.CodedOutputStream
    6245  .computeDoubleSize(16, cheapestInsertionFarthestSeedsRatio_);
    6246  }
    6247  if (numberOfSolutionsToCollect_ != 0) {
    6248  size += com.google.protobuf.CodedOutputStream
    6249  .computeInt32Size(17, numberOfSolutionsToCollect_);
    6250  }
    6251  if (savingsArcCoefficient_ != 0D) {
    6252  size += com.google.protobuf.CodedOutputStream
    6253  .computeDoubleSize(18, savingsArcCoefficient_);
    6254  }
    6255  if (savingsParallelRoutes_ != false) {
    6256  size += com.google.protobuf.CodedOutputStream
    6257  .computeBoolSize(19, savingsParallelRoutes_);
    6258  }
    6259  if (relocateExpensiveChainNumArcsToConsider_ != 0) {
    6260  size += com.google.protobuf.CodedOutputStream
    6261  .computeInt32Size(20, relocateExpensiveChainNumArcsToConsider_);
    6262  }
    6263  if (cheapestInsertionNeighborsRatio_ != 0D) {
    6264  size += com.google.protobuf.CodedOutputStream
    6265  .computeDoubleSize(21, cheapestInsertionNeighborsRatio_);
    6266  }
    6267  if (logCostScalingFactor_ != 0D) {
    6268  size += com.google.protobuf.CodedOutputStream
    6269  .computeDoubleSize(22, logCostScalingFactor_);
    6270  }
    6271  if (savingsMaxMemoryUsageBytes_ != 0D) {
    6272  size += com.google.protobuf.CodedOutputStream
    6273  .computeDoubleSize(23, savingsMaxMemoryUsageBytes_);
    6274  }
    6275  if (useCpSat_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6276  size += com.google.protobuf.CodedOutputStream
    6277  .computeEnumSize(27, useCpSat_);
    6278  }
    6279  if (useCp_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
    6280  size += com.google.protobuf.CodedOutputStream
    6281  .computeEnumSize(28, useCp_);
    6282  }
    6283  if (logCostOffset_ != 0D) {
    6284  size += com.google.protobuf.CodedOutputStream
    6285  .computeDoubleSize(29, logCostOffset_);
    6286  }
    6287  size += unknownFields.getSerializedSize();
    6288  memoizedSize = size;
    6289  return size;
    6290  }
    6291 
    6292  @java.lang.Override
    6293  public boolean equals(final java.lang.Object obj) {
    6294  if (obj == this) {
    6295  return true;
    6296  }
    6297  if (!(obj instanceof com.google.ortools.constraintsolver.RoutingSearchParameters)) {
    6298  return super.equals(obj);
    6299  }
    6301 
    6302  if (firstSolutionStrategy_ != other.firstSolutionStrategy_) return false;
    6304  != other.getUseUnfilteredFirstSolutionStrategy()) return false;
    6305  if (java.lang.Double.doubleToLongBits(getSavingsNeighborsRatio())
    6306  != java.lang.Double.doubleToLongBits(
    6307  other.getSavingsNeighborsRatio())) return false;
    6308  if (java.lang.Double.doubleToLongBits(getSavingsMaxMemoryUsageBytes())
    6309  != java.lang.Double.doubleToLongBits(
    6310  other.getSavingsMaxMemoryUsageBytes())) return false;
    6312  != other.getSavingsAddReverseArcs()) return false;
    6313  if (java.lang.Double.doubleToLongBits(getSavingsArcCoefficient())
    6314  != java.lang.Double.doubleToLongBits(
    6315  other.getSavingsArcCoefficient())) return false;
    6317  != other.getSavingsParallelRoutes()) return false;
    6318  if (java.lang.Double.doubleToLongBits(getCheapestInsertionFarthestSeedsRatio())
    6319  != java.lang.Double.doubleToLongBits(
    6320  other.getCheapestInsertionFarthestSeedsRatio())) return false;
    6321  if (java.lang.Double.doubleToLongBits(getCheapestInsertionNeighborsRatio())
    6322  != java.lang.Double.doubleToLongBits(
    6323  other.getCheapestInsertionNeighborsRatio())) return false;
    6324  if (hasLocalSearchOperators() != other.hasLocalSearchOperators()) return false;
    6325  if (hasLocalSearchOperators()) {
    6327  .equals(other.getLocalSearchOperators())) return false;
    6328  }
    6330  != other.getRelocateExpensiveChainNumArcsToConsider()) return false;
    6331  if (localSearchMetaheuristic_ != other.localSearchMetaheuristic_) return false;
    6332  if (java.lang.Double.doubleToLongBits(getGuidedLocalSearchLambdaCoefficient())
    6333  != java.lang.Double.doubleToLongBits(
    6334  other.getGuidedLocalSearchLambdaCoefficient())) return false;
    6336  != other.getUseDepthFirstSearch()) return false;
    6337  if (useCp_ != other.useCp_) return false;
    6338  if (useCpSat_ != other.useCpSat_) return false;
    6339  if (java.lang.Double.doubleToLongBits(getOptimizationStep())
    6340  != java.lang.Double.doubleToLongBits(
    6341  other.getOptimizationStep())) return false;
    6343  != other.getNumberOfSolutionsToCollect()) return false;
    6344  if (getSolutionLimit()
    6345  != other.getSolutionLimit()) return false;
    6346  if (hasTimeLimit() != other.hasTimeLimit()) return false;
    6347  if (hasTimeLimit()) {
    6348  if (!getTimeLimit()
    6349  .equals(other.getTimeLimit())) return false;
    6350  }
    6351  if (hasLnsTimeLimit() != other.hasLnsTimeLimit()) return false;
    6352  if (hasLnsTimeLimit()) {
    6353  if (!getLnsTimeLimit()
    6354  .equals(other.getLnsTimeLimit())) return false;
    6355  }
    6356  if (getUseFullPropagation()
    6357  != other.getUseFullPropagation()) return false;
    6358  if (getLogSearch()
    6359  != other.getLogSearch()) return false;
    6360  if (java.lang.Double.doubleToLongBits(getLogCostScalingFactor())
    6361  != java.lang.Double.doubleToLongBits(
    6362  other.getLogCostScalingFactor())) return false;
    6363  if (java.lang.Double.doubleToLongBits(getLogCostOffset())
    6364  != java.lang.Double.doubleToLongBits(
    6365  other.getLogCostOffset())) return false;
    6366  if (!unknownFields.equals(other.unknownFields)) return false;
    6367  return true;
    6368  }
    6369 
    6370  @java.lang.Override
    6371  public int hashCode() {
    6372  if (memoizedHashCode != 0) {
    6373  return memoizedHashCode;
    6374  }
    6375  int hash = 41;
    6376  hash = (19 * hash) + getDescriptor().hashCode();
    6377  hash = (37 * hash) + FIRST_SOLUTION_STRATEGY_FIELD_NUMBER;
    6378  hash = (53 * hash) + firstSolutionStrategy_;
    6380  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6382  hash = (37 * hash) + SAVINGS_NEIGHBORS_RATIO_FIELD_NUMBER;
    6383  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6384  java.lang.Double.doubleToLongBits(getSavingsNeighborsRatio()));
    6385  hash = (37 * hash) + SAVINGS_MAX_MEMORY_USAGE_BYTES_FIELD_NUMBER;
    6386  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6387  java.lang.Double.doubleToLongBits(getSavingsMaxMemoryUsageBytes()));
    6388  hash = (37 * hash) + SAVINGS_ADD_REVERSE_ARCS_FIELD_NUMBER;
    6389  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6391  hash = (37 * hash) + SAVINGS_ARC_COEFFICIENT_FIELD_NUMBER;
    6392  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6393  java.lang.Double.doubleToLongBits(getSavingsArcCoefficient()));
    6394  hash = (37 * hash) + SAVINGS_PARALLEL_ROUTES_FIELD_NUMBER;
    6395  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6398  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6399  java.lang.Double.doubleToLongBits(getCheapestInsertionFarthestSeedsRatio()));
    6401  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6402  java.lang.Double.doubleToLongBits(getCheapestInsertionNeighborsRatio()));
    6403  if (hasLocalSearchOperators()) {
    6404  hash = (37 * hash) + LOCAL_SEARCH_OPERATORS_FIELD_NUMBER;
    6405  hash = (53 * hash) + getLocalSearchOperators().hashCode();
    6406  }
    6408  hash = (53 * hash) + getRelocateExpensiveChainNumArcsToConsider();
    6409  hash = (37 * hash) + LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER;
    6410  hash = (53 * hash) + localSearchMetaheuristic_;
    6412  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6413  java.lang.Double.doubleToLongBits(getGuidedLocalSearchLambdaCoefficient()));
    6414  hash = (37 * hash) + USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER;
    6415  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6417  hash = (37 * hash) + USE_CP_FIELD_NUMBER;
    6418  hash = (53 * hash) + useCp_;
    6419  hash = (37 * hash) + USE_CP_SAT_FIELD_NUMBER;
    6420  hash = (53 * hash) + useCpSat_;
    6421  hash = (37 * hash) + OPTIMIZATION_STEP_FIELD_NUMBER;
    6422  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6423  java.lang.Double.doubleToLongBits(getOptimizationStep()));
    6424  hash = (37 * hash) + NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER;
    6425  hash = (53 * hash) + getNumberOfSolutionsToCollect();
    6426  hash = (37 * hash) + SOLUTION_LIMIT_FIELD_NUMBER;
    6427  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6428  getSolutionLimit());
    6429  if (hasTimeLimit()) {
    6430  hash = (37 * hash) + TIME_LIMIT_FIELD_NUMBER;
    6431  hash = (53 * hash) + getTimeLimit().hashCode();
    6432  }
    6433  if (hasLnsTimeLimit()) {
    6434  hash = (37 * hash) + LNS_TIME_LIMIT_FIELD_NUMBER;
    6435  hash = (53 * hash) + getLnsTimeLimit().hashCode();
    6436  }
    6437  hash = (37 * hash) + USE_FULL_PROPAGATION_FIELD_NUMBER;
    6438  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6440  hash = (37 * hash) + LOG_SEARCH_FIELD_NUMBER;
    6441  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6442  getLogSearch());
    6443  hash = (37 * hash) + LOG_COST_SCALING_FACTOR_FIELD_NUMBER;
    6444  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6445  java.lang.Double.doubleToLongBits(getLogCostScalingFactor()));
    6446  hash = (37 * hash) + LOG_COST_OFFSET_FIELD_NUMBER;
    6447  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6448  java.lang.Double.doubleToLongBits(getLogCostOffset()));
    6449  hash = (29 * hash) + unknownFields.hashCode();
    6450  memoizedHashCode = hash;
    6451  return hash;
    6452  }
    6453 
    6455  java.nio.ByteBuffer data)
    6456  throws com.google.protobuf.InvalidProtocolBufferException {
    6457  return PARSER.parseFrom(data);
    6458  }
    6460  java.nio.ByteBuffer data,
    6461  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6462  throws com.google.protobuf.InvalidProtocolBufferException {
    6463  return PARSER.parseFrom(data, extensionRegistry);
    6464  }
    6466  com.google.protobuf.ByteString data)
    6467  throws com.google.protobuf.InvalidProtocolBufferException {
    6468  return PARSER.parseFrom(data);
    6469  }
    6471  com.google.protobuf.ByteString data,
    6472  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6473  throws com.google.protobuf.InvalidProtocolBufferException {
    6474  return PARSER.parseFrom(data, extensionRegistry);
    6475  }
    6477  throws com.google.protobuf.InvalidProtocolBufferException {
    6478  return PARSER.parseFrom(data);
    6479  }
    6481  byte[] data,
    6482  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6483  throws com.google.protobuf.InvalidProtocolBufferException {
    6484  return PARSER.parseFrom(data, extensionRegistry);
    6485  }
    6486  public static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.io.InputStream input)
    6487  throws java.io.IOException {
    6488  return com.google.protobuf.GeneratedMessageV3
    6489  .parseWithIOException(PARSER, input);
    6490  }
    6492  java.io.InputStream input,
    6493  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6494  throws java.io.IOException {
    6495  return com.google.protobuf.GeneratedMessageV3
    6496  .parseWithIOException(PARSER, input, extensionRegistry);
    6497  }
    6499  throws java.io.IOException {
    6500  return com.google.protobuf.GeneratedMessageV3
    6501  .parseDelimitedWithIOException(PARSER, input);
    6502  }
    6504  java.io.InputStream input,
    6505  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6506  throws java.io.IOException {
    6507  return com.google.protobuf.GeneratedMessageV3
    6508  .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    6509  }
    6511  com.google.protobuf.CodedInputStream input)
    6512  throws java.io.IOException {
    6513  return com.google.protobuf.GeneratedMessageV3
    6514  .parseWithIOException(PARSER, input);
    6515  }
    6517  com.google.protobuf.CodedInputStream input,
    6518  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6519  throws java.io.IOException {
    6520  return com.google.protobuf.GeneratedMessageV3
    6521  .parseWithIOException(PARSER, input, extensionRegistry);
    6522  }
    6523 
    6524  @java.lang.Override
    6525  public Builder newBuilderForType() { return newBuilder(); }
    6526  public static Builder newBuilder() {
    6527  return DEFAULT_INSTANCE.toBuilder();
    6528  }
    6530  return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    6531  }
    6532  @java.lang.Override
    6533  public Builder toBuilder() {
    6534  return this == DEFAULT_INSTANCE
    6535  ? new Builder() : new Builder().mergeFrom(this);
    6536  }
    6537 
    6538  @java.lang.Override
    6540  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    6541  Builder builder = new Builder(parent);
    6542  return builder;
    6543  }
    6555  public static final class Builder extends
    6556  com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
    6557  // @@protoc_insertion_point(builder_implements:operations_research.RoutingSearchParameters)
    6558  com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder {
    6559  public static final com.google.protobuf.Descriptors.Descriptor
    6561  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
    6562  }
    6563 
    6564  @java.lang.Override
    6565  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    6567  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable
    6568  .ensureFieldAccessorsInitialized(
    6570  }
    6571 
    6572  // Construct using com.google.ortools.constraintsolver.RoutingSearchParameters.newBuilder()
    6573  private Builder() {
    6574  maybeForceBuilderInitialization();
    6575  }
    6576 
    6577  private Builder(
    6578  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    6579  super(parent);
    6580  maybeForceBuilderInitialization();
    6581  }
    6582  private void maybeForceBuilderInitialization() {
    6583  if (com.google.protobuf.GeneratedMessageV3
    6584  .alwaysUseFieldBuilders) {
    6585  }
    6586  }
    6587  @java.lang.Override
    6588  public Builder clear() {
    6589  super.clear();
    6590  firstSolutionStrategy_ = 0;
    6591 
    6592  useUnfilteredFirstSolutionStrategy_ = false;
    6593 
    6594  savingsNeighborsRatio_ = 0D;
    6595 
    6596  savingsMaxMemoryUsageBytes_ = 0D;
    6597 
    6598  savingsAddReverseArcs_ = false;
    6599 
    6600  savingsArcCoefficient_ = 0D;
    6601 
    6602  savingsParallelRoutes_ = false;
    6603 
    6604  cheapestInsertionFarthestSeedsRatio_ = 0D;
    6605 
    6606  cheapestInsertionNeighborsRatio_ = 0D;
    6607 
    6608  if (localSearchOperatorsBuilder_ == null) {
    6609  localSearchOperators_ = null;
    6610  } else {
    6611  localSearchOperators_ = null;
    6612  localSearchOperatorsBuilder_ = null;
    6613  }
    6614  relocateExpensiveChainNumArcsToConsider_ = 0;
    6615 
    6616  localSearchMetaheuristic_ = 0;
    6617 
    6618  guidedLocalSearchLambdaCoefficient_ = 0D;
    6619 
    6620  useDepthFirstSearch_ = false;
    6621 
    6622  useCp_ = 0;
    6623 
    6624  useCpSat_ = 0;
    6625 
    6626  optimizationStep_ = 0D;
    6627 
    6628  numberOfSolutionsToCollect_ = 0;
    6629 
    6630  solutionLimit_ = 0L;
    6631 
    6632  if (timeLimitBuilder_ == null) {
    6633  timeLimit_ = null;
    6634  } else {
    6635  timeLimit_ = null;
    6636  timeLimitBuilder_ = null;
    6637  }
    6638  if (lnsTimeLimitBuilder_ == null) {
    6639  lnsTimeLimit_ = null;
    6640  } else {
    6641  lnsTimeLimit_ = null;
    6642  lnsTimeLimitBuilder_ = null;
    6643  }
    6644  useFullPropagation_ = false;
    6645 
    6646  logSearch_ = false;
    6647 
    6648  logCostScalingFactor_ = 0D;
    6649 
    6650  logCostOffset_ = 0D;
    6651 
    6652  return this;
    6653  }
    6654 
    6655  @java.lang.Override
    6656  public com.google.protobuf.Descriptors.Descriptor
    6658  return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
    6659  }
    6660 
    6661  @java.lang.Override
    6664  }
    6665 
    6666  @java.lang.Override
    6669  if (!result.isInitialized()) {
    6670  throw newUninitializedMessageException(result);
    6671  }
    6672  return result;
    6673  }
    6674 
    6675  @java.lang.Override
    6678  result.firstSolutionStrategy_ = firstSolutionStrategy_;
    6679  result.useUnfilteredFirstSolutionStrategy_ = useUnfilteredFirstSolutionStrategy_;
    6680  result.savingsNeighborsRatio_ = savingsNeighborsRatio_;
    6681  result.savingsMaxMemoryUsageBytes_ = savingsMaxMemoryUsageBytes_;
    6682  result.savingsAddReverseArcs_ = savingsAddReverseArcs_;
    6683  result.savingsArcCoefficient_ = savingsArcCoefficient_;
    6684  result.savingsParallelRoutes_ = savingsParallelRoutes_;
    6685  result.cheapestInsertionFarthestSeedsRatio_ = cheapestInsertionFarthestSeedsRatio_;
    6686  result.cheapestInsertionNeighborsRatio_ = cheapestInsertionNeighborsRatio_;
    6687  if (localSearchOperatorsBuilder_ == null) {
    6688  result.localSearchOperators_ = localSearchOperators_;
    6689  } else {
    6690  result.localSearchOperators_ = localSearchOperatorsBuilder_.build();
    6691  }
    6692  result.relocateExpensiveChainNumArcsToConsider_ = relocateExpensiveChainNumArcsToConsider_;
    6693  result.localSearchMetaheuristic_ = localSearchMetaheuristic_;
    6694  result.guidedLocalSearchLambdaCoefficient_ = guidedLocalSearchLambdaCoefficient_;
    6695  result.useDepthFirstSearch_ = useDepthFirstSearch_;
    6696  result.useCp_ = useCp_;
    6697  result.useCpSat_ = useCpSat_;
    6698  result.optimizationStep_ = optimizationStep_;
    6699  result.numberOfSolutionsToCollect_ = numberOfSolutionsToCollect_;
    6700  result.solutionLimit_ = solutionLimit_;
    6701  if (timeLimitBuilder_ == null) {
    6702  result.timeLimit_ = timeLimit_;
    6703  } else {
    6704  result.timeLimit_ = timeLimitBuilder_.build();
    6705  }
    6706  if (lnsTimeLimitBuilder_ == null) {
    6707  result.lnsTimeLimit_ = lnsTimeLimit_;
    6708  } else {
    6709  result.lnsTimeLimit_ = lnsTimeLimitBuilder_.build();
    6710  }
    6711  result.useFullPropagation_ = useFullPropagation_;
    6712  result.logSearch_ = logSearch_;
    6713  result.logCostScalingFactor_ = logCostScalingFactor_;
    6714  result.logCostOffset_ = logCostOffset_;
    6715  onBuilt();
    6716  return result;
    6717  }
    6718 
    6719  @java.lang.Override
    6720  public Builder clone() {
    6721  return super.clone();
    6722  }
    6723  @java.lang.Override
    6725  com.google.protobuf.Descriptors.FieldDescriptor field,
    6726  java.lang.Object value) {
    6727  return super.setField(field, value);
    6728  }
    6729  @java.lang.Override
    6731  com.google.protobuf.Descriptors.FieldDescriptor field) {
    6732  return super.clearField(field);
    6733  }
    6734  @java.lang.Override
    6736  com.google.protobuf.Descriptors.OneofDescriptor oneof) {
    6737  return super.clearOneof(oneof);
    6738  }
    6739  @java.lang.Override
    6741  com.google.protobuf.Descriptors.FieldDescriptor field,
    6742  int index, java.lang.Object value) {
    6743  return super.setRepeatedField(field, index, value);
    6744  }
    6745  @java.lang.Override
    6747  com.google.protobuf.Descriptors.FieldDescriptor field,
    6748  java.lang.Object value) {
    6749  return super.addRepeatedField(field, value);
    6750  }
    6751  @java.lang.Override
    6752  public Builder mergeFrom(com.google.protobuf.Message other) {
    6755  } else {
    6756  super.mergeFrom(other);
    6757  return this;
    6758  }
    6759  }
    6760 
    6763  if (other.firstSolutionStrategy_ != 0) {
    6764  setFirstSolutionStrategyValue(other.getFirstSolutionStrategyValue());
    6765  }
    6766  if (other.getUseUnfilteredFirstSolutionStrategy() != false) {
    6767  setUseUnfilteredFirstSolutionStrategy(other.getUseUnfilteredFirstSolutionStrategy());
    6768  }
    6769  if (other.getSavingsNeighborsRatio() != 0D) {
    6770  setSavingsNeighborsRatio(other.getSavingsNeighborsRatio());
    6771  }
    6772  if (other.getSavingsMaxMemoryUsageBytes() != 0D) {
    6773  setSavingsMaxMemoryUsageBytes(other.getSavingsMaxMemoryUsageBytes());
    6774  }
    6775  if (other.getSavingsAddReverseArcs() != false) {
    6776  setSavingsAddReverseArcs(other.getSavingsAddReverseArcs());
    6777  }
    6778  if (other.getSavingsArcCoefficient() != 0D) {
    6779  setSavingsArcCoefficient(other.getSavingsArcCoefficient());
    6780  }
    6781  if (other.getSavingsParallelRoutes() != false) {
    6782  setSavingsParallelRoutes(other.getSavingsParallelRoutes());
    6783  }
    6784  if (other.getCheapestInsertionFarthestSeedsRatio() != 0D) {
    6785  setCheapestInsertionFarthestSeedsRatio(other.getCheapestInsertionFarthestSeedsRatio());
    6786  }
    6787  if (other.getCheapestInsertionNeighborsRatio() != 0D) {
    6788  setCheapestInsertionNeighborsRatio(other.getCheapestInsertionNeighborsRatio());
    6789  }
    6790  if (other.hasLocalSearchOperators()) {
    6791  mergeLocalSearchOperators(other.getLocalSearchOperators());
    6792  }
    6793  if (other.getRelocateExpensiveChainNumArcsToConsider() != 0) {
    6794  setRelocateExpensiveChainNumArcsToConsider(other.getRelocateExpensiveChainNumArcsToConsider());
    6795  }
    6796  if (other.localSearchMetaheuristic_ != 0) {
    6797  setLocalSearchMetaheuristicValue(other.getLocalSearchMetaheuristicValue());
    6798  }
    6799  if (other.getGuidedLocalSearchLambdaCoefficient() != 0D) {
    6800  setGuidedLocalSearchLambdaCoefficient(other.getGuidedLocalSearchLambdaCoefficient());
    6801  }
    6802  if (other.getUseDepthFirstSearch() != false) {
    6803  setUseDepthFirstSearch(other.getUseDepthFirstSearch());
    6804  }
    6805  if (other.useCp_ != 0) {
    6806  setUseCpValue(other.getUseCpValue());
    6807  }
    6808  if (other.useCpSat_ != 0) {
    6809  setUseCpSatValue(other.getUseCpSatValue());
    6810  }
    6811  if (other.getOptimizationStep() != 0D) {
    6812  setOptimizationStep(other.getOptimizationStep());
    6813  }
    6814  if (other.getNumberOfSolutionsToCollect() != 0) {
    6815  setNumberOfSolutionsToCollect(other.getNumberOfSolutionsToCollect());
    6816  }
    6817  if (other.getSolutionLimit() != 0L) {
    6818  setSolutionLimit(other.getSolutionLimit());
    6819  }
    6820  if (other.hasTimeLimit()) {
    6821  mergeTimeLimit(other.getTimeLimit());
    6822  }
    6823  if (other.hasLnsTimeLimit()) {
    6824  mergeLnsTimeLimit(other.getLnsTimeLimit());
    6825  }
    6826  if (other.getUseFullPropagation() != false) {
    6827  setUseFullPropagation(other.getUseFullPropagation());
    6828  }
    6829  if (other.getLogSearch() != false) {
    6830  setLogSearch(other.getLogSearch());
    6831  }
    6832  if (other.getLogCostScalingFactor() != 0D) {
    6833  setLogCostScalingFactor(other.getLogCostScalingFactor());
    6834  }
    6835  if (other.getLogCostOffset() != 0D) {
    6836  setLogCostOffset(other.getLogCostOffset());
    6837  }
    6838  this.mergeUnknownFields(other.unknownFields);
    6839  onChanged();
    6840  return this;
    6841  }
    6842 
    6843  @java.lang.Override
    6844  public final boolean isInitialized() {
    6845  return true;
    6846  }
    6847 
    6848  @java.lang.Override
    6850  com.google.protobuf.CodedInputStream input,
    6851  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    6852  throws java.io.IOException {
    6854  try {
    6855  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
    6856  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    6857  parsedMessage = (com.google.ortools.constraintsolver.RoutingSearchParameters) e.getUnfinishedMessage();
    6858  throw e.unwrapIOException();
    6859  } finally {
    6860  if (parsedMessage != null) {
    6861  mergeFrom(parsedMessage);
    6862  }
    6863  }
    6864  return this;
    6865  }
    6866 
    6867  private int firstSolutionStrategy_ = 0;
    6876  return firstSolutionStrategy_;
    6877  }
    6886  firstSolutionStrategy_ = value;
    6887  onChanged();
    6888  return this;
    6889  }
    6898  @SuppressWarnings("deprecation")
    6900  return result == null ? com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNRECOGNIZED : result;
    6901  }
    6910  if (value == null) {
    6911  throw new NullPointerException();
    6912  }
    6913 
    6914  firstSolutionStrategy_ = value.getNumber();
    6915  onChanged();
    6916  return this;
    6917  }
    6926 
    6927  firstSolutionStrategy_ = 0;
    6928  onChanged();
    6929  return this;
    6930  }
    6931 
    6932  private boolean useUnfilteredFirstSolutionStrategy_ ;
    6943  return useUnfilteredFirstSolutionStrategy_;
    6944  }
    6955 
    6956  useUnfilteredFirstSolutionStrategy_ = value;
    6957  onChanged();
    6958  return this;
    6959  }
    6970 
    6971  useUnfilteredFirstSolutionStrategy_ = false;
    6972  onChanged();
    6973  return this;
    6974  }
    6975 
    6976  private double savingsNeighborsRatio_ ;
    6986  public double getSavingsNeighborsRatio() {
    6987  return savingsNeighborsRatio_;
    6988  }
    6998  public Builder setSavingsNeighborsRatio(double value) {
    6999 
    7000  savingsNeighborsRatio_ = value;
    7001  onChanged();
    7002  return this;
    7003  }
    7014 
    7015  savingsNeighborsRatio_ = 0D;
    7016  onChanged();
    7017  return this;
    7018  }
    7019 
    7020  private double savingsMaxMemoryUsageBytes_ ;
    7034  return savingsMaxMemoryUsageBytes_;
    7035  }
    7049 
    7050  savingsMaxMemoryUsageBytes_ = value;
    7051  onChanged();
    7052  return this;
    7053  }
    7067 
    7068  savingsMaxMemoryUsageBytes_ = 0D;
    7069  onChanged();
    7070  return this;
    7071  }
    7072 
    7073  private boolean savingsAddReverseArcs_ ;
    7082  public boolean getSavingsAddReverseArcs() {
    7083  return savingsAddReverseArcs_;
    7084  }
    7093  public Builder setSavingsAddReverseArcs(boolean value) {
    7094 
    7095  savingsAddReverseArcs_ = value;
    7096  onChanged();
    7097  return this;
    7098  }
    7108 
    7109  savingsAddReverseArcs_ = false;
    7110  onChanged();
    7111  return this;
    7112  }
    7113 
    7114  private double savingsArcCoefficient_ ;
    7126  public double getSavingsArcCoefficient() {
    7127  return savingsArcCoefficient_;
    7128  }
    7140  public Builder setSavingsArcCoefficient(double value) {
    7141 
    7142  savingsArcCoefficient_ = value;
    7143  onChanged();
    7144  return this;
    7145  }
    7158 
    7159  savingsArcCoefficient_ = 0D;
    7160  onChanged();
    7161  return this;
    7162  }
    7163 
    7164  private boolean savingsParallelRoutes_ ;
    7172  public boolean getSavingsParallelRoutes() {
    7173  return savingsParallelRoutes_;
    7174  }
    7182  public Builder setSavingsParallelRoutes(boolean value) {
    7183 
    7184  savingsParallelRoutes_ = value;
    7185  onChanged();
    7186  return this;
    7187  }
    7196 
    7197  savingsParallelRoutes_ = false;
    7198  onChanged();
    7199  return this;
    7200  }
    7201 
    7202  private double cheapestInsertionFarthestSeedsRatio_ ;
    7213  return cheapestInsertionFarthestSeedsRatio_;
    7214  }
    7225 
    7226  cheapestInsertionFarthestSeedsRatio_ = value;
    7227  onChanged();
    7228  return this;
    7229  }
    7240 
    7241  cheapestInsertionFarthestSeedsRatio_ = 0D;
    7242  onChanged();
    7243  return this;
    7244  }
    7245 
    7246  private double cheapestInsertionNeighborsRatio_ ;
    7258  return cheapestInsertionNeighborsRatio_;
    7259  }
    7271 
    7272  cheapestInsertionNeighborsRatio_ = value;
    7273  onChanged();
    7274  return this;
    7275  }
    7287 
    7288  cheapestInsertionNeighborsRatio_ = 0D;
    7289  onChanged();
    7290  return this;
    7291  }
    7292 
    7294  private com.google.protobuf.SingleFieldBuilderV3<
    7299  public boolean hasLocalSearchOperators() {
    7300  return localSearchOperatorsBuilder_ != null || localSearchOperators_ != null;
    7301  }
    7306  if (localSearchOperatorsBuilder_ == null) {
    7307  return localSearchOperators_ == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance() : localSearchOperators_;
    7308  } else {
    7309  return localSearchOperatorsBuilder_.getMessage();
    7310  }
    7311  }
    7316  if (localSearchOperatorsBuilder_ == null) {
    7317  if (value == null) {
    7318  throw new NullPointerException();
    7319  }
    7320  localSearchOperators_ = value;
    7321  onChanged();
    7322  } else {
    7323  localSearchOperatorsBuilder_.setMessage(value);
    7324  }
    7325 
    7326  return this;
    7327  }
    7333  if (localSearchOperatorsBuilder_ == null) {
    7334  localSearchOperators_ = builderForValue.build();
    7335  onChanged();
    7336  } else {
    7337  localSearchOperatorsBuilder_.setMessage(builderForValue.build());
    7338  }
    7339 
    7340  return this;
    7341  }
    7346  if (localSearchOperatorsBuilder_ == null) {
    7347  if (localSearchOperators_ != null) {
    7348  localSearchOperators_ =
    7350  } else {
    7351  localSearchOperators_ = value;
    7352  }
    7353  onChanged();
    7354  } else {
    7355  localSearchOperatorsBuilder_.mergeFrom(value);
    7356  }
    7357 
    7358  return this;
    7359  }
    7364  if (localSearchOperatorsBuilder_ == null) {
    7365  localSearchOperators_ = null;
    7366  onChanged();
    7367  } else {
    7368  localSearchOperators_ = null;
    7369  localSearchOperatorsBuilder_ = null;
    7370  }
    7371 
    7372  return this;
    7373  }
    7378 
    7379  onChanged();
    7380  return getLocalSearchOperatorsFieldBuilder().getBuilder();
    7381  }
    7386  if (localSearchOperatorsBuilder_ != null) {
    7387  return localSearchOperatorsBuilder_.getMessageOrBuilder();
    7388  } else {
    7389  return localSearchOperators_ == null ?
    7391  }
    7392  }
    7396  private com.google.protobuf.SingleFieldBuilderV3<
    7398  getLocalSearchOperatorsFieldBuilder() {
    7399  if (localSearchOperatorsBuilder_ == null) {
    7400  localSearchOperatorsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
    7403  getParentForChildren(),
    7404  isClean());
    7405  localSearchOperators_ = null;
    7406  }
    7407  return localSearchOperatorsBuilder_;
    7408  }
    7409 
    7410  private int relocateExpensiveChainNumArcsToConsider_ ;
    7425  return relocateExpensiveChainNumArcsToConsider_;
    7426  }
    7441 
    7442  relocateExpensiveChainNumArcsToConsider_ = value;
    7443  onChanged();
    7444  return this;
    7445  }
    7460 
    7461  relocateExpensiveChainNumArcsToConsider_ = 0;
    7462  onChanged();
    7463  return this;
    7464  }
    7465 
    7466  private int localSearchMetaheuristic_ = 0;
    7475  return localSearchMetaheuristic_;
    7476  }
    7485  localSearchMetaheuristic_ = value;
    7486  onChanged();
    7487  return this;
    7488  }
    7497  @SuppressWarnings("deprecation")
    7500  }
    7509  if (value == null) {
    7510  throw new NullPointerException();
    7511  }
    7512 
    7513  localSearchMetaheuristic_ = value.getNumber();
    7514  onChanged();
    7515  return this;
    7516  }
    7525 
    7526  localSearchMetaheuristic_ = 0;
    7527  onChanged();
    7528  return this;
    7529  }
    7530 
    7531  private double guidedLocalSearchLambdaCoefficient_ ;
    7543  return guidedLocalSearchLambdaCoefficient_;
    7544  }
    7556 
    7557  guidedLocalSearchLambdaCoefficient_ = value;
    7558  onChanged();
    7559  return this;
    7560  }
    7572 
    7573  guidedLocalSearchLambdaCoefficient_ = 0D;
    7574  onChanged();
    7575  return this;
    7576  }
    7577 
    7578  private boolean useDepthFirstSearch_ ;
    7588  public boolean getUseDepthFirstSearch() {
    7589  return useDepthFirstSearch_;
    7590  }
    7600  public Builder setUseDepthFirstSearch(boolean value) {
    7601 
    7602  useDepthFirstSearch_ = value;
    7603  onChanged();
    7604  return this;
    7605  }
    7616 
    7617  useDepthFirstSearch_ = false;
    7618  onChanged();
    7619  return this;
    7620  }
    7621 
    7622  private int useCp_ = 0;
    7632  public int getUseCpValue() {
    7633  return useCp_;
    7634  }
    7644  public Builder setUseCpValue(int value) {
    7645  useCp_ = value;
    7646  onChanged();
    7647  return this;
    7648  }
    7659  @SuppressWarnings("deprecation")
    7661  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    7662  }
    7673  if (value == null) {
    7674  throw new NullPointerException();
    7675  }
    7676 
    7677  useCp_ = value.getNumber();
    7678  onChanged();
    7679  return this;
    7680  }
    7690  public Builder clearUseCp() {
    7691 
    7692  useCp_ = 0;
    7693  onChanged();
    7694  return this;
    7695  }
    7696 
    7697  private int useCpSat_ = 0;
    7708  public int getUseCpSatValue() {
    7709  return useCpSat_;
    7710  }
    7721  public Builder setUseCpSatValue(int value) {
    7722  useCpSat_ = value;
    7723  onChanged();
    7724  return this;
    7725  }
    7737  @SuppressWarnings("deprecation")
    7739  return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
    7740  }
    7752  if (value == null) {
    7753  throw new NullPointerException();
    7754  }
    7755 
    7756  useCpSat_ = value.getNumber();
    7757  onChanged();
    7758  return this;
    7759  }
    7771 
    7772  useCpSat_ = 0;
    7773  onChanged();
    7774  return this;
    7775  }
    7776 
    7777  private double optimizationStep_ ;
    7787  public double getOptimizationStep() {
    7788  return optimizationStep_;
    7789  }
    7799  public Builder setOptimizationStep(double value) {
    7800 
    7801  optimizationStep_ = value;
    7802  onChanged();
    7803  return this;
    7804  }
    7815 
    7816  optimizationStep_ = 0D;
    7817  onChanged();
    7818  return this;
    7819  }
    7820 
    7821  private int numberOfSolutionsToCollect_ ;
    7831  return numberOfSolutionsToCollect_;
    7832  }
    7842 
    7843  numberOfSolutionsToCollect_ = value;
    7844  onChanged();
    7845  return this;
    7846  }
    7856 
    7857  numberOfSolutionsToCollect_ = 0;
    7858  onChanged();
    7859  return this;
    7860  }
    7861 
    7862  private long solutionLimit_ ;
    7872  public long getSolutionLimit() {
    7873  return solutionLimit_;
    7874  }
    7884  public Builder setSolutionLimit(long value) {
    7885 
    7886  solutionLimit_ = value;
    7887  onChanged();
    7888  return this;
    7889  }
    7900 
    7901  solutionLimit_ = 0L;
    7902  onChanged();
    7903  return this;
    7904  }
    7905 
    7906  private com.google.protobuf.Duration timeLimit_;
    7907  private com.google.protobuf.SingleFieldBuilderV3<
    7908  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> timeLimitBuilder_;
    7916  public boolean hasTimeLimit() {
    7917  return timeLimitBuilder_ != null || timeLimit_ != null;
    7918  }
    7926  public com.google.protobuf.Duration getTimeLimit() {
    7927  if (timeLimitBuilder_ == null) {
    7928  return timeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
    7929  } else {
    7930  return timeLimitBuilder_.getMessage();
    7931  }
    7932  }
    7940  public Builder setTimeLimit(com.google.protobuf.Duration value) {
    7941  if (timeLimitBuilder_ == null) {
    7942  if (value == null) {
    7943  throw new NullPointerException();
    7944  }
    7945  timeLimit_ = value;
    7946  onChanged();
    7947  } else {
    7948  timeLimitBuilder_.setMessage(value);
    7949  }
    7950 
    7951  return this;
    7952  }
    7961  com.google.protobuf.Duration.Builder builderForValue) {
    7962  if (timeLimitBuilder_ == null) {
    7963  timeLimit_ = builderForValue.build();
    7964  onChanged();
    7965  } else {
    7966  timeLimitBuilder_.setMessage(builderForValue.build());
    7967  }
    7968 
    7969  return this;
    7970  }
    7978  public Builder mergeTimeLimit(com.google.protobuf.Duration value) {
    7979  if (timeLimitBuilder_ == null) {
    7980  if (timeLimit_ != null) {
    7981  timeLimit_ =
    7982  com.google.protobuf.Duration.newBuilder(timeLimit_).mergeFrom(value).buildPartial();
    7983  } else {
    7984  timeLimit_ = value;
    7985  }
    7986  onChanged();
    7987  } else {
    7988  timeLimitBuilder_.mergeFrom(value);
    7989  }
    7990 
    7991  return this;
    7992  }
    8001  if (timeLimitBuilder_ == null) {
    8002  timeLimit_ = null;
    8003  onChanged();
    8004  } else {
    8005  timeLimit_ = null;
    8006  timeLimitBuilder_ = null;
    8007  }
    8008 
    8009  return this;
    8010  }
    8018  public com.google.protobuf.Duration.Builder getTimeLimitBuilder() {
    8019 
    8020  onChanged();
    8021  return getTimeLimitFieldBuilder().getBuilder();
    8022  }
    8030  public com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder() {
    8031  if (timeLimitBuilder_ != null) {
    8032  return timeLimitBuilder_.getMessageOrBuilder();
    8033  } else {
    8034  return timeLimit_ == null ?
    8035  com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
    8036  }
    8037  }
    8045  private com.google.protobuf.SingleFieldBuilderV3<
    8046  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
    8047  getTimeLimitFieldBuilder() {
    8048  if (timeLimitBuilder_ == null) {
    8049  timeLimitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
    8050  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
    8051  getTimeLimit(),
    8052  getParentForChildren(),
    8053  isClean());
    8054  timeLimit_ = null;
    8055  }
    8056  return timeLimitBuilder_;
    8057  }
    8058 
    8059  private com.google.protobuf.Duration lnsTimeLimit_;
    8060  private com.google.protobuf.SingleFieldBuilderV3<
    8061  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> lnsTimeLimitBuilder_;
    8070  public boolean hasLnsTimeLimit() {
    8071  return lnsTimeLimitBuilder_ != null || lnsTimeLimit_ != null;
    8072  }
    8081  public com.google.protobuf.Duration getLnsTimeLimit() {
    8082  if (lnsTimeLimitBuilder_ == null) {
    8083  return lnsTimeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
    8084  } else {
    8085  return lnsTimeLimitBuilder_.getMessage();
    8086  }
    8087  }
    8096  public Builder setLnsTimeLimit(com.google.protobuf.Duration value) {
    8097  if (lnsTimeLimitBuilder_ == null) {
    8098  if (value == null) {
    8099  throw new NullPointerException();
    8100  }
    8101  lnsTimeLimit_ = value;
    8102  onChanged();
    8103  } else {
    8104  lnsTimeLimitBuilder_.setMessage(value);
    8105  }
    8106 
    8107  return this;
    8108  }
    8118  com.google.protobuf.Duration.Builder builderForValue) {
    8119  if (lnsTimeLimitBuilder_ == null) {
    8120  lnsTimeLimit_ = builderForValue.build();
    8121  onChanged();
    8122  } else {
    8123  lnsTimeLimitBuilder_.setMessage(builderForValue.build());
    8124  }
    8125 
    8126  return this;
    8127  }
    8136  public Builder mergeLnsTimeLimit(com.google.protobuf.Duration value) {
    8137  if (lnsTimeLimitBuilder_ == null) {
    8138  if (lnsTimeLimit_ != null) {
    8139  lnsTimeLimit_ =
    8140  com.google.protobuf.Duration.newBuilder(lnsTimeLimit_).mergeFrom(value).buildPartial();
    8141  } else {
    8142  lnsTimeLimit_ = value;
    8143  }
    8144  onChanged();
    8145  } else {
    8146  lnsTimeLimitBuilder_.mergeFrom(value);
    8147  }
    8148 
    8149  return this;
    8150  }
    8160  if (lnsTimeLimitBuilder_ == null) {
    8161  lnsTimeLimit_ = null;
    8162  onChanged();
    8163  } else {
    8164  lnsTimeLimit_ = null;
    8165  lnsTimeLimitBuilder_ = null;
    8166  }
    8167 
    8168  return this;
    8169  }
    8178  public com.google.protobuf.Duration.Builder getLnsTimeLimitBuilder() {
    8179 
    8180  onChanged();
    8181  return getLnsTimeLimitFieldBuilder().getBuilder();
    8182  }
    8191  public com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder() {
    8192  if (lnsTimeLimitBuilder_ != null) {
    8193  return lnsTimeLimitBuilder_.getMessageOrBuilder();
    8194  } else {
    8195  return lnsTimeLimit_ == null ?
    8196  com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
    8197  }
    8198  }
    8207  private com.google.protobuf.SingleFieldBuilderV3<
    8208  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
    8209  getLnsTimeLimitFieldBuilder() {
    8210  if (lnsTimeLimitBuilder_ == null) {
    8211  lnsTimeLimitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
    8212  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
    8213  getLnsTimeLimit(),
    8214  getParentForChildren(),
    8215  isClean());
    8216  lnsTimeLimit_ = null;
    8217  }
    8218  return lnsTimeLimitBuilder_;
    8219  }
    8220 
    8221  private boolean useFullPropagation_ ;
    8237  public boolean getUseFullPropagation() {
    8238  return useFullPropagation_;
    8239  }
    8255  public Builder setUseFullPropagation(boolean value) {
    8256 
    8257  useFullPropagation_ = value;
    8258  onChanged();
    8259  return this;
    8260  }
    8277 
    8278  useFullPropagation_ = false;
    8279  onChanged();
    8280  return this;
    8281  }
    8282 
    8283  private boolean logSearch_ ;
    8302  public boolean getLogSearch() {
    8303  return logSearch_;
    8304  }
    8323  public Builder setLogSearch(boolean value) {
    8324 
    8325  logSearch_ = value;
    8326  onChanged();
    8327  return this;
    8328  }
    8348 
    8349  logSearch_ = false;
    8350  onChanged();
    8351  return this;
    8352  }
    8353 
    8354  private double logCostScalingFactor_ ;
    8363  public double getLogCostScalingFactor() {
    8364  return logCostScalingFactor_;
    8365  }
    8374  public Builder setLogCostScalingFactor(double value) {
    8375 
    8376  logCostScalingFactor_ = value;
    8377  onChanged();
    8378  return this;
    8379  }
    8389 
    8390  logCostScalingFactor_ = 0D;
    8391  onChanged();
    8392  return this;
    8393  }
    8394 
    8395  private double logCostOffset_ ;
    8399  public double getLogCostOffset() {
    8400  return logCostOffset_;
    8401  }
    8405  public Builder setLogCostOffset(double value) {
    8406 
    8407  logCostOffset_ = value;
    8408  onChanged();
    8409  return this;
    8410  }
    8415 
    8416  logCostOffset_ = 0D;
    8417  onChanged();
    8418  return this;
    8419  }
    8420  @java.lang.Override
    8422  final com.google.protobuf.UnknownFieldSet unknownFields) {
    8423  return super.setUnknownFields(unknownFields);
    8424  }
    8425 
    8426  @java.lang.Override
    8428  final com.google.protobuf.UnknownFieldSet unknownFields) {
    8429  return super.mergeUnknownFields(unknownFields);
    8430  }
    8431 
    8432 
    8433  // @@protoc_insertion_point(builder_scope:operations_research.RoutingSearchParameters)
    8434  }
    8435 
    8436  // @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters)
    8437  private static final com.google.ortools.constraintsolver.RoutingSearchParameters DEFAULT_INSTANCE;
    8438  static {
    8439  DEFAULT_INSTANCE = new com.google.ortools.constraintsolver.RoutingSearchParameters();
    8440  }
    8441 
    8443  return DEFAULT_INSTANCE;
    8444  }
    8445 
    8446  private static final com.google.protobuf.Parser<RoutingSearchParameters>
    8447  PARSER = new com.google.protobuf.AbstractParser<RoutingSearchParameters>() {
    8448  @java.lang.Override
    8449  public RoutingSearchParameters parsePartialFrom(
    8450  com.google.protobuf.CodedInputStream input,
    8451  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    8452  throws com.google.protobuf.InvalidProtocolBufferException {
    8453  return new RoutingSearchParameters(input, extensionRegistry);
    8454  }
    8455  };
    8456 
    8457  public static com.google.protobuf.Parser<RoutingSearchParameters> parser() {
    8458  return PARSER;
    8459  }
    8460 
    8461  @java.lang.Override
    8463  return PARSER;
    8464  }
    8465 
    8466  @java.lang.Override
    8468  return DEFAULT_INSTANCE;
    8469  }
    8470 
    8471 }
    8472 
    + + -
    .lang.Override Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - - +
    .lang.Override Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + + -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.io.InputStream input)
    - - +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.io.InputStream input)
    + + - + - - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(byte[] data)
    - -
    .lang.Override Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    -
    .lang.Override com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
    - - - - - - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.ByteString data)
    - - - -
    .lang.Override Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
    - - - - - + + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(byte[] data)
    + +
    .lang.Override Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    +
    .lang.Override com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
    + + + + + + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.ByteString data)
    + + + +
    .lang.Override Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
    + + + + + - - + + - - - - - -
    Builder setUseCpSat(com.google.ortools.util.OptionalBoolean value)
    - - -
    Builder setLnsTimeLimit(com.google.protobuf.Duration.Builder builderForValue)
    - + + + + + +
    Builder setUseCpSat(com.google.ortools.util.OptionalBoolean value)
    + + +
    Builder setLnsTimeLimit(com.google.protobuf.Duration.Builder builderForValue)
    + - - - - - + + + + + - -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstanceForType()
    - + +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstanceForType()
    + -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.io.InputStream input)
    - - - - - - - - - - - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstance()
    +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.io.InputStream input)
    + + + + + + + + + + + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstance()
    + - - -
    .lang.Override final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    + + +
    .lang.Override final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    .lang.Override final com.google.protobuf.UnknownFieldSet getUnknownFields()
    -
    .lang.Override void writeTo(com.google.protobuf.CodedOutputStream output)
    - - +
    .lang.Override void writeTo(com.google.protobuf.CodedOutputStream output)
    + + -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstanceForType()
    -
    .lang.Override boolean equals(final java.lang.Object obj)
    - - - - - - - - - - -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators buildPartial()
    - - - +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstanceForType()
    +
    .lang.Override boolean equals(final java.lang.Object obj)
    + + + + + + + + + + +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators buildPartial()
    + + + - + - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + -
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    - - - - - +
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    + + + + + - - + + - - - + + + - - - - - - + + + + + + - -
    static Builder newBuilder(com.google.ortools.constraintsolver.RoutingSearchParameters prototype)
    + +
    static Builder newBuilder(com.google.ortools.constraintsolver.RoutingSearchParameters prototype)
    - - -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstanceForType()
    + + +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstanceForType()
    - - - -
    .lang.Override Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
    - -
    static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstance()
    - -
    .lang.Override com.google.protobuf.Parser< LocalSearchNeighborhoodOperators > getParserForType()
    - - -
    .lang.Override Builder mergeFrom(com.google.protobuf.Message other)
    - - -
    static Builder newBuilder(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators prototype)
    - - - - -
    com.google.ortools.constraintsolver.FirstSolutionStrategy.Value getFirstSolutionStrategy()
    -
    Builder mergeFrom(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators other)
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - + + + +
    .lang.Override Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
    + +
    static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstance()
    + +
    .lang.Override com.google.protobuf.Parser< LocalSearchNeighborhoodOperators > getParserForType()
    + + +
    .lang.Override Builder mergeFrom(com.google.protobuf.Message other)
    + + +
    static Builder newBuilder(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators prototype)
    + + + + +
    com.google.ortools.constraintsolver.FirstSolutionStrategy.Value getFirstSolutionStrategy()
    +
    Builder mergeFrom(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators other)
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + - - - - - - - -
    static com.google.protobuf.Parser< RoutingSearchParameters > parser()
    - -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters build()
    + + + + + + + +
    static com.google.protobuf.Parser< RoutingSearchParameters > parser()
    + +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters build()
    .lang.Override java.lang.Object newInstance(UnusedPrivateParameter unused)
    - - - - - + + + + + - - - - - - -
    Builder setFirstSolutionStrategy(com.google.ortools.constraintsolver.FirstSolutionStrategy.Value value)
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - - - + + + + + + +
    Builder setFirstSolutionStrategy(com.google.ortools.constraintsolver.FirstSolutionStrategy.Value value)
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + + + -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - -
    .lang.Override final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    - - - - - - - - - - - +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + +
    .lang.Override final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    + + + +
    Builder setLogCostOffset(double value)
    double log_cost_offset = 29;
    + + + + + + + + - - - - -
    Builder setLocalSearchMetaheuristic(com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value value)
    - - - - + + + + +
    Builder setLocalSearchMetaheuristic(com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value value)
    + + + + - - + + - - - - -
    .lang.Override Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - - - -
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder getLocalSearchOperatorsOrBuilder()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - - + + + + +
    .lang.Override Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + + + +
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder getLocalSearchOperatorsOrBuilder()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + + -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters buildPartial()
    -
    Builder setUseCp(com.google.ortools.util.OptionalBoolean value)
    +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters buildPartial()
    +
    Builder setUseCp(com.google.ortools.util.OptionalBoolean value)
    - -
    Builder setTimeLimit(com.google.protobuf.Duration.Builder builderForValue)
    - -
    .lang.Override Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
    - - - - - + +
    Builder setTimeLimit(com.google.protobuf.Duration.Builder builderForValue)
    + +
    .lang.Override Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
    + + + + + - -
    boolean hasLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - - - - -
    Builder clearLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.CodedInputStream input)
    - - - - - -
    .lang.Override Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.ByteString data)
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.nio.ByteBuffer data)
    - + +
    boolean hasLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + + + + +
    Builder clearLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.CodedInputStream input)
    + + + + + +
    .lang.Override Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.ByteString data)
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.nio.ByteBuffer data)
    + - - - - - - - + + + + + + + - + - -
    .lang.Override com.google.protobuf.Parser< RoutingSearchParameters > getParserForType()
    - - - + +
    .lang.Override com.google.protobuf.Parser< RoutingSearchParameters > getParserForType()
    + + + - - - -
    static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    - - - - - - + + + +
    static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    + + + + + + - -
    .lang.Override Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
    - -
    .lang.Override Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - - - + +
    .lang.Override Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
    + +
    .lang.Override Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + + + - - - + + + - -
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.CodedInputStream input)
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(byte[] data)
    - - - - - + +
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(com.google.protobuf.CodedInputStream input)
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(byte[] data)
    + + + + + - - + + - - - - - - - - - - - - -
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder getLocalSearchOperatorsOrBuilder()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - + + + + + + + + + + + + +
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder getLocalSearchOperatorsOrBuilder()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + -
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    +
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    - -
    Builder mergeLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators value)
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseDelimitedFrom(java.io.InputStream input)
    - - + +
    Builder mergeLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators value)
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseDelimitedFrom(java.io.InputStream input)
    + + - + - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseDelimitedFrom(java.io.InputStream input)
    - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseDelimitedFrom(java.io.InputStream input)
    + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + - + - - + + - - - - - + + + + + - - - - - -
    static com.google.protobuf.Parser< LocalSearchNeighborhoodOperators > parser()
    + + + + + +
    static com.google.protobuf.Parser< LocalSearchNeighborhoodOperators > parser()
    -
    .lang.Override Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
    - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - - - - - - +
    .lang.Override Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
    + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + - -
    Builder setLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators value)
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    -
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - - - - - - -
    .lang.Override Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
    - - -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstanceForType()
    - - - - - -
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    -
    .lang.Override Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
    + +
    Builder setLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators value)
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    +
    static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + + + + + + +
    .lang.Override Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
    + + +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstanceForType()
    + + + + + +
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    +
    .lang.Override Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
    - + - - -
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    - - - - - -
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.nio.ByteBuffer data)
    - - - + + +
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    + + + + + +
    static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.nio.ByteBuffer data)
    + + +
    .lang.Deprecated static OptionalBoolean valueOf(int value)
    - -
    .lang.Override final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    - - -
    com.google.ortools.constraintsolver.FirstSolutionStrategy.Value getFirstSolutionStrategy()
    - + +
    .lang.Override final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    + + +
    com.google.ortools.constraintsolver.FirstSolutionStrategy.Value getFirstSolutionStrategy()
    + - - -
    .lang.Override Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    -
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder getLocalSearchOperatorsBuilder()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + + +
    .lang.Override Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    +
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder getLocalSearchOperatorsBuilder()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    -
    com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value getLocalSearchMetaheuristic()
    - +
    com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value getLocalSearchMetaheuristic()
    + - - - -
    Builder setLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder builderForValue)
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    -
    Builder mergeFrom(com.google.ortools.constraintsolver.RoutingSearchParameters other)
    - -
    .lang.Override final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    - - -
    com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value getLocalSearchMetaheuristic()
    - - - + + + +
    Builder setLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder builderForValue)
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    +
    Builder mergeFrom(com.google.ortools.constraintsolver.RoutingSearchParameters other)
    + +
    .lang.Override final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    + + +
    com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value getLocalSearchMetaheuristic()
    + + + - - - - + + + + - - - - - - -
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators build()
    - - - - + + + + + + +
    .lang.Override com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators build()
    + + + + - - - -
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - - - - + + + +
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + + + + - - - - - - - - - - - -
    boolean hasLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    - + + + + + + + + + + + +
    boolean hasLocalSearchOperators()
    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators ...
    + - - -
    .lang.Override Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
    + + +
    .lang.Override Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
    - +
    -Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/sat/sat_parameters.proto
    3 
    4 package com.google.ortools.sat;
    5 
    6 public interface SatParametersOrBuilder extends
    7  // @@protoc_insertion_point(interface_extends:operations_research.sat.SatParameters)
    8  com.google.protobuf.MessageOrBuilder {
    9 
    13  boolean hasPreferredVariableOrder();
    18 
    22  boolean hasInitialPolarity();
    27 
    41  boolean hasUsePhaseSaving();
    55  boolean getUsePhaseSaving();
    56 
    68  boolean hasRandomPolarityRatio();
    80  double getRandomPolarityRatio();
    81 
    91  boolean hasRandomBranchesRatio();
    101  double getRandomBranchesRatio();
    102 
    112  boolean hasUseErwaHeuristic();
    122  boolean getUseErwaHeuristic();
    123 
    136  boolean hasInitialVariablesActivity();
    150 
    173 
    177  boolean hasMinimizationAlgorithm();
    182 
    191 
    214 
    222  boolean hasClauseCleanupPeriod();
    231 
    240  boolean hasClauseCleanupTarget();
    250 
    254  boolean hasClauseCleanupProtection();
    259 
    268  boolean hasClauseCleanupLbdBound();
    278 
    282  boolean hasClauseCleanupOrdering();
    287 
    295  boolean hasPbCleanupIncrement();
    303  int getPbCleanupIncrement();
    304 
    308  boolean hasPbCleanupRatio();
    312  double getPbCleanupRatio();
    313 
    350 
    359 
    373  boolean hasVariableActivityDecay();
    387  double getVariableActivityDecay();
    388 
    392  boolean hasMaxVariableActivityValue();
    397 
    408  boolean hasGlucoseMaxDecay();
    419  double getGlucoseMaxDecay();
    420 
    424  boolean hasGlucoseDecayIncrement();
    428  double getGlucoseDecayIncrement();
    429 
    438 
    446  boolean hasClauseActivityDecay();
    454  double getClauseActivityDecay();
    455 
    459  boolean hasMaxClauseActivityValue();
    463  double getMaxClauseActivityValue();
    464 
    510 
    514  boolean hasDefaultRestartAlgorithms();
    518  java.lang.String getDefaultRestartAlgorithms();
    522  com.google.protobuf.ByteString
    524 
    533  boolean hasRestartPeriod();
    542  int getRestartPeriod();
    543 
    551  boolean hasRestartRunningWindowSize();
    560 
    569  boolean hasRestartDlAverageRatio();
    578  double getRestartDlAverageRatio();
    579 
    583  boolean hasRestartLbdAverageRatio();
    587  double getRestartLbdAverageRatio();
    588 
    598  boolean hasUseBlockingRestart();
    608  boolean getUseBlockingRestart();
    609 
    618 
    627 
    648 
    667 
    677  boolean hasMaxTimeInSeconds();
    687  double getMaxTimeInSeconds();
    688 
    700  boolean hasMaxDeterministicTime();
    712  double getMaxDeterministicTime();
    713 
    726  boolean hasMaxNumberOfConflicts();
    740 
    751  boolean hasMaxMemoryInMb();
    762  long getMaxMemoryInMb();
    763 
    784 
    797  boolean hasRandomSeed();
    810  int getRandomSeed();
    811 
    819  boolean hasLogSearchProgress();
    827  boolean getLogSearchProgress();
    828 
    839  boolean hasUsePbResolution();
    850  boolean getUsePbResolution();
    851 
    874 
    905 
    915  boolean hasPresolveBveThreshold();
    926 
    935  boolean hasPresolveBveClauseWeight();
    945 
    964 
    973  boolean hasPresolveBlockedClause();
    982  boolean getPresolveBlockedClause();
    983 
    991  boolean hasPresolveUseBva();
    999  boolean getPresolveUseBva();
    1000 
    1011  boolean hasPresolveBvaThreshold();
    1023 
    1034  boolean hasUseOptimizationHints();
    1045  boolean getUseOptimizationHints();
    1046 
    1054  boolean hasMinimizeCore();
    1062  boolean getMinimizeCore();
    1063 
    1072  boolean hasFindMultipleCores();
    1081  boolean getFindMultipleCores();
    1082 
    1091  boolean hasCoverOptimization();
    1100  boolean getCoverOptimization();
    1101 
    1105  boolean hasMaxSatAssumptionOrder();
    1110 
    1129 
    1133  boolean hasMaxSatStratification();
    1138 
    1169 
    1196 
    1223 
    1254 
    1265  boolean hasLinearizationLevel();
    1276  int getLinearizationLevel();
    1277 
    1286  boolean hasBooleanEncodingLevel();
    1296 
    1305  boolean hasMaxNumCuts();
    1314  int getMaxNumCuts();
    1315 
    1324  boolean hasOnlyAddCutsAtLevelZero();
    1333  boolean getOnlyAddCutsAtLevelZero();
    1334 
    1344  boolean hasAddKnapsackCuts();
    1354  boolean getAddKnapsackCuts();
    1355 
    1364  boolean hasAddCgCuts();
    1373  boolean getAddCgCuts();
    1374 
    1383  boolean hasAddMirCuts();
    1392  boolean getAddMirCuts();
    1393 
    1403  boolean hasUseMirRounding();
    1413  boolean getUseMirRounding();
    1414 
    1426  boolean hasMaxIntegerRoundingScaling();
    1439 
    1450  boolean hasAddLpConstraintsLazily();
    1461  boolean getAddLpConstraintsLazily();
    1462 
    1487 
    1496  boolean hasMaxInactiveCount();
    1505  long getMaxInactiveCount();
    1506 
    1525 
    1529  boolean hasSearchBranching();
    1534 
    1545  boolean hasExploitIntegerLpSolution();
    1556  boolean getExploitIntegerLpSolution();
    1557 
    1567  boolean hasExploitAllLpSolution();
    1577  boolean getExploitAllLpSolution();
    1578 
    1586  boolean hasExploitBestSolution();
    1594  boolean getExploitBestSolution();
    1595 
    1604  boolean hasExploitObjective();
    1613  boolean getExploitObjective();
    1614 
    1633 
    1644  boolean hasOptimizeWithCore();
    1655  boolean getOptimizeWithCore();
    1656 
    1667  boolean hasBinarySearchNumConflicts();
    1679 
    1692  boolean hasOptimizeWithMaxHs();
    1705  boolean getOptimizeWithMaxHs();
    1706 
    1714  boolean hasCpModelPresolve();
    1722  boolean getCpModelPresolve();
    1723 
    1731  boolean hasCpModelProbingLevel();
    1739  int getCpModelProbingLevel();
    1740 
    1748  boolean hasCpModelUseSatPresolve();
    1756  boolean getCpModelUseSatPresolve();
    1757 
    1770  boolean hasEnumerateAllSolutions();
    1783  boolean getEnumerateAllSolutions();
    1784 
    1809 
    1818  boolean hasInstantiateAllVariables();
    1827  boolean getInstantiateAllVariables();
    1828 
    1851 
    1859  boolean hasStopAfterFirstSolution();
    1867  boolean getStopAfterFirstSolution();
    1868 
    1877  boolean hasNumSearchWorkers();
    1886  int getNumSearchWorkers();
    1887 
    1898  boolean hasInterleaveSearch();
    1909  boolean getInterleaveSearch();
    1910 
    1931 
    1939  boolean hasShareObjectiveBounds();
    1947  boolean getShareObjectiveBounds();
    1948 
    1956  boolean hasShareLevelZeroBounds();
    1964  boolean getShareLevelZeroBounds();
    1965 
    1973  boolean hasUseLnsOnly();
    1981  boolean getUseLnsOnly();
    1982 
    1991 
    1999  boolean hasUseRinsLns();
    2007  boolean getUseRinsLns();
    2008 
    2016  boolean hasRandomizeSearch();
    2024  boolean getRandomizeSearch();
    2025 
    2054 
    2064  boolean hasUseOptionalVariables();
    2074  boolean getUseOptionalVariables();
    2075 
    2086  boolean hasUseExactLpReason();
    2097  boolean getUseExactLpReason();
    2098 
    2108  boolean hasUseCombinedNoOverlap();
    2118  boolean getUseCombinedNoOverlap();
    2119 
    2129  boolean hasMipMaxBound();
    2139  double getMipMaxBound();
    2140 
    2150  boolean hasMipVarScaling();
    2160  double getMipVarScaling();
    2161 
    2177  boolean hasMipWantedPrecision();
    2193  double getMipWantedPrecision();
    2194 
    2208  boolean hasMipMaxActivityExponent();
    2223 
    2234  boolean hasMipCheckPrecision();
    2245  double getMipCheckPrecision();
    2246 
    2256  boolean hasCatchSigintSignal();
    2266  boolean getCatchSigintSignal();
    2267 }
    +Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/sat/sat_parameters.proto
    3 
    4 package com.google.ortools.sat;
    5 
    6 public interface SatParametersOrBuilder extends
    7  // @@protoc_insertion_point(interface_extends:operations_research.sat.SatParameters)
    8  com.google.protobuf.MessageOrBuilder {
    9 
    13  boolean hasPreferredVariableOrder();
    18 
    22  boolean hasInitialPolarity();
    27 
    41  boolean hasUsePhaseSaving();
    55  boolean getUsePhaseSaving();
    56 
    68  boolean hasRandomPolarityRatio();
    80  double getRandomPolarityRatio();
    81 
    91  boolean hasRandomBranchesRatio();
    101  double getRandomBranchesRatio();
    102 
    112  boolean hasUseErwaHeuristic();
    122  boolean getUseErwaHeuristic();
    123 
    136  boolean hasInitialVariablesActivity();
    150 
    173 
    177  boolean hasMinimizationAlgorithm();
    182 
    191 
    214 
    222  boolean hasClauseCleanupPeriod();
    231 
    240  boolean hasClauseCleanupTarget();
    250 
    254  boolean hasClauseCleanupProtection();
    259 
    268  boolean hasClauseCleanupLbdBound();
    278 
    282  boolean hasClauseCleanupOrdering();
    287 
    295  boolean hasPbCleanupIncrement();
    303  int getPbCleanupIncrement();
    304 
    308  boolean hasPbCleanupRatio();
    312  double getPbCleanupRatio();
    313 
    350 
    359 
    373  boolean hasVariableActivityDecay();
    387  double getVariableActivityDecay();
    388 
    392  boolean hasMaxVariableActivityValue();
    397 
    408  boolean hasGlucoseMaxDecay();
    419  double getGlucoseMaxDecay();
    420 
    424  boolean hasGlucoseDecayIncrement();
    428  double getGlucoseDecayIncrement();
    429 
    438 
    446  boolean hasClauseActivityDecay();
    454  double getClauseActivityDecay();
    455 
    459  boolean hasMaxClauseActivityValue();
    463  double getMaxClauseActivityValue();
    464 
    510 
    514  boolean hasDefaultRestartAlgorithms();
    518  java.lang.String getDefaultRestartAlgorithms();
    522  com.google.protobuf.ByteString
    524 
    533  boolean hasRestartPeriod();
    542  int getRestartPeriod();
    543 
    551  boolean hasRestartRunningWindowSize();
    560 
    569  boolean hasRestartDlAverageRatio();
    578  double getRestartDlAverageRatio();
    579 
    583  boolean hasRestartLbdAverageRatio();
    587  double getRestartLbdAverageRatio();
    588 
    598  boolean hasUseBlockingRestart();
    608  boolean getUseBlockingRestart();
    609 
    618 
    627 
    648 
    667 
    677  boolean hasMaxTimeInSeconds();
    687  double getMaxTimeInSeconds();
    688 
    700  boolean hasMaxDeterministicTime();
    712  double getMaxDeterministicTime();
    713 
    726  boolean hasMaxNumberOfConflicts();
    740 
    751  boolean hasMaxMemoryInMb();
    762  long getMaxMemoryInMb();
    763 
    784 
    797  boolean hasRandomSeed();
    810  int getRandomSeed();
    811 
    819  boolean hasLogSearchProgress();
    827  boolean getLogSearchProgress();
    828 
    839  boolean hasUsePbResolution();
    850  boolean getUsePbResolution();
    851 
    874 
    905 
    915  boolean hasPresolveBveThreshold();
    926 
    935  boolean hasPresolveBveClauseWeight();
    945 
    964 
    973  boolean hasPresolveBlockedClause();
    982  boolean getPresolveBlockedClause();
    983 
    991  boolean hasPresolveUseBva();
    999  boolean getPresolveUseBva();
    1000 
    1011  boolean hasPresolveBvaThreshold();
    1023 
    1034  boolean hasUseOptimizationHints();
    1045  boolean getUseOptimizationHints();
    1046 
    1054  boolean hasMinimizeCore();
    1062  boolean getMinimizeCore();
    1063 
    1072  boolean hasFindMultipleCores();
    1081  boolean getFindMultipleCores();
    1082 
    1091  boolean hasCoverOptimization();
    1100  boolean getCoverOptimization();
    1101 
    1105  boolean hasMaxSatAssumptionOrder();
    1110 
    1129 
    1133  boolean hasMaxSatStratification();
    1138 
    1169 
    1196 
    1223 
    1254 
    1265  boolean hasLinearizationLevel();
    1276  int getLinearizationLevel();
    1277 
    1286  boolean hasBooleanEncodingLevel();
    1296 
    1307  boolean hasMaxNumCuts();
    1318  int getMaxNumCuts();
    1319 
    1328  boolean hasOnlyAddCutsAtLevelZero();
    1337  boolean getOnlyAddCutsAtLevelZero();
    1338 
    1348  boolean hasAddKnapsackCuts();
    1358  boolean getAddKnapsackCuts();
    1359 
    1368  boolean hasAddCgCuts();
    1377  boolean getAddCgCuts();
    1378 
    1387  boolean hasAddMirCuts();
    1396  boolean getAddMirCuts();
    1397 
    1407  boolean hasUseMirRounding();
    1417  boolean getUseMirRounding();
    1418 
    1430  boolean hasMaxIntegerRoundingScaling();
    1443 
    1454  boolean hasAddLpConstraintsLazily();
    1465  boolean getAddLpConstraintsLazily();
    1466 
    1491 
    1500  boolean hasMaxInactiveCount();
    1509  long getMaxInactiveCount();
    1510 
    1529 
    1533  boolean hasSearchBranching();
    1538 
    1549  boolean hasExploitIntegerLpSolution();
    1560  boolean getExploitIntegerLpSolution();
    1561 
    1571  boolean hasExploitAllLpSolution();
    1581  boolean getExploitAllLpSolution();
    1582 
    1590  boolean hasExploitBestSolution();
    1598  boolean getExploitBestSolution();
    1599 
    1608  boolean hasExploitObjective();
    1617  boolean getExploitObjective();
    1618 
    1637 
    1648  boolean hasOptimizeWithCore();
    1659  boolean getOptimizeWithCore();
    1660 
    1671  boolean hasBinarySearchNumConflicts();
    1683 
    1696  boolean hasOptimizeWithMaxHs();
    1709  boolean getOptimizeWithMaxHs();
    1710 
    1718  boolean hasCpModelPresolve();
    1726  boolean getCpModelPresolve();
    1727 
    1735  boolean hasCpModelProbingLevel();
    1743  int getCpModelProbingLevel();
    1744 
    1752  boolean hasCpModelUseSatPresolve();
    1760  boolean getCpModelUseSatPresolve();
    1761 
    1774  boolean hasEnumerateAllSolutions();
    1787  boolean getEnumerateAllSolutions();
    1788 
    1813 
    1822  boolean hasInstantiateAllVariables();
    1831  boolean getInstantiateAllVariables();
    1832 
    1855 
    1863  boolean hasStopAfterFirstSolution();
    1871  boolean getStopAfterFirstSolution();
    1872 
    1881  boolean hasNumSearchWorkers();
    1890  int getNumSearchWorkers();
    1891 
    1902  boolean hasInterleaveSearch();
    1913  boolean getInterleaveSearch();
    1914 
    1935 
    1943  boolean hasShareObjectiveBounds();
    1951  boolean getShareObjectiveBounds();
    1952 
    1960  boolean hasShareLevelZeroBounds();
    1968  boolean getShareLevelZeroBounds();
    1969 
    1977  boolean hasUseLnsOnly();
    1985  boolean getUseLnsOnly();
    1986 
    1995 
    2003  boolean hasUseRinsLns();
    2011  boolean getUseRinsLns();
    2012 
    2020  boolean hasRandomizeSearch();
    2028  boolean getRandomizeSearch();
    2029 
    2058 
    2068  boolean hasUseOptionalVariables();
    2078  boolean getUseOptionalVariables();
    2079 
    2090  boolean hasUseExactLpReason();
    2101  boolean getUseExactLpReason();
    2102 
    2112  boolean hasUseCombinedNoOverlap();
    2122  boolean getUseCombinedNoOverlap();
    2123 
    2133  boolean hasMipMaxBound();
    2143  double getMipMaxBound();
    2144 
    2154  boolean hasMipVarScaling();
    2164  double getMipVarScaling();
    2165 
    2181  boolean hasMipWantedPrecision();
    2197  double getMipWantedPrecision();
    2198 
    2212  boolean hasMipMaxActivityExponent();
    2227 
    2238  boolean hasMipCheckPrecision();
    2249  double getMipCheckPrecision();
    2250 
    2260  boolean hasCatchSigintSignal();
    2270  boolean getCatchSigintSignal();
    2271 }
    diff --git a/docs/java/SatParameters_8java_source.html b/docs/java/SatParameters_8java_source.html index 19374ee28b..e9e8aed928 100644 --- a/docs/java/SatParameters_8java_source.html +++ b/docs/java/SatParameters_8java_source.html @@ -42,998 +42,998 @@
    SatParameters.java
    -Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/sat/sat_parameters.proto
    3 
    4 package com.google.ortools.sat;
    5 
    15 public final class SatParameters extends
    16  com.google.protobuf.GeneratedMessageV3 implements
    17  // @@protoc_insertion_point(message_implements:operations_research.sat.SatParameters)
    19 private static final long serialVersionUID = 0L;
    20  // Use SatParameters.newBuilder() to construct.
    21  private SatParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    22  super(builder);
    23  }
    24  private SatParameters() {
    25  preferredVariableOrder_ = 0;
    26  initialPolarity_ = 1;
    27  usePhaseSaving_ = true;
    28  minimizationAlgorithm_ = 2;
    29  binaryMinimizationAlgorithm_ = 1;
    30  subsumptionDuringConflictAnalysis_ = true;
    31  clauseCleanupPeriod_ = 10000;
    32  clauseCleanupTarget_ = 10000;
    33  clauseCleanupProtection_ = 0;
    34  clauseCleanupLbdBound_ = 5;
    35  clauseCleanupOrdering_ = 0;
    36  pbCleanupIncrement_ = 200;
    37  pbCleanupRatio_ = 0.5D;
    38  minimizeWithPropagationRestartPeriod_ = 10;
    39  minimizeWithPropagationNumDecisions_ = 1000;
    40  variableActivityDecay_ = 0.8D;
    41  maxVariableActivityValue_ = 1e+100D;
    42  glucoseMaxDecay_ = 0.95D;
    43  glucoseDecayIncrement_ = 0.01D;
    44  glucoseDecayIncrementPeriod_ = 5000;
    45  clauseActivityDecay_ = 0.999D;
    46  maxClauseActivityValue_ = 1e+20D;
    47  restartAlgorithms_ = java.util.Collections.emptyList();
    48  defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
    49  restartPeriod_ = 50;
    50  restartRunningWindowSize_ = 50;
    51  restartDlAverageRatio_ = 1D;
    52  restartLbdAverageRatio_ = 1D;
    53  blockingRestartWindowSize_ = 5000;
    54  blockingRestartMultiplier_ = 1.4D;
    55  maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    56  maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    57  maxNumberOfConflicts_ = 9223372036854775807L;
    58  maxMemoryInMb_ = 10000L;
    59  treatBinaryClausesSeparately_ = true;
    60  randomSeed_ = 1;
    61  countAssumptionLevelsInLbd_ = true;
    62  presolveBveThreshold_ = 500;
    63  presolveBveClauseWeight_ = 3;
    64  presolveProbingDeterministicTimeLimit_ = 30D;
    65  presolveBlockedClause_ = true;
    66  presolveUseBva_ = true;
    67  presolveBvaThreshold_ = 1;
    68  useOptimizationHints_ = true;
    69  minimizeCore_ = true;
    70  findMultipleCores_ = true;
    71  coverOptimization_ = true;
    72  maxSatAssumptionOrder_ = 0;
    73  maxSatStratification_ = 1;
    74  usePrecedencesInDisjunctiveConstraint_ = true;
    75  useDisjunctiveConstraintInCumulativeConstraint_ = true;
    76  linearizationLevel_ = 1;
    77  booleanEncodingLevel_ = 1;
    78  maxNumCuts_ = 1000;
    79  addMirCuts_ = true;
    80  useMirRounding_ = true;
    81  maxIntegerRoundingScaling_ = 600;
    82  addLpConstraintsLazily_ = true;
    83  maxInactiveCount_ = 1000L;
    84  constraintRemovalBatchSize_ = 100L;
    85  searchBranching_ = 0;
    86  exploitIntegerLpSolution_ = true;
    87  exploitAllLpSolution_ = true;
    88  exploitObjective_ = true;
    89  pseudoCostReliabilityThreshold_ = 100L;
    90  binarySearchNumConflicts_ = -1;
    91  cpModelPresolve_ = true;
    92  cpModelProbingLevel_ = 2;
    93  cpModelUseSatPresolve_ = true;
    94  instantiateAllVariables_ = true;
    95  autoDetectGreaterThanAtLeastOneOf_ = true;
    96  numSearchWorkers_ = 1;
    97  shareObjectiveBounds_ = true;
    98  shareLevelZeroBounds_ = true;
    99  useRinsLns_ = true;
    100  useOptionalVariables_ = true;
    101  useExactLpReason_ = true;
    102  mipMaxBound_ = 10000000D;
    103  mipVarScaling_ = 1D;
    104  mipWantedPrecision_ = 1e-06D;
    105  mipMaxActivityExponent_ = 53;
    106  mipCheckPrecision_ = 0.0001D;
    107  catchSigintSignal_ = true;
    108  }
    109 
    110  @java.lang.Override
    111  @SuppressWarnings({"unused"})
    112  protected java.lang.Object newInstance(
    113  UnusedPrivateParameter unused) {
    114  return new SatParameters();
    115  }
    116 
    117  @java.lang.Override
    118  public final com.google.protobuf.UnknownFieldSet
    120  return this.unknownFields;
    121  }
    122  private SatParameters(
    123  com.google.protobuf.CodedInputStream input,
    124  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    125  throws com.google.protobuf.InvalidProtocolBufferException {
    126  this();
    127  if (extensionRegistry == null) {
    128  throw new java.lang.NullPointerException();
    129  }
    130  int mutable_bitField0_ = 0;
    131  int mutable_bitField1_ = 0;
    132  int mutable_bitField2_ = 0;
    133  int mutable_bitField3_ = 0;
    134  com.google.protobuf.UnknownFieldSet.Builder unknownFields =
    135  com.google.protobuf.UnknownFieldSet.newBuilder();
    136  try {
    137  boolean done = false;
    138  while (!done) {
    139  int tag = input.readTag();
    140  switch (tag) {
    141  case 0:
    142  done = true;
    143  break;
    144  case 8: {
    145  int rawValue = input.readEnum();
    146  @SuppressWarnings("deprecation")
    147  com.google.ortools.sat.SatParameters.VariableOrder value = com.google.ortools.sat.SatParameters.VariableOrder.valueOf(rawValue);
    148  if (value == null) {
    149  unknownFields.mergeVarintField(1, rawValue);
    150  } else {
    151  bitField0_ |= 0x00000001;
    152  preferredVariableOrder_ = rawValue;
    153  }
    154  break;
    155  }
    156  case 16: {
    157  int rawValue = input.readEnum();
    158  @SuppressWarnings("deprecation")
    159  com.google.ortools.sat.SatParameters.Polarity value = com.google.ortools.sat.SatParameters.Polarity.valueOf(rawValue);
    160  if (value == null) {
    161  unknownFields.mergeVarintField(2, rawValue);
    162  } else {
    163  bitField0_ |= 0x00000002;
    164  initialPolarity_ = rawValue;
    165  }
    166  break;
    167  }
    168  case 32: {
    169  int rawValue = input.readEnum();
    170  @SuppressWarnings("deprecation")
    171  com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm value = com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.valueOf(rawValue);
    172  if (value == null) {
    173  unknownFields.mergeVarintField(4, rawValue);
    174  } else {
    175  bitField0_ |= 0x00000100;
    176  minimizationAlgorithm_ = rawValue;
    177  }
    178  break;
    179  }
    180  case 88: {
    181  bitField0_ |= 0x00000800;
    182  clauseCleanupPeriod_ = input.readInt32();
    183  break;
    184  }
    185  case 104: {
    186  bitField0_ |= 0x00001000;
    187  clauseCleanupTarget_ = input.readInt32();
    188  break;
    189  }
    190  case 121: {
    191  bitField0_ |= 0x00100000;
    192  variableActivityDecay_ = input.readDouble();
    193  break;
    194  }
    195  case 129: {
    196  bitField0_ |= 0x00200000;
    197  maxVariableActivityValue_ = input.readDouble();
    198  break;
    199  }
    200  case 137: {
    201  bitField0_ |= 0x02000000;
    202  clauseActivityDecay_ = input.readDouble();
    203  break;
    204  }
    205  case 145: {
    206  bitField0_ |= 0x04000000;
    207  maxClauseActivityValue_ = input.readDouble();
    208  break;
    209  }
    210  case 177: {
    211  bitField0_ |= 0x00400000;
    212  glucoseMaxDecay_ = input.readDouble();
    213  break;
    214  }
    215  case 185: {
    216  bitField0_ |= 0x00800000;
    217  glucoseDecayIncrement_ = input.readDouble();
    218  break;
    219  }
    220  case 192: {
    221  bitField0_ |= 0x01000000;
    222  glucoseDecayIncrementPeriod_ = input.readInt32();
    223  break;
    224  }
    225  case 240: {
    226  bitField0_ |= 0x10000000;
    227  restartPeriod_ = input.readInt32();
    228  break;
    229  }
    230  case 248: {
    231  bitField1_ |= 0x00000400;
    232  randomSeed_ = input.readInt32();
    233  break;
    234  }
    235  case 257: {
    236  bitField0_ |= 0x00000010;
    237  randomBranchesRatio_ = input.readDouble();
    238  break;
    239  }
    240  case 264: {
    241  bitField1_ |= 0x00000200;
    242  treatBinaryClausesSeparately_ = input.readBool();
    243  break;
    244  }
    245  case 272: {
    246  int rawValue = input.readEnum();
    247  @SuppressWarnings("deprecation")
    248  com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm value = com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm.valueOf(rawValue);
    249  if (value == null) {
    250  unknownFields.mergeVarintField(34, rawValue);
    251  } else {
    252  bitField0_ |= 0x00000200;
    253  binaryMinimizationAlgorithm_ = rawValue;
    254  }
    255  break;
    256  }
    257  case 280: {
    258  bitField1_ |= 0x00200000;
    259  useOptimizationHints_ = input.readBool();
    260  break;
    261  }
    262  case 289: {
    263  bitField1_ |= 0x00000020;
    264  maxTimeInSeconds_ = input.readDouble();
    265  break;
    266  }
    267  case 296: {
    268  bitField1_ |= 0x00000080;
    269  maxNumberOfConflicts_ = input.readInt64();
    270  break;
    271  }
    272  case 320: {
    273  bitField1_ |= 0x00000100;
    274  maxMemoryInMb_ = input.readInt64();
    275  break;
    276  }
    277  case 328: {
    278  bitField1_ |= 0x00000800;
    279  logSearchProgress_ = input.readBool();
    280  break;
    281  }
    282  case 344: {
    283  bitField1_ |= 0x00001000;
    284  usePbResolution_ = input.readBool();
    285  break;
    286  }
    287  case 352: {
    288  bitField0_ |= 0x00000004;
    289  usePhaseSaving_ = input.readBool();
    290  break;
    291  }
    292  case 361: {
    293  bitField0_ |= 0x00000008;
    294  randomPolarityRatio_ = input.readDouble();
    295  break;
    296  }
    297  case 368: {
    298  bitField0_ |= 0x00010000;
    299  pbCleanupIncrement_ = input.readInt32();
    300  break;
    301  }
    302  case 377: {
    303  bitField0_ |= 0x00020000;
    304  pbCleanupRatio_ = input.readDouble();
    305  break;
    306  }
    307  case 384: {
    308  bitField1_ |= 0x00002000;
    309  minimizeReductionDuringPbResolution_ = input.readBool();
    310  break;
    311  }
    312  case 392: {
    313  bitField1_ |= 0x00004000;
    314  countAssumptionLevelsInLbd_ = input.readBool();
    315  break;
    316  }
    317  case 400: {
    318  bitField1_ |= 0x00400000;
    319  minimizeCore_ = input.readBool();
    320  break;
    321  }
    322  case 408: {
    323  int rawValue = input.readEnum();
    324  @SuppressWarnings("deprecation")
    325  com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder value = com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder.valueOf(rawValue);
    326  if (value == null) {
    327  unknownFields.mergeVarintField(51, rawValue);
    328  } else {
    329  bitField1_ |= 0x02000000;
    330  maxSatAssumptionOrder_ = rawValue;
    331  }
    332  break;
    333  }
    334  case 416: {
    335  bitField1_ |= 0x04000000;
    336  maxSatReverseAssumptionOrder_ = input.readBool();
    337  break;
    338  }
    339  case 424: {
    340  int rawValue = input.readEnum();
    341  @SuppressWarnings("deprecation")
    342  com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm value = com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm.valueOf(rawValue);
    343  if (value == null) {
    344  unknownFields.mergeVarintField(53, rawValue);
    345  } else {
    346  bitField1_ |= 0x08000000;
    347  maxSatStratification_ = rawValue;
    348  }
    349  break;
    350  }
    351  case 432: {
    352  bitField1_ |= 0x00008000;
    353  presolveBveThreshold_ = input.readInt32();
    354  break;
    355  }
    356  case 440: {
    357  bitField1_ |= 0x00010000;
    358  presolveBveClauseWeight_ = input.readInt32();
    359  break;
    360  }
    361  case 448: {
    362  bitField0_ |= 0x00000400;
    363  subsumptionDuringConflictAnalysis_ = input.readBool();
    364  break;
    365  }
    366  case 457: {
    367  bitField1_ |= 0x00020000;
    368  presolveProbingDeterministicTimeLimit_ = input.readDouble();
    369  break;
    370  }
    371  case 464: {
    372  int rawValue = input.readEnum();
    373  @SuppressWarnings("deprecation")
    374  com.google.ortools.sat.SatParameters.ClauseProtection value = com.google.ortools.sat.SatParameters.ClauseProtection.valueOf(rawValue);
    375  if (value == null) {
    376  unknownFields.mergeVarintField(58, rawValue);
    377  } else {
    378  bitField0_ |= 0x00002000;
    379  clauseCleanupProtection_ = rawValue;
    380  }
    381  break;
    382  }
    383  case 472: {
    384  bitField0_ |= 0x00004000;
    385  clauseCleanupLbdBound_ = input.readInt32();
    386  break;
    387  }
    388  case 480: {
    389  int rawValue = input.readEnum();
    390  @SuppressWarnings("deprecation")
    391  com.google.ortools.sat.SatParameters.ClauseOrdering value = com.google.ortools.sat.SatParameters.ClauseOrdering.valueOf(rawValue);
    392  if (value == null) {
    393  unknownFields.mergeVarintField(60, rawValue);
    394  } else {
    395  bitField0_ |= 0x00008000;
    396  clauseCleanupOrdering_ = rawValue;
    397  }
    398  break;
    399  }
    400  case 488: {
    401  int rawValue = input.readEnum();
    402  @SuppressWarnings("deprecation")
    403  com.google.ortools.sat.SatParameters.RestartAlgorithm value = com.google.ortools.sat.SatParameters.RestartAlgorithm.valueOf(rawValue);
    404  if (value == null) {
    405  unknownFields.mergeVarintField(61, rawValue);
    406  } else {
    407  if (!((mutable_bitField0_ & 0x08000000) != 0)) {
    408  restartAlgorithms_ = new java.util.ArrayList<java.lang.Integer>();
    409  mutable_bitField0_ |= 0x08000000;
    410  }
    411  restartAlgorithms_.add(rawValue);
    412  }
    413  break;
    414  }
    415  case 490: {
    416  int length = input.readRawVarint32();
    417  int oldLimit = input.pushLimit(length);
    418  while(input.getBytesUntilLimit() > 0) {
    419  int rawValue = input.readEnum();
    420  @SuppressWarnings("deprecation")
    421  com.google.ortools.sat.SatParameters.RestartAlgorithm value = com.google.ortools.sat.SatParameters.RestartAlgorithm.valueOf(rawValue);
    422  if (value == null) {
    423  unknownFields.mergeVarintField(61, rawValue);
    424  } else {
    425  if (!((mutable_bitField0_ & 0x08000000) != 0)) {
    426  restartAlgorithms_ = new java.util.ArrayList<java.lang.Integer>();
    427  mutable_bitField0_ |= 0x08000000;
    428  }
    429  restartAlgorithms_.add(rawValue);
    430  }
    431  }
    432  input.popLimit(oldLimit);
    433  break;
    434  }
    435  case 496: {
    436  bitField0_ |= 0x20000000;
    437  restartRunningWindowSize_ = input.readInt32();
    438  break;
    439  }
    440  case 505: {
    441  bitField0_ |= 0x40000000;
    442  restartDlAverageRatio_ = input.readDouble();
    443  break;
    444  }
    445  case 512: {
    446  bitField1_ |= 0x00000001;
    447  useBlockingRestart_ = input.readBool();
    448  break;
    449  }
    450  case 520: {
    451  bitField1_ |= 0x00000002;
    452  blockingRestartWindowSize_ = input.readInt32();
    453  break;
    454  }
    455  case 529: {
    456  bitField1_ |= 0x00000004;
    457  blockingRestartMultiplier_ = input.readDouble();
    458  break;
    459  }
    460  case 537: {
    461  bitField1_ |= 0x00000040;
    462  maxDeterministicTime_ = input.readDouble();
    463  break;
    464  }
    465  case 544: {
    466  bitField1_ |= 0x00000008;
    467  numConflictsBeforeStrategyChanges_ = input.readInt32();
    468  break;
    469  }
    470  case 553: {
    471  bitField1_ |= 0x00000010;
    472  strategyChangeIncreaseRatio_ = input.readDouble();
    473  break;
    474  }
    475  case 562: {
    476  com.google.protobuf.ByteString bs = input.readBytes();
    477  bitField0_ |= 0x08000000;
    478  defaultRestartAlgorithms_ = bs;
    479  break;
    480  }
    481  case 569: {
    482  bitField0_ |= 0x80000000;
    483  restartLbdAverageRatio_ = input.readDouble();
    484  break;
    485  }
    486  case 576: {
    487  bitField1_ |= 0x00080000;
    488  presolveUseBva_ = input.readBool();
    489  break;
    490  }
    491  case 584: {
    492  bitField1_ |= 0x00100000;
    493  presolveBvaThreshold_ = input.readInt32();
    494  break;
    495  }
    496  case 592: {
    497  bitField1_ |= 0x10000000;
    498  usePrecedencesInDisjunctiveConstraint_ = input.readBool();
    499  break;
    500  }
    501  case 600: {
    502  bitField0_ |= 0x00000020;
    503  useErwaHeuristic_ = input.readBool();
    504  break;
    505  }
    506  case 609: {
    507  bitField0_ |= 0x00000040;
    508  initialVariablesActivity_ = input.readDouble();
    509  break;
    510  }
    511  case 616: {
    512  bitField0_ |= 0x00000080;
    513  alsoBumpVariablesInConflictReasons_ = input.readBool();
    514  break;
    515  }
    516  case 624: {
    517  bitField1_ |= 0x20000000;
    518  useOverloadCheckerInCumulativeConstraint_ = input.readBool();
    519  break;
    520  }
    521  case 632: {
    522  bitField1_ |= 0x40000000;
    523  useTimetableEdgeFindingInCumulativeConstraint_ = input.readBool();
    524  break;
    525  }
    526  case 640: {
    527  bitField1_ |= 0x80000000;
    528  useDisjunctiveConstraintInCumulativeConstraint_ = input.readBool();
    529  break;
    530  }
    531  case 656: {
    532  int rawValue = input.readEnum();
    533  @SuppressWarnings("deprecation")
    534  com.google.ortools.sat.SatParameters.SearchBranching value = com.google.ortools.sat.SatParameters.SearchBranching.valueOf(rawValue);
    535  if (value == null) {
    536  unknownFields.mergeVarintField(82, rawValue);
    537  } else {
    538  bitField2_ |= 0x00002000;
    539  searchBranching_ = rawValue;
    540  }
    541  break;
    542  }
    543  case 664: {
    544  bitField2_ |= 0x00080000;
    545  optimizeWithCore_ = input.readBool();
    546  break;
    547  }
    548  case 672: {
    549  bitField1_ |= 0x00800000;
    550  findMultipleCores_ = input.readBool();
    551  break;
    552  }
    553  case 680: {
    554  bitField2_ |= 0x00200000;
    555  optimizeWithMaxHs_ = input.readBool();
    556  break;
    557  }
    558  case 688: {
    559  bitField2_ |= 0x00400000;
    560  cpModelPresolve_ = input.readBool();
    561  break;
    562  }
    563  case 696: {
    564  bitField2_ |= 0x02000000;
    565  enumerateAllSolutions_ = input.readBool();
    566  break;
    567  }
    568  case 704: {
    569  bitField1_ |= 0x00040000;
    570  presolveBlockedClause_ = input.readBool();
    571  break;
    572  }
    573  case 712: {
    574  bitField1_ |= 0x01000000;
    575  coverOptimization_ = input.readBool();
    576  break;
    577  }
    578  case 720: {
    579  bitField2_ |= 0x00000001;
    580  linearizationLevel_ = input.readInt32();
    581  break;
    582  }
    583  case 728: {
    584  bitField2_ |= 0x00000004;
    585  maxNumCuts_ = input.readInt32();
    586  break;
    587  }
    588  case 736: {
    589  bitField2_ |= 0x00000008;
    590  onlyAddCutsAtLevelZero_ = input.readBool();
    591  break;
    592  }
    593  case 744: {
    594  bitField2_ |= 0x01000000;
    595  cpModelUseSatPresolve_ = input.readBool();
    596  break;
    597  }
    598  case 752: {
    599  bitField2_ |= 0x00004000;
    600  exploitIntegerLpSolution_ = input.readBool();
    601  break;
    602  }
    603  case 760: {
    604  bitField2_ |= 0x10000000;
    605  autoDetectGreaterThanAtLeastOneOf_ = input.readBool();
    606  break;
    607  }
    608  case 768: {
    609  bitField0_ |= 0x00040000;
    610  minimizeWithPropagationRestartPeriod_ = input.readInt32();
    611  break;
    612  }
    613  case 776: {
    614  bitField0_ |= 0x00080000;
    615  minimizeWithPropagationNumDecisions_ = input.readInt32();
    616  break;
    617  }
    618  case 784: {
    619  bitField2_ |= 0x20000000;
    620  stopAfterFirstSolution_ = input.readBool();
    621  break;
    622  }
    623  case 792: {
    624  bitField2_ |= 0x00100000;
    625  binarySearchNumConflicts_ = input.readInt32();
    626  break;
    627  }
    628  case 800: {
    629  bitField2_ |= 0x40000000;
    630  numSearchWorkers_ = input.readInt32();
    631  break;
    632  }
    633  case 808: {
    634  bitField3_ |= 0x00000008;
    635  useLnsOnly_ = input.readBool();
    636  break;
    637  }
    638  case 824: {
    639  bitField3_ |= 0x00000040;
    640  randomizeSearch_ = input.readBool();
    641  break;
    642  }
    643  case 832: {
    644  bitField3_ |= 0x00000080;
    645  searchRandomizationTolerance_ = input.readInt64();
    646  break;
    647  }
    648  case 840: {
    649  bitField3_ |= 0x00000010;
    650  lnsFocusOnDecisionVariables_ = input.readBool();
    651  break;
    652  }
    653  case 848: {
    654  bitField2_ |= 0x08000000;
    655  instantiateAllVariables_ = input.readBool();
    656  break;
    657  }
    658  case 856: {
    659  bitField2_ |= 0x00000002;
    660  booleanEncodingLevel_ = input.readInt32();
    661  break;
    662  }
    663  case 864: {
    664  bitField3_ |= 0x00000100;
    665  useOptionalVariables_ = input.readBool();
    666  break;
    667  }
    668  case 872: {
    669  bitField3_ |= 0x00000200;
    670  useExactLpReason_ = input.readBool();
    671  break;
    672  }
    673  case 880: {
    674  bitField2_ |= 0x00800000;
    675  cpModelProbingLevel_ = input.readInt32();
    676  break;
    677  }
    678  case 888: {
    679  bitField2_ |= 0x00000010;
    680  addKnapsackCuts_ = input.readBool();
    681  break;
    682  }
    683  case 896: {
    684  bitField2_ |= 0x00000200;
    685  addLpConstraintsLazily_ = input.readBool();
    686  break;
    687  }
    688  case 904: {
    689  bitField3_ |= 0x00000002;
    690  shareObjectiveBounds_ = input.readBool();
    691  break;
    692  }
    693  case 912: {
    694  bitField3_ |= 0x00000004;
    695  shareLevelZeroBounds_ = input.readBool();
    696  break;
    697  }
    698  case 921: {
    699  bitField2_ |= 0x00000400;
    700  minOrthogonalityForLpConstraints_ = input.readDouble();
    701  break;
    702  }
    703  case 928: {
    704  bitField2_ |= 0x00008000;
    705  exploitAllLpSolution_ = input.readBool();
    706  break;
    707  }
    708  case 936: {
    709  bitField2_ |= 0x00000020;
    710  addCgCuts_ = input.readBool();
    711  break;
    712  }
    713  case 944: {
    714  bitField2_ |= 0x00000080;
    715  useMirRounding_ = input.readBool();
    716  break;
    717  }
    718  case 952: {
    719  bitField2_ |= 0x00000100;
    720  maxIntegerRoundingScaling_ = input.readInt32();
    721  break;
    722  }
    723  case 960: {
    724  bitField2_ |= 0x00000040;
    725  addMirCuts_ = input.readBool();
    726  break;
    727  }
    728  case 968: {
    729  bitField2_ |= 0x00000800;
    730  maxInactiveCount_ = input.readInt64();
    731  break;
    732  }
    733  case 976: {
    734  bitField2_ |= 0x00001000;
    735  constraintRemovalBatchSize_ = input.readInt64();
    736  break;
    737  }
    738  case 984: {
    739  bitField2_ |= 0x00040000;
    740  pseudoCostReliabilityThreshold_ = input.readInt64();
    741  break;
    742  }
    743  case 993: {
    744  bitField3_ |= 0x00000800;
    745  mipMaxBound_ = input.readDouble();
    746  break;
    747  }
    748  case 1001: {
    749  bitField3_ |= 0x00001000;
    750  mipVarScaling_ = input.readDouble();
    751  break;
    752  }
    753  case 1009: {
    754  bitField3_ |= 0x00002000;
    755  mipWantedPrecision_ = input.readDouble();
    756  break;
    757  }
    758  case 1016: {
    759  bitField3_ |= 0x00004000;
    760  mipMaxActivityExponent_ = input.readInt32();
    761  break;
    762  }
    763  case 1025: {
    764  bitField3_ |= 0x00008000;
    765  mipCheckPrecision_ = input.readDouble();
    766  break;
    767  }
    768  case 1032: {
    769  bitField3_ |= 0x00000020;
    770  useRinsLns_ = input.readBool();
    771  break;
    772  }
    773  case 1040: {
    774  bitField2_ |= 0x00010000;
    775  exploitBestSolution_ = input.readBool();
    776  break;
    777  }
    778  case 1048: {
    779  bitField2_ |= 0x00020000;
    780  exploitObjective_ = input.readBool();
    781  break;
    782  }
    783  case 1056: {
    784  bitField2_ |= 0x04000000;
    785  fillTightenedDomainsInResponse_ = input.readBool();
    786  break;
    787  }
    788  case 1064: {
    789  bitField3_ |= 0x00000400;
    790  useCombinedNoOverlap_ = input.readBool();
    791  break;
    792  }
    793  case 1072: {
    794  bitField3_ |= 0x00000001;
    795  deterministicParallelSearch_ = input.readBool();
    796  break;
    797  }
    798  case 1080: {
    799  bitField3_ |= 0x00010000;
    800  catchSigintSignal_ = input.readBool();
    801  break;
    802  }
    803  case 1088: {
    804  bitField2_ |= 0x80000000;
    805  interleaveSearch_ = input.readBool();
    806  break;
    807  }
    808  default: {
    809  if (!parseUnknownField(
    810  input, unknownFields, extensionRegistry, tag)) {
    811  done = true;
    812  }
    813  break;
    814  }
    815  }
    816  }
    817  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    818  throw e.setUnfinishedMessage(this);
    819  } catch (java.io.IOException e) {
    820  throw new com.google.protobuf.InvalidProtocolBufferException(
    821  e).setUnfinishedMessage(this);
    822  } finally {
    823  if (((mutable_bitField0_ & 0x08000000) != 0)) {
    824  restartAlgorithms_ = java.util.Collections.unmodifiableList(restartAlgorithms_);
    825  }
    826  this.unknownFields = unknownFields.build();
    827  makeExtensionsImmutable();
    828  }
    829  }
    830  public static final com.google.protobuf.Descriptors.Descriptor
    832  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
    833  }
    834 
    835  @java.lang.Override
    836  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    838  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_fieldAccessorTable
    839  .ensureFieldAccessorsInitialized(
    841  }
    842 
    851  public enum VariableOrder
    852  implements com.google.protobuf.ProtocolMessageEnum {
    869  ;
    870 
    878  public static final int IN_ORDER_VALUE = 0;
    882  public static final int IN_REVERSE_ORDER_VALUE = 1;
    886  public static final int IN_RANDOM_ORDER_VALUE = 2;
    887 
    888 
    889  public final int getNumber() {
    890  return value;
    891  }
    892 
    896  @java.lang.Deprecated
    897  public static VariableOrder valueOf(int value) {
    898  return forNumber(value);
    899  }
    900 
    901  public static VariableOrder forNumber(int value) {
    902  switch (value) {
    903  case 0: return IN_ORDER;
    904  case 1: return IN_REVERSE_ORDER;
    905  case 2: return IN_RANDOM_ORDER;
    906  default: return null;
    907  }
    908  }
    909 
    910  public static com.google.protobuf.Internal.EnumLiteMap<VariableOrder>
    912  return internalValueMap;
    913  }
    914  private static final com.google.protobuf.Internal.EnumLiteMap<
    915  VariableOrder> internalValueMap =
    916  new com.google.protobuf.Internal.EnumLiteMap<VariableOrder>() {
    917  public VariableOrder findValueByNumber(int number) {
    918  return VariableOrder.forNumber(number);
    919  }
    920  };
    921 
    922  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    924  return getDescriptor().getValues().get(ordinal());
    925  }
    926  public final com.google.protobuf.Descriptors.EnumDescriptor
    928  return getDescriptor();
    929  }
    930  public static final com.google.protobuf.Descriptors.EnumDescriptor
    932  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(0);
    933  }
    934 
    935  private static final VariableOrder[] VALUES = values();
    936 
    937  public static VariableOrder valueOf(
    938  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    939  if (desc.getType() != getDescriptor()) {
    940  throw new java.lang.IllegalArgumentException(
    941  "EnumValueDescriptor is not for this type.");
    942  }
    943  return VALUES[desc.getIndex()];
    944  }
    945 
    946  private final int value;
    947 
    948  private VariableOrder(int value) {
    949  this.value = value;
    950  }
    951 
    952  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.VariableOrder)
    953  }
    954 
    966  public enum Polarity
    967  implements com.google.protobuf.ProtocolMessageEnum {
    999  ;
    1000 
    1004  public static final int POLARITY_TRUE_VALUE = 0;
    1008  public static final int POLARITY_FALSE_VALUE = 1;
    1012  public static final int POLARITY_RANDOM_VALUE = 2;
    1023  public static final int POLARITY_WEIGHTED_SIGN_VALUE = 3;
    1031  public static final int POLARITY_REVERSE_WEIGHTED_SIGN_VALUE = 4;
    1032 
    1033 
    1034  public final int getNumber() {
    1035  return value;
    1036  }
    1037 
    1041  @java.lang.Deprecated
    1042  public static Polarity valueOf(int value) {
    1043  return forNumber(value);
    1044  }
    1045 
    1046  public static Polarity forNumber(int value) {
    1047  switch (value) {
    1048  case 0: return POLARITY_TRUE;
    1049  case 1: return POLARITY_FALSE;
    1050  case 2: return POLARITY_RANDOM;
    1051  case 3: return POLARITY_WEIGHTED_SIGN;
    1052  case 4: return POLARITY_REVERSE_WEIGHTED_SIGN;
    1053  default: return null;
    1054  }
    1055  }
    1056 
    1057  public static com.google.protobuf.Internal.EnumLiteMap<Polarity>
    1059  return internalValueMap;
    1060  }
    1061  private static final com.google.protobuf.Internal.EnumLiteMap<
    1062  Polarity> internalValueMap =
    1063  new com.google.protobuf.Internal.EnumLiteMap<Polarity>() {
    1064  public Polarity findValueByNumber(int number) {
    1065  return Polarity.forNumber(number);
    1066  }
    1067  };
    1068 
    1069  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1071  return getDescriptor().getValues().get(ordinal());
    1072  }
    1073  public final com.google.protobuf.Descriptors.EnumDescriptor
    1075  return getDescriptor();
    1076  }
    1077  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1079  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(1);
    1080  }
    1081 
    1082  private static final Polarity[] VALUES = values();
    1083 
    1084  public static Polarity valueOf(
    1085  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1086  if (desc.getType() != getDescriptor()) {
    1087  throw new java.lang.IllegalArgumentException(
    1088  "EnumValueDescriptor is not for this type.");
    1089  }
    1090  return VALUES[desc.getIndex()];
    1091  }
    1092 
    1093  private final int value;
    1094 
    1095  private Polarity(int value) {
    1096  this.value = value;
    1097  }
    1098 
    1099  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.Polarity)
    1100  }
    1101 
    1110  implements com.google.protobuf.ProtocolMessageEnum {
    1114  NONE(0),
    1127  ;
    1128 
    1132  public static final int NONE_VALUE = 0;
    1136  public static final int SIMPLE_VALUE = 1;
    1140  public static final int RECURSIVE_VALUE = 2;
    1144  public static final int EXPERIMENTAL_VALUE = 3;
    1145 
    1146 
    1147  public final int getNumber() {
    1148  return value;
    1149  }
    1150 
    1154  @java.lang.Deprecated
    1155  public static ConflictMinimizationAlgorithm valueOf(int value) {
    1156  return forNumber(value);
    1157  }
    1158 
    1159  public static ConflictMinimizationAlgorithm forNumber(int value) {
    1160  switch (value) {
    1161  case 0: return NONE;
    1162  case 1: return SIMPLE;
    1163  case 2: return RECURSIVE;
    1164  case 3: return EXPERIMENTAL;
    1165  default: return null;
    1166  }
    1167  }
    1168 
    1169  public static com.google.protobuf.Internal.EnumLiteMap<ConflictMinimizationAlgorithm>
    1171  return internalValueMap;
    1172  }
    1173  private static final com.google.protobuf.Internal.EnumLiteMap<
    1174  ConflictMinimizationAlgorithm> internalValueMap =
    1175  new com.google.protobuf.Internal.EnumLiteMap<ConflictMinimizationAlgorithm>() {
    1176  public ConflictMinimizationAlgorithm findValueByNumber(int number) {
    1178  }
    1179  };
    1180 
    1181  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1183  return getDescriptor().getValues().get(ordinal());
    1184  }
    1185  public final com.google.protobuf.Descriptors.EnumDescriptor
    1187  return getDescriptor();
    1188  }
    1189  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1191  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(2);
    1192  }
    1193 
    1194  private static final ConflictMinimizationAlgorithm[] VALUES = values();
    1195 
    1197  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1198  if (desc.getType() != getDescriptor()) {
    1199  throw new java.lang.IllegalArgumentException(
    1200  "EnumValueDescriptor is not for this type.");
    1201  }
    1202  return VALUES[desc.getIndex()];
    1203  }
    1204 
    1205  private final int value;
    1206 
    1207  private ConflictMinimizationAlgorithm(int value) {
    1208  this.value = value;
    1209  }
    1210 
    1211  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ConflictMinimizationAlgorithm)
    1212  }
    1213 
    1223  implements com.google.protobuf.ProtocolMessageEnum {
    1244  ;
    1245 
    1249  public static final int NO_BINARY_MINIMIZATION_VALUE = 0;
    1253  public static final int BINARY_MINIMIZATION_FIRST_VALUE = 1;
    1257  public static final int BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION_VALUE = 4;
    1261  public static final int BINARY_MINIMIZATION_WITH_REACHABILITY_VALUE = 2;
    1265  public static final int EXPERIMENTAL_BINARY_MINIMIZATION_VALUE = 3;
    1266 
    1267 
    1268  public final int getNumber() {
    1269  return value;
    1270  }
    1271 
    1275  @java.lang.Deprecated
    1276  public static BinaryMinizationAlgorithm valueOf(int value) {
    1277  return forNumber(value);
    1278  }
    1279 
    1280  public static BinaryMinizationAlgorithm forNumber(int value) {
    1281  switch (value) {
    1282  case 0: return NO_BINARY_MINIMIZATION;
    1283  case 1: return BINARY_MINIMIZATION_FIRST;
    1284  case 4: return BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION;
    1285  case 2: return BINARY_MINIMIZATION_WITH_REACHABILITY;
    1286  case 3: return EXPERIMENTAL_BINARY_MINIMIZATION;
    1287  default: return null;
    1288  }
    1289  }
    1290 
    1291  public static com.google.protobuf.Internal.EnumLiteMap<BinaryMinizationAlgorithm>
    1293  return internalValueMap;
    1294  }
    1295  private static final com.google.protobuf.Internal.EnumLiteMap<
    1296  BinaryMinizationAlgorithm> internalValueMap =
    1297  new com.google.protobuf.Internal.EnumLiteMap<BinaryMinizationAlgorithm>() {
    1298  public BinaryMinizationAlgorithm findValueByNumber(int number) {
    1299  return BinaryMinizationAlgorithm.forNumber(number);
    1300  }
    1301  };
    1302 
    1303  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1305  return getDescriptor().getValues().get(ordinal());
    1306  }
    1307  public final com.google.protobuf.Descriptors.EnumDescriptor
    1309  return getDescriptor();
    1310  }
    1311  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1313  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(3);
    1314  }
    1315 
    1316  private static final BinaryMinizationAlgorithm[] VALUES = values();
    1317 
    1319  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1320  if (desc.getType() != getDescriptor()) {
    1321  throw new java.lang.IllegalArgumentException(
    1322  "EnumValueDescriptor is not for this type.");
    1323  }
    1324  return VALUES[desc.getIndex()];
    1325  }
    1326 
    1327  private final int value;
    1328 
    1329  private BinaryMinizationAlgorithm(int value) {
    1330  this.value = value;
    1331  }
    1332 
    1333  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.BinaryMinizationAlgorithm)
    1334  }
    1335 
    1345  public enum ClauseProtection
    1346  implements com.google.protobuf.ProtocolMessageEnum {
    1371  ;
    1372 
    1380  public static final int PROTECTION_NONE_VALUE = 0;
    1388  public static final int PROTECTION_ALWAYS_VALUE = 1;
    1396  public static final int PROTECTION_LBD_VALUE = 2;
    1397 
    1398 
    1399  public final int getNumber() {
    1400  return value;
    1401  }
    1402 
    1406  @java.lang.Deprecated
    1407  public static ClauseProtection valueOf(int value) {
    1408  return forNumber(value);
    1409  }
    1410 
    1411  public static ClauseProtection forNumber(int value) {
    1412  switch (value) {
    1413  case 0: return PROTECTION_NONE;
    1414  case 1: return PROTECTION_ALWAYS;
    1415  case 2: return PROTECTION_LBD;
    1416  default: return null;
    1417  }
    1418  }
    1419 
    1420  public static com.google.protobuf.Internal.EnumLiteMap<ClauseProtection>
    1422  return internalValueMap;
    1423  }
    1424  private static final com.google.protobuf.Internal.EnumLiteMap<
    1425  ClauseProtection> internalValueMap =
    1426  new com.google.protobuf.Internal.EnumLiteMap<ClauseProtection>() {
    1427  public ClauseProtection findValueByNumber(int number) {
    1428  return ClauseProtection.forNumber(number);
    1429  }
    1430  };
    1431 
    1432  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1434  return getDescriptor().getValues().get(ordinal());
    1435  }
    1436  public final com.google.protobuf.Descriptors.EnumDescriptor
    1438  return getDescriptor();
    1439  }
    1440  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1442  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(4);
    1443  }
    1444 
    1445  private static final ClauseProtection[] VALUES = values();
    1446 
    1447  public static ClauseProtection valueOf(
    1448  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1449  if (desc.getType() != getDescriptor()) {
    1450  throw new java.lang.IllegalArgumentException(
    1451  "EnumValueDescriptor is not for this type.");
    1452  }
    1453  return VALUES[desc.getIndex()];
    1454  }
    1455 
    1456  private final int value;
    1457 
    1458  private ClauseProtection(int value) {
    1459  this.value = value;
    1460  }
    1461 
    1462  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ClauseProtection)
    1463  }
    1464 
    1473  public enum ClauseOrdering
    1474  implements com.google.protobuf.ProtocolMessageEnum {
    1491  ;
    1492 
    1500  public static final int CLAUSE_ACTIVITY_VALUE = 0;
    1508  public static final int CLAUSE_LBD_VALUE = 1;
    1509 
    1510 
    1511  public final int getNumber() {
    1512  return value;
    1513  }
    1514 
    1518  @java.lang.Deprecated
    1519  public static ClauseOrdering valueOf(int value) {
    1520  return forNumber(value);
    1521  }
    1522 
    1523  public static ClauseOrdering forNumber(int value) {
    1524  switch (value) {
    1525  case 0: return CLAUSE_ACTIVITY;
    1526  case 1: return CLAUSE_LBD;
    1527  default: return null;
    1528  }
    1529  }
    1530 
    1531  public static com.google.protobuf.Internal.EnumLiteMap<ClauseOrdering>
    1533  return internalValueMap;
    1534  }
    1535  private static final com.google.protobuf.Internal.EnumLiteMap<
    1536  ClauseOrdering> internalValueMap =
    1537  new com.google.protobuf.Internal.EnumLiteMap<ClauseOrdering>() {
    1538  public ClauseOrdering findValueByNumber(int number) {
    1539  return ClauseOrdering.forNumber(number);
    1540  }
    1541  };
    1542 
    1543  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1545  return getDescriptor().getValues().get(ordinal());
    1546  }
    1547  public final com.google.protobuf.Descriptors.EnumDescriptor
    1549  return getDescriptor();
    1550  }
    1551  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1553  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(5);
    1554  }
    1555 
    1556  private static final ClauseOrdering[] VALUES = values();
    1557 
    1558  public static ClauseOrdering valueOf(
    1559  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1560  if (desc.getType() != getDescriptor()) {
    1561  throw new java.lang.IllegalArgumentException(
    1562  "EnumValueDescriptor is not for this type.");
    1563  }
    1564  return VALUES[desc.getIndex()];
    1565  }
    1566 
    1567  private final int value;
    1568 
    1569  private ClauseOrdering(int value) {
    1570  this.value = value;
    1571  }
    1572 
    1573  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ClauseOrdering)
    1574  }
    1575 
    1587  public enum RestartAlgorithm
    1588  implements com.google.protobuf.ProtocolMessageEnum {
    1625  ;
    1626 
    1630  public static final int NO_RESTART_VALUE = 0;
    1638  public static final int LUBY_RESTART_VALUE = 1;
    1646  public static final int DL_MOVING_AVERAGE_RESTART_VALUE = 2;
    1654  public static final int LBD_MOVING_AVERAGE_RESTART_VALUE = 3;
    1662  public static final int FIXED_RESTART_VALUE = 4;
    1663 
    1664 
    1665  public final int getNumber() {
    1666  return value;
    1667  }
    1668 
    1672  @java.lang.Deprecated
    1673  public static RestartAlgorithm valueOf(int value) {
    1674  return forNumber(value);
    1675  }
    1676 
    1677  public static RestartAlgorithm forNumber(int value) {
    1678  switch (value) {
    1679  case 0: return NO_RESTART;
    1680  case 1: return LUBY_RESTART;
    1681  case 2: return DL_MOVING_AVERAGE_RESTART;
    1682  case 3: return LBD_MOVING_AVERAGE_RESTART;
    1683  case 4: return FIXED_RESTART;
    1684  default: return null;
    1685  }
    1686  }
    1687 
    1688  public static com.google.protobuf.Internal.EnumLiteMap<RestartAlgorithm>
    1690  return internalValueMap;
    1691  }
    1692  private static final com.google.protobuf.Internal.EnumLiteMap<
    1693  RestartAlgorithm> internalValueMap =
    1694  new com.google.protobuf.Internal.EnumLiteMap<RestartAlgorithm>() {
    1695  public RestartAlgorithm findValueByNumber(int number) {
    1696  return RestartAlgorithm.forNumber(number);
    1697  }
    1698  };
    1699 
    1700  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1702  return getDescriptor().getValues().get(ordinal());
    1703  }
    1704  public final com.google.protobuf.Descriptors.EnumDescriptor
    1706  return getDescriptor();
    1707  }
    1708  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1710  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(6);
    1711  }
    1712 
    1713  private static final RestartAlgorithm[] VALUES = values();
    1714 
    1715  public static RestartAlgorithm valueOf(
    1716  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1717  if (desc.getType() != getDescriptor()) {
    1718  throw new java.lang.IllegalArgumentException(
    1719  "EnumValueDescriptor is not for this type.");
    1720  }
    1721  return VALUES[desc.getIndex()];
    1722  }
    1723 
    1724  private final int value;
    1725 
    1726  private RestartAlgorithm(int value) {
    1727  this.value = value;
    1728  }
    1729 
    1730  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.RestartAlgorithm)
    1731  }
    1732 
    1741  implements com.google.protobuf.ProtocolMessageEnum {
    1754  ;
    1755 
    1759  public static final int DEFAULT_ASSUMPTION_ORDER_VALUE = 0;
    1763  public static final int ORDER_ASSUMPTION_BY_DEPTH_VALUE = 1;
    1767  public static final int ORDER_ASSUMPTION_BY_WEIGHT_VALUE = 2;
    1768 
    1769 
    1770  public final int getNumber() {
    1771  return value;
    1772  }
    1773 
    1777  @java.lang.Deprecated
    1778  public static MaxSatAssumptionOrder valueOf(int value) {
    1779  return forNumber(value);
    1780  }
    1781 
    1782  public static MaxSatAssumptionOrder forNumber(int value) {
    1783  switch (value) {
    1784  case 0: return DEFAULT_ASSUMPTION_ORDER;
    1785  case 1: return ORDER_ASSUMPTION_BY_DEPTH;
    1786  case 2: return ORDER_ASSUMPTION_BY_WEIGHT;
    1787  default: return null;
    1788  }
    1789  }
    1790 
    1791  public static com.google.protobuf.Internal.EnumLiteMap<MaxSatAssumptionOrder>
    1793  return internalValueMap;
    1794  }
    1795  private static final com.google.protobuf.Internal.EnumLiteMap<
    1796  MaxSatAssumptionOrder> internalValueMap =
    1797  new com.google.protobuf.Internal.EnumLiteMap<MaxSatAssumptionOrder>() {
    1798  public MaxSatAssumptionOrder findValueByNumber(int number) {
    1799  return MaxSatAssumptionOrder.forNumber(number);
    1800  }
    1801  };
    1802 
    1803  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1805  return getDescriptor().getValues().get(ordinal());
    1806  }
    1807  public final com.google.protobuf.Descriptors.EnumDescriptor
    1809  return getDescriptor();
    1810  }
    1811  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1813  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(7);
    1814  }
    1815 
    1816  private static final MaxSatAssumptionOrder[] VALUES = values();
    1817 
    1819  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1820  if (desc.getType() != getDescriptor()) {
    1821  throw new java.lang.IllegalArgumentException(
    1822  "EnumValueDescriptor is not for this type.");
    1823  }
    1824  return VALUES[desc.getIndex()];
    1825  }
    1826 
    1827  private final int value;
    1828 
    1829  private MaxSatAssumptionOrder(int value) {
    1830  this.value = value;
    1831  }
    1832 
    1833  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.MaxSatAssumptionOrder)
    1834  }
    1835 
    1844  implements com.google.protobuf.ProtocolMessageEnum {
    1873  ;
    1874 
    1882  public static final int STRATIFICATION_NONE_VALUE = 0;
    1891  public static final int STRATIFICATION_DESCENT_VALUE = 1;
    1902  public static final int STRATIFICATION_ASCENT_VALUE = 2;
    1903 
    1904 
    1905  public final int getNumber() {
    1906  return value;
    1907  }
    1908 
    1912  @java.lang.Deprecated
    1913  public static MaxSatStratificationAlgorithm valueOf(int value) {
    1914  return forNumber(value);
    1915  }
    1916 
    1917  public static MaxSatStratificationAlgorithm forNumber(int value) {
    1918  switch (value) {
    1919  case 0: return STRATIFICATION_NONE;
    1920  case 1: return STRATIFICATION_DESCENT;
    1921  case 2: return STRATIFICATION_ASCENT;
    1922  default: return null;
    1923  }
    1924  }
    1925 
    1926  public static com.google.protobuf.Internal.EnumLiteMap<MaxSatStratificationAlgorithm>
    1928  return internalValueMap;
    1929  }
    1930  private static final com.google.protobuf.Internal.EnumLiteMap<
    1931  MaxSatStratificationAlgorithm> internalValueMap =
    1932  new com.google.protobuf.Internal.EnumLiteMap<MaxSatStratificationAlgorithm>() {
    1933  public MaxSatStratificationAlgorithm findValueByNumber(int number) {
    1935  }
    1936  };
    1937 
    1938  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1940  return getDescriptor().getValues().get(ordinal());
    1941  }
    1942  public final com.google.protobuf.Descriptors.EnumDescriptor
    1944  return getDescriptor();
    1945  }
    1946  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1948  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(8);
    1949  }
    1950 
    1951  private static final MaxSatStratificationAlgorithm[] VALUES = values();
    1952 
    1954  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1955  if (desc.getType() != getDescriptor()) {
    1956  throw new java.lang.IllegalArgumentException(
    1957  "EnumValueDescriptor is not for this type.");
    1958  }
    1959  return VALUES[desc.getIndex()];
    1960  }
    1961 
    1962  private final int value;
    1963 
    1964  private MaxSatStratificationAlgorithm(int value) {
    1965  this.value = value;
    1966  }
    1967 
    1968  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.MaxSatStratificationAlgorithm)
    1969  }
    1970 
    1978  public enum SearchBranching
    1979  implements com.google.protobuf.ProtocolMessageEnum {
    2047  ;
    2048 
    2057  public static final int AUTOMATIC_SEARCH_VALUE = 0;
    2067  public static final int FIXED_SEARCH_VALUE = 1;
    2075  public static final int PORTFOLIO_SEARCH_VALUE = 2;
    2085  public static final int LP_SEARCH_VALUE = 3;
    2095  public static final int PSEUDO_COST_SEARCH_VALUE = 4;
    2105  public static final int PORTFOLIO_WITH_QUICK_RESTART_SEARCH_VALUE = 5;
    2115  public static final int HINT_SEARCH_VALUE = 6;
    2116 
    2117 
    2118  public final int getNumber() {
    2119  return value;
    2120  }
    2121 
    2125  @java.lang.Deprecated
    2126  public static SearchBranching valueOf(int value) {
    2127  return forNumber(value);
    2128  }
    2129 
    2130  public static SearchBranching forNumber(int value) {
    2131  switch (value) {
    2132  case 0: return AUTOMATIC_SEARCH;
    2133  case 1: return FIXED_SEARCH;
    2134  case 2: return PORTFOLIO_SEARCH;
    2135  case 3: return LP_SEARCH;
    2136  case 4: return PSEUDO_COST_SEARCH;
    2137  case 5: return PORTFOLIO_WITH_QUICK_RESTART_SEARCH;
    2138  case 6: return HINT_SEARCH;
    2139  default: return null;
    2140  }
    2141  }
    2142 
    2143  public static com.google.protobuf.Internal.EnumLiteMap<SearchBranching>
    2145  return internalValueMap;
    2146  }
    2147  private static final com.google.protobuf.Internal.EnumLiteMap<
    2148  SearchBranching> internalValueMap =
    2149  new com.google.protobuf.Internal.EnumLiteMap<SearchBranching>() {
    2150  public SearchBranching findValueByNumber(int number) {
    2151  return SearchBranching.forNumber(number);
    2152  }
    2153  };
    2154 
    2155  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    2157  return getDescriptor().getValues().get(ordinal());
    2158  }
    2159  public final com.google.protobuf.Descriptors.EnumDescriptor
    2161  return getDescriptor();
    2162  }
    2163  public static final com.google.protobuf.Descriptors.EnumDescriptor
    2165  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(9);
    2166  }
    2167 
    2168  private static final SearchBranching[] VALUES = values();
    2169 
    2170  public static SearchBranching valueOf(
    2171  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    2172  if (desc.getType() != getDescriptor()) {
    2173  throw new java.lang.IllegalArgumentException(
    2174  "EnumValueDescriptor is not for this type.");
    2175  }
    2176  return VALUES[desc.getIndex()];
    2177  }
    2178 
    2179  private final int value;
    2180 
    2181  private SearchBranching(int value) {
    2182  this.value = value;
    2183  }
    2184 
    2185  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.SearchBranching)
    2186  }
    2187 
    2188  private int bitField0_;
    2189  private int bitField1_;
    2190  private int bitField2_;
    2191  private int bitField3_;
    2192  public static final int PREFERRED_VARIABLE_ORDER_FIELD_NUMBER = 1;
    2193  private int preferredVariableOrder_;
    2197  public boolean hasPreferredVariableOrder() {
    2198  return ((bitField0_ & 0x00000001) != 0);
    2199  }
    2204  @SuppressWarnings("deprecation")
    2206  return result == null ? com.google.ortools.sat.SatParameters.VariableOrder.IN_ORDER : result;
    2207  }
    2208 
    2209  public static final int INITIAL_POLARITY_FIELD_NUMBER = 2;
    2210  private int initialPolarity_;
    2214  public boolean hasInitialPolarity() {
    2215  return ((bitField0_ & 0x00000002) != 0);
    2216  }
    2221  @SuppressWarnings("deprecation")
    2223  return result == null ? com.google.ortools.sat.SatParameters.Polarity.POLARITY_FALSE : result;
    2224  }
    2225 
    2226  public static final int USE_PHASE_SAVING_FIELD_NUMBER = 44;
    2227  private boolean usePhaseSaving_;
    2241  public boolean hasUsePhaseSaving() {
    2242  return ((bitField0_ & 0x00000004) != 0);
    2243  }
    2257  public boolean getUsePhaseSaving() {
    2258  return usePhaseSaving_;
    2259  }
    2260 
    2261  public static final int RANDOM_POLARITY_RATIO_FIELD_NUMBER = 45;
    2262  private double randomPolarityRatio_;
    2274  public boolean hasRandomPolarityRatio() {
    2275  return ((bitField0_ & 0x00000008) != 0);
    2276  }
    2288  public double getRandomPolarityRatio() {
    2289  return randomPolarityRatio_;
    2290  }
    2291 
    2292  public static final int RANDOM_BRANCHES_RATIO_FIELD_NUMBER = 32;
    2293  private double randomBranchesRatio_;
    2303  public boolean hasRandomBranchesRatio() {
    2304  return ((bitField0_ & 0x00000010) != 0);
    2305  }
    2315  public double getRandomBranchesRatio() {
    2316  return randomBranchesRatio_;
    2317  }
    2318 
    2319  public static final int USE_ERWA_HEURISTIC_FIELD_NUMBER = 75;
    2320  private boolean useErwaHeuristic_;
    2330  public boolean hasUseErwaHeuristic() {
    2331  return ((bitField0_ & 0x00000020) != 0);
    2332  }
    2342  public boolean getUseErwaHeuristic() {
    2343  return useErwaHeuristic_;
    2344  }
    2345 
    2346  public static final int INITIAL_VARIABLES_ACTIVITY_FIELD_NUMBER = 76;
    2347  private double initialVariablesActivity_;
    2360  public boolean hasInitialVariablesActivity() {
    2361  return ((bitField0_ & 0x00000040) != 0);
    2362  }
    2376  return initialVariablesActivity_;
    2377  }
    2378 
    2380  private boolean alsoBumpVariablesInConflictReasons_;
    2392  return ((bitField0_ & 0x00000080) != 0);
    2393  }
    2405  return alsoBumpVariablesInConflictReasons_;
    2406  }
    2407 
    2408  public static final int MINIMIZATION_ALGORITHM_FIELD_NUMBER = 4;
    2409  private int minimizationAlgorithm_;
    2413  public boolean hasMinimizationAlgorithm() {
    2414  return ((bitField0_ & 0x00000100) != 0);
    2415  }
    2420  @SuppressWarnings("deprecation")
    2422  return result == null ? com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.RECURSIVE : result;
    2423  }
    2424 
    2425  public static final int BINARY_MINIMIZATION_ALGORITHM_FIELD_NUMBER = 34;
    2426  private int binaryMinimizationAlgorithm_;
    2431  return ((bitField0_ & 0x00000200) != 0);
    2432  }
    2437  @SuppressWarnings("deprecation")
    2440  }
    2441 
    2443  private boolean subsumptionDuringConflictAnalysis_;
    2455  return ((bitField0_ & 0x00000400) != 0);
    2456  }
    2468  return subsumptionDuringConflictAnalysis_;
    2469  }
    2470 
    2471  public static final int CLAUSE_CLEANUP_PERIOD_FIELD_NUMBER = 11;
    2472  private int clauseCleanupPeriod_;
    2480  public boolean hasClauseCleanupPeriod() {
    2481  return ((bitField0_ & 0x00000800) != 0);
    2482  }
    2490  public int getClauseCleanupPeriod() {
    2491  return clauseCleanupPeriod_;
    2492  }
    2493 
    2494  public static final int CLAUSE_CLEANUP_TARGET_FIELD_NUMBER = 13;
    2495  private int clauseCleanupTarget_;
    2504  public boolean hasClauseCleanupTarget() {
    2505  return ((bitField0_ & 0x00001000) != 0);
    2506  }
    2515  public int getClauseCleanupTarget() {
    2516  return clauseCleanupTarget_;
    2517  }
    2518 
    2519  public static final int CLAUSE_CLEANUP_PROTECTION_FIELD_NUMBER = 58;
    2520  private int clauseCleanupProtection_;
    2524  public boolean hasClauseCleanupProtection() {
    2525  return ((bitField0_ & 0x00002000) != 0);
    2526  }
    2531  @SuppressWarnings("deprecation")
    2533  return result == null ? com.google.ortools.sat.SatParameters.ClauseProtection.PROTECTION_NONE : result;
    2534  }
    2535 
    2536  public static final int CLAUSE_CLEANUP_LBD_BOUND_FIELD_NUMBER = 59;
    2537  private int clauseCleanupLbdBound_;
    2546  public boolean hasClauseCleanupLbdBound() {
    2547  return ((bitField0_ & 0x00004000) != 0);
    2548  }
    2558  return clauseCleanupLbdBound_;
    2559  }
    2560 
    2561  public static final int CLAUSE_CLEANUP_ORDERING_FIELD_NUMBER = 60;
    2562  private int clauseCleanupOrdering_;
    2566  public boolean hasClauseCleanupOrdering() {
    2567  return ((bitField0_ & 0x00008000) != 0);
    2568  }
    2573  @SuppressWarnings("deprecation")
    2575  return result == null ? com.google.ortools.sat.SatParameters.ClauseOrdering.CLAUSE_ACTIVITY : result;
    2576  }
    2577 
    2578  public static final int PB_CLEANUP_INCREMENT_FIELD_NUMBER = 46;
    2579  private int pbCleanupIncrement_;
    2587  public boolean hasPbCleanupIncrement() {
    2588  return ((bitField0_ & 0x00010000) != 0);
    2589  }
    2597  public int getPbCleanupIncrement() {
    2598  return pbCleanupIncrement_;
    2599  }
    2600 
    2601  public static final int PB_CLEANUP_RATIO_FIELD_NUMBER = 47;
    2602  private double pbCleanupRatio_;
    2606  public boolean hasPbCleanupRatio() {
    2607  return ((bitField0_ & 0x00020000) != 0);
    2608  }
    2612  public double getPbCleanupRatio() {
    2613  return pbCleanupRatio_;
    2614  }
    2615 
    2617  private int minimizeWithPropagationRestartPeriod_;
    2636  return ((bitField0_ & 0x00040000) != 0);
    2637  }
    2656  return minimizeWithPropagationRestartPeriod_;
    2657  }
    2658 
    2660  private int minimizeWithPropagationNumDecisions_;
    2665  return ((bitField0_ & 0x00080000) != 0);
    2666  }
    2671  return minimizeWithPropagationNumDecisions_;
    2672  }
    2673 
    2674  public static final int VARIABLE_ACTIVITY_DECAY_FIELD_NUMBER = 15;
    2675  private double variableActivityDecay_;
    2689  public boolean hasVariableActivityDecay() {
    2690  return ((bitField0_ & 0x00100000) != 0);
    2691  }
    2705  public double getVariableActivityDecay() {
    2706  return variableActivityDecay_;
    2707  }
    2708 
    2709  public static final int MAX_VARIABLE_ACTIVITY_VALUE_FIELD_NUMBER = 16;
    2710  private double maxVariableActivityValue_;
    2714  public boolean hasMaxVariableActivityValue() {
    2715  return ((bitField0_ & 0x00200000) != 0);
    2716  }
    2721  return maxVariableActivityValue_;
    2722  }
    2723 
    2724  public static final int GLUCOSE_MAX_DECAY_FIELD_NUMBER = 22;
    2725  private double glucoseMaxDecay_;
    2736  public boolean hasGlucoseMaxDecay() {
    2737  return ((bitField0_ & 0x00400000) != 0);
    2738  }
    2749  public double getGlucoseMaxDecay() {
    2750  return glucoseMaxDecay_;
    2751  }
    2752 
    2753  public static final int GLUCOSE_DECAY_INCREMENT_FIELD_NUMBER = 23;
    2754  private double glucoseDecayIncrement_;
    2758  public boolean hasGlucoseDecayIncrement() {
    2759  return ((bitField0_ & 0x00800000) != 0);
    2760  }
    2764  public double getGlucoseDecayIncrement() {
    2765  return glucoseDecayIncrement_;
    2766  }
    2767 
    2768  public static final int GLUCOSE_DECAY_INCREMENT_PERIOD_FIELD_NUMBER = 24;
    2769  private int glucoseDecayIncrementPeriod_;
    2774  return ((bitField0_ & 0x01000000) != 0);
    2775  }
    2780  return glucoseDecayIncrementPeriod_;
    2781  }
    2782 
    2783  public static final int CLAUSE_ACTIVITY_DECAY_FIELD_NUMBER = 17;
    2784  private double clauseActivityDecay_;
    2792  public boolean hasClauseActivityDecay() {
    2793  return ((bitField0_ & 0x02000000) != 0);
    2794  }
    2802  public double getClauseActivityDecay() {
    2803  return clauseActivityDecay_;
    2804  }
    2805 
    2806  public static final int MAX_CLAUSE_ACTIVITY_VALUE_FIELD_NUMBER = 18;
    2807  private double maxClauseActivityValue_;
    2811  public boolean hasMaxClauseActivityValue() {
    2812  return ((bitField0_ & 0x04000000) != 0);
    2813  }
    2817  public double getMaxClauseActivityValue() {
    2818  return maxClauseActivityValue_;
    2819  }
    2820 
    2821  public static final int RESTART_ALGORITHMS_FIELD_NUMBER = 61;
    2822  private java.util.List<java.lang.Integer> restartAlgorithms_;
    2823  private static final com.google.protobuf.Internal.ListAdapter.Converter<
    2824  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm> restartAlgorithms_converter_ =
    2825  new com.google.protobuf.Internal.ListAdapter.Converter<
    2826  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>() {
    2827  public com.google.ortools.sat.SatParameters.RestartAlgorithm convert(java.lang.Integer from) {
    2828  @SuppressWarnings("deprecation")
    2830  return result == null ? com.google.ortools.sat.SatParameters.RestartAlgorithm.NO_RESTART : result;
    2831  }
    2832  };
    2848  return new com.google.protobuf.Internal.ListAdapter<
    2849  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>(restartAlgorithms_, restartAlgorithms_converter_);
    2850  }
    2866  return restartAlgorithms_.size();
    2867  }
    2883  return restartAlgorithms_converter_.convert(restartAlgorithms_.get(index));
    2884  }
    2885 
    2886  public static final int DEFAULT_RESTART_ALGORITHMS_FIELD_NUMBER = 70;
    2887  private volatile java.lang.Object defaultRestartAlgorithms_;
    2891  public boolean hasDefaultRestartAlgorithms() {
    2892  return ((bitField0_ & 0x08000000) != 0);
    2893  }
    2897  public java.lang.String getDefaultRestartAlgorithms() {
    2898  java.lang.Object ref = defaultRestartAlgorithms_;
    2899  if (ref instanceof java.lang.String) {
    2900  return (java.lang.String) ref;
    2901  } else {
    2902  com.google.protobuf.ByteString bs =
    2903  (com.google.protobuf.ByteString) ref;
    2904  java.lang.String s = bs.toStringUtf8();
    2905  if (bs.isValidUtf8()) {
    2906  defaultRestartAlgorithms_ = s;
    2907  }
    2908  return s;
    2909  }
    2910  }
    2914  public com.google.protobuf.ByteString
    2916  java.lang.Object ref = defaultRestartAlgorithms_;
    2917  if (ref instanceof java.lang.String) {
    2918  com.google.protobuf.ByteString b =
    2919  com.google.protobuf.ByteString.copyFromUtf8(
    2920  (java.lang.String) ref);
    2921  defaultRestartAlgorithms_ = b;
    2922  return b;
    2923  } else {
    2924  return (com.google.protobuf.ByteString) ref;
    2925  }
    2926  }
    2927 
    2928  public static final int RESTART_PERIOD_FIELD_NUMBER = 30;
    2929  private int restartPeriod_;
    2938  public boolean hasRestartPeriod() {
    2939  return ((bitField0_ & 0x10000000) != 0);
    2940  }
    2949  public int getRestartPeriod() {
    2950  return restartPeriod_;
    2951  }
    2952 
    2953  public static final int RESTART_RUNNING_WINDOW_SIZE_FIELD_NUMBER = 62;
    2954  private int restartRunningWindowSize_;
    2962  public boolean hasRestartRunningWindowSize() {
    2963  return ((bitField0_ & 0x20000000) != 0);
    2964  }
    2973  return restartRunningWindowSize_;
    2974  }
    2975 
    2976  public static final int RESTART_DL_AVERAGE_RATIO_FIELD_NUMBER = 63;
    2977  private double restartDlAverageRatio_;
    2986  public boolean hasRestartDlAverageRatio() {
    2987  return ((bitField0_ & 0x40000000) != 0);
    2988  }
    2997  public double getRestartDlAverageRatio() {
    2998  return restartDlAverageRatio_;
    2999  }
    3000 
    3001  public static final int RESTART_LBD_AVERAGE_RATIO_FIELD_NUMBER = 71;
    3002  private double restartLbdAverageRatio_;
    3006  public boolean hasRestartLbdAverageRatio() {
    3007  return ((bitField0_ & 0x80000000) != 0);
    3008  }
    3012  public double getRestartLbdAverageRatio() {
    3013  return restartLbdAverageRatio_;
    3014  }
    3015 
    3016  public static final int USE_BLOCKING_RESTART_FIELD_NUMBER = 64;
    3017  private boolean useBlockingRestart_;
    3027  public boolean hasUseBlockingRestart() {
    3028  return ((bitField1_ & 0x00000001) != 0);
    3029  }
    3039  public boolean getUseBlockingRestart() {
    3040  return useBlockingRestart_;
    3041  }
    3042 
    3043  public static final int BLOCKING_RESTART_WINDOW_SIZE_FIELD_NUMBER = 65;
    3044  private int blockingRestartWindowSize_;
    3048  public boolean hasBlockingRestartWindowSize() {
    3049  return ((bitField1_ & 0x00000002) != 0);
    3050  }
    3055  return blockingRestartWindowSize_;
    3056  }
    3057 
    3058  public static final int BLOCKING_RESTART_MULTIPLIER_FIELD_NUMBER = 66;
    3059  private double blockingRestartMultiplier_;
    3063  public boolean hasBlockingRestartMultiplier() {
    3064  return ((bitField1_ & 0x00000004) != 0);
    3065  }
    3070  return blockingRestartMultiplier_;
    3071  }
    3072 
    3074  private int numConflictsBeforeStrategyChanges_;
    3085  return ((bitField1_ & 0x00000008) != 0);
    3086  }
    3097  return numConflictsBeforeStrategyChanges_;
    3098  }
    3099 
    3100  public static final int STRATEGY_CHANGE_INCREASE_RATIO_FIELD_NUMBER = 69;
    3101  private double strategyChangeIncreaseRatio_;
    3111  return ((bitField1_ & 0x00000010) != 0);
    3112  }
    3122  return strategyChangeIncreaseRatio_;
    3123  }
    3124 
    3125  public static final int MAX_TIME_IN_SECONDS_FIELD_NUMBER = 36;
    3126  private double maxTimeInSeconds_;
    3136  public boolean hasMaxTimeInSeconds() {
    3137  return ((bitField1_ & 0x00000020) != 0);
    3138  }
    3148  public double getMaxTimeInSeconds() {
    3149  return maxTimeInSeconds_;
    3150  }
    3151 
    3152  public static final int MAX_DETERMINISTIC_TIME_FIELD_NUMBER = 67;
    3153  private double maxDeterministicTime_;
    3165  public boolean hasMaxDeterministicTime() {
    3166  return ((bitField1_ & 0x00000040) != 0);
    3167  }
    3179  public double getMaxDeterministicTime() {
    3180  return maxDeterministicTime_;
    3181  }
    3182 
    3183  public static final int MAX_NUMBER_OF_CONFLICTS_FIELD_NUMBER = 37;
    3184  private long maxNumberOfConflicts_;
    3197  public boolean hasMaxNumberOfConflicts() {
    3198  return ((bitField1_ & 0x00000080) != 0);
    3199  }
    3212  public long getMaxNumberOfConflicts() {
    3213  return maxNumberOfConflicts_;
    3214  }
    3215 
    3216  public static final int MAX_MEMORY_IN_MB_FIELD_NUMBER = 40;
    3217  private long maxMemoryInMb_;
    3228  public boolean hasMaxMemoryInMb() {
    3229  return ((bitField1_ & 0x00000100) != 0);
    3230  }
    3241  public long getMaxMemoryInMb() {
    3242  return maxMemoryInMb_;
    3243  }
    3244 
    3245  public static final int TREAT_BINARY_CLAUSES_SEPARATELY_FIELD_NUMBER = 33;
    3246  private boolean treatBinaryClausesSeparately_;
    3257  return ((bitField1_ & 0x00000200) != 0);
    3258  }
    3269  return treatBinaryClausesSeparately_;
    3270  }
    3271 
    3272  public static final int RANDOM_SEED_FIELD_NUMBER = 31;
    3273  private int randomSeed_;
    3286  public boolean hasRandomSeed() {
    3287  return ((bitField1_ & 0x00000400) != 0);
    3288  }
    3301  public int getRandomSeed() {
    3302  return randomSeed_;
    3303  }
    3304 
    3305  public static final int LOG_SEARCH_PROGRESS_FIELD_NUMBER = 41;
    3306  private boolean logSearchProgress_;
    3314  public boolean hasLogSearchProgress() {
    3315  return ((bitField1_ & 0x00000800) != 0);
    3316  }
    3324  public boolean getLogSearchProgress() {
    3325  return logSearchProgress_;
    3326  }
    3327 
    3328  public static final int USE_PB_RESOLUTION_FIELD_NUMBER = 43;
    3329  private boolean usePbResolution_;
    3340  public boolean hasUsePbResolution() {
    3341  return ((bitField1_ & 0x00001000) != 0);
    3342  }
    3353  public boolean getUsePbResolution() {
    3354  return usePbResolution_;
    3355  }
    3356 
    3358  private boolean minimizeReductionDuringPbResolution_;
    3370  return ((bitField1_ & 0x00002000) != 0);
    3371  }
    3383  return minimizeReductionDuringPbResolution_;
    3384  }
    3385 
    3386  public static final int COUNT_ASSUMPTION_LEVELS_IN_LBD_FIELD_NUMBER = 49;
    3387  private boolean countAssumptionLevelsInLbd_;
    3403  return ((bitField1_ & 0x00004000) != 0);
    3404  }
    3420  return countAssumptionLevelsInLbd_;
    3421  }
    3422 
    3423  public static final int PRESOLVE_BVE_THRESHOLD_FIELD_NUMBER = 54;
    3424  private int presolveBveThreshold_;
    3434  public boolean hasPresolveBveThreshold() {
    3435  return ((bitField1_ & 0x00008000) != 0);
    3436  }
    3447  return presolveBveThreshold_;
    3448  }
    3449 
    3450  public static final int PRESOLVE_BVE_CLAUSE_WEIGHT_FIELD_NUMBER = 55;
    3451  private int presolveBveClauseWeight_;
    3460  public boolean hasPresolveBveClauseWeight() {
    3461  return ((bitField1_ & 0x00010000) != 0);
    3462  }
    3472  return presolveBveClauseWeight_;
    3473  }
    3474 
    3476  private double presolveProbingDeterministicTimeLimit_;
    3486  return ((bitField1_ & 0x00020000) != 0);
    3487  }
    3497  return presolveProbingDeterministicTimeLimit_;
    3498  }
    3499 
    3500  public static final int PRESOLVE_BLOCKED_CLAUSE_FIELD_NUMBER = 88;
    3501  private boolean presolveBlockedClause_;
    3510  public boolean hasPresolveBlockedClause() {
    3511  return ((bitField1_ & 0x00040000) != 0);
    3512  }
    3521  public boolean getPresolveBlockedClause() {
    3522  return presolveBlockedClause_;
    3523  }
    3524 
    3525  public static final int PRESOLVE_USE_BVA_FIELD_NUMBER = 72;
    3526  private boolean presolveUseBva_;
    3534  public boolean hasPresolveUseBva() {
    3535  return ((bitField1_ & 0x00080000) != 0);
    3536  }
    3544  public boolean getPresolveUseBva() {
    3545  return presolveUseBva_;
    3546  }
    3547 
    3548  public static final int PRESOLVE_BVA_THRESHOLD_FIELD_NUMBER = 73;
    3549  private int presolveBvaThreshold_;
    3560  public boolean hasPresolveBvaThreshold() {
    3561  return ((bitField1_ & 0x00100000) != 0);
    3562  }
    3574  return presolveBvaThreshold_;
    3575  }
    3576 
    3577  public static final int USE_OPTIMIZATION_HINTS_FIELD_NUMBER = 35;
    3578  private boolean useOptimizationHints_;
    3589  public boolean hasUseOptimizationHints() {
    3590  return ((bitField1_ & 0x00200000) != 0);
    3591  }
    3602  public boolean getUseOptimizationHints() {
    3603  return useOptimizationHints_;
    3604  }
    3605 
    3606  public static final int MINIMIZE_CORE_FIELD_NUMBER = 50;
    3607  private boolean minimizeCore_;
    3615  public boolean hasMinimizeCore() {
    3616  return ((bitField1_ & 0x00400000) != 0);
    3617  }
    3625  public boolean getMinimizeCore() {
    3626  return minimizeCore_;
    3627  }
    3628 
    3629  public static final int FIND_MULTIPLE_CORES_FIELD_NUMBER = 84;
    3630  private boolean findMultipleCores_;
    3639  public boolean hasFindMultipleCores() {
    3640  return ((bitField1_ & 0x00800000) != 0);
    3641  }
    3650  public boolean getFindMultipleCores() {
    3651  return findMultipleCores_;
    3652  }
    3653 
    3654  public static final int COVER_OPTIMIZATION_FIELD_NUMBER = 89;
    3655  private boolean coverOptimization_;
    3664  public boolean hasCoverOptimization() {
    3665  return ((bitField1_ & 0x01000000) != 0);
    3666  }
    3675  public boolean getCoverOptimization() {
    3676  return coverOptimization_;
    3677  }
    3678 
    3679  public static final int MAX_SAT_ASSUMPTION_ORDER_FIELD_NUMBER = 51;
    3680  private int maxSatAssumptionOrder_;
    3684  public boolean hasMaxSatAssumptionOrder() {
    3685  return ((bitField1_ & 0x02000000) != 0);
    3686  }
    3691  @SuppressWarnings("deprecation")
    3694  }
    3695 
    3697  private boolean maxSatReverseAssumptionOrder_;
    3707  return ((bitField1_ & 0x04000000) != 0);
    3708  }
    3718  return maxSatReverseAssumptionOrder_;
    3719  }
    3720 
    3721  public static final int MAX_SAT_STRATIFICATION_FIELD_NUMBER = 53;
    3722  private int maxSatStratification_;
    3726  public boolean hasMaxSatStratification() {
    3727  return ((bitField1_ & 0x08000000) != 0);
    3728  }
    3733  @SuppressWarnings("deprecation")
    3736  }
    3737 
    3739  private boolean usePrecedencesInDisjunctiveConstraint_;
    3755  return ((bitField1_ & 0x10000000) != 0);
    3756  }
    3772  return usePrecedencesInDisjunctiveConstraint_;
    3773  }
    3774 
    3776  private boolean useOverloadCheckerInCumulativeConstraint_;
    3790  return ((bitField1_ & 0x20000000) != 0);
    3791  }
    3805  return useOverloadCheckerInCumulativeConstraint_;
    3806  }
    3807 
    3809  private boolean useTimetableEdgeFindingInCumulativeConstraint_;
    3823  return ((bitField1_ & 0x40000000) != 0);
    3824  }
    3838  return useTimetableEdgeFindingInCumulativeConstraint_;
    3839  }
    3840 
    3842  private boolean useDisjunctiveConstraintInCumulativeConstraint_;
    3858  return ((bitField1_ & 0x80000000) != 0);
    3859  }
    3875  return useDisjunctiveConstraintInCumulativeConstraint_;
    3876  }
    3877 
    3878  public static final int LINEARIZATION_LEVEL_FIELD_NUMBER = 90;
    3879  private int linearizationLevel_;
    3890  public boolean hasLinearizationLevel() {
    3891  return ((bitField2_ & 0x00000001) != 0);
    3892  }
    3903  public int getLinearizationLevel() {
    3904  return linearizationLevel_;
    3905  }
    3906 
    3907  public static final int BOOLEAN_ENCODING_LEVEL_FIELD_NUMBER = 107;
    3908  private int booleanEncodingLevel_;
    3917  public boolean hasBooleanEncodingLevel() {
    3918  return ((bitField2_ & 0x00000002) != 0);
    3919  }
    3929  return booleanEncodingLevel_;
    3930  }
    3931 
    3932  public static final int MAX_NUM_CUTS_FIELD_NUMBER = 91;
    3933  private int maxNumCuts_;
    3942  public boolean hasMaxNumCuts() {
    3943  return ((bitField2_ & 0x00000004) != 0);
    3944  }
    3953  public int getMaxNumCuts() {
    3954  return maxNumCuts_;
    3955  }
    3956 
    3957  public static final int ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER = 92;
    3958  private boolean onlyAddCutsAtLevelZero_;
    3967  public boolean hasOnlyAddCutsAtLevelZero() {
    3968  return ((bitField2_ & 0x00000008) != 0);
    3969  }
    3978  public boolean getOnlyAddCutsAtLevelZero() {
    3979  return onlyAddCutsAtLevelZero_;
    3980  }
    3981 
    3982  public static final int ADD_KNAPSACK_CUTS_FIELD_NUMBER = 111;
    3983  private boolean addKnapsackCuts_;
    3993  public boolean hasAddKnapsackCuts() {
    3994  return ((bitField2_ & 0x00000010) != 0);
    3995  }
    4005  public boolean getAddKnapsackCuts() {
    4006  return addKnapsackCuts_;
    4007  }
    4008 
    4009  public static final int ADD_CG_CUTS_FIELD_NUMBER = 117;
    4010  private boolean addCgCuts_;
    4019  public boolean hasAddCgCuts() {
    4020  return ((bitField2_ & 0x00000020) != 0);
    4021  }
    4030  public boolean getAddCgCuts() {
    4031  return addCgCuts_;
    4032  }
    4033 
    4034  public static final int ADD_MIR_CUTS_FIELD_NUMBER = 120;
    4035  private boolean addMirCuts_;
    4044  public boolean hasAddMirCuts() {
    4045  return ((bitField2_ & 0x00000040) != 0);
    4046  }
    4055  public boolean getAddMirCuts() {
    4056  return addMirCuts_;
    4057  }
    4058 
    4059  public static final int USE_MIR_ROUNDING_FIELD_NUMBER = 118;
    4060  private boolean useMirRounding_;
    4070  public boolean hasUseMirRounding() {
    4071  return ((bitField2_ & 0x00000080) != 0);
    4072  }
    4082  public boolean getUseMirRounding() {
    4083  return useMirRounding_;
    4084  }
    4085 
    4086  public static final int MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER = 119;
    4087  private int maxIntegerRoundingScaling_;
    4099  public boolean hasMaxIntegerRoundingScaling() {
    4100  return ((bitField2_ & 0x00000100) != 0);
    4101  }
    4114  return maxIntegerRoundingScaling_;
    4115  }
    4116 
    4117  public static final int ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER = 112;
    4118  private boolean addLpConstraintsLazily_;
    4129  public boolean hasAddLpConstraintsLazily() {
    4130  return ((bitField2_ & 0x00000200) != 0);
    4131  }
    4142  public boolean getAddLpConstraintsLazily() {
    4143  return addLpConstraintsLazily_;
    4144  }
    4145 
    4147  private double minOrthogonalityForLpConstraints_;
    4160  return ((bitField2_ & 0x00000400) != 0);
    4161  }
    4174  return minOrthogonalityForLpConstraints_;
    4175  }
    4176 
    4177  public static final int MAX_INACTIVE_COUNT_FIELD_NUMBER = 121;
    4178  private long maxInactiveCount_;
    4187  public boolean hasMaxInactiveCount() {
    4188  return ((bitField2_ & 0x00000800) != 0);
    4189  }
    4198  public long getMaxInactiveCount() {
    4199  return maxInactiveCount_;
    4200  }
    4201 
    4202  public static final int CONSTRAINT_REMOVAL_BATCH_SIZE_FIELD_NUMBER = 122;
    4203  private long constraintRemovalBatchSize_;
    4213  return ((bitField2_ & 0x00001000) != 0);
    4214  }
    4224  return constraintRemovalBatchSize_;
    4225  }
    4226 
    4227  public static final int SEARCH_BRANCHING_FIELD_NUMBER = 82;
    4228  private int searchBranching_;
    4232  public boolean hasSearchBranching() {
    4233  return ((bitField2_ & 0x00002000) != 0);
    4234  }
    4239  @SuppressWarnings("deprecation")
    4241  return result == null ? com.google.ortools.sat.SatParameters.SearchBranching.AUTOMATIC_SEARCH : result;
    4242  }
    4243 
    4244  public static final int EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER = 94;
    4245  private boolean exploitIntegerLpSolution_;
    4256  public boolean hasExploitIntegerLpSolution() {
    4257  return ((bitField2_ & 0x00004000) != 0);
    4258  }
    4269  public boolean getExploitIntegerLpSolution() {
    4270  return exploitIntegerLpSolution_;
    4271  }
    4272 
    4273  public static final int EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER = 116;
    4274  private boolean exploitAllLpSolution_;
    4284  public boolean hasExploitAllLpSolution() {
    4285  return ((bitField2_ & 0x00008000) != 0);
    4286  }
    4296  public boolean getExploitAllLpSolution() {
    4297  return exploitAllLpSolution_;
    4298  }
    4299 
    4300  public static final int EXPLOIT_BEST_SOLUTION_FIELD_NUMBER = 130;
    4301  private boolean exploitBestSolution_;
    4309  public boolean hasExploitBestSolution() {
    4310  return ((bitField2_ & 0x00010000) != 0);
    4311  }
    4319  public boolean getExploitBestSolution() {
    4320  return exploitBestSolution_;
    4321  }
    4322 
    4323  public static final int EXPLOIT_OBJECTIVE_FIELD_NUMBER = 131;
    4324  private boolean exploitObjective_;
    4333  public boolean hasExploitObjective() {
    4334  return ((bitField2_ & 0x00020000) != 0);
    4335  }
    4344  public boolean getExploitObjective() {
    4345  return exploitObjective_;
    4346  }
    4347 
    4348  public static final int PSEUDO_COST_RELIABILITY_THRESHOLD_FIELD_NUMBER = 123;
    4349  private long pseudoCostReliabilityThreshold_;
    4359  return ((bitField2_ & 0x00040000) != 0);
    4360  }
    4370  return pseudoCostReliabilityThreshold_;
    4371  }
    4372 
    4373  public static final int OPTIMIZE_WITH_CORE_FIELD_NUMBER = 83;
    4374  private boolean optimizeWithCore_;
    4385  public boolean hasOptimizeWithCore() {
    4386  return ((bitField2_ & 0x00080000) != 0);
    4387  }
    4398  public boolean getOptimizeWithCore() {
    4399  return optimizeWithCore_;
    4400  }
    4401 
    4402  public static final int BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER = 99;
    4403  private int binarySearchNumConflicts_;
    4414  public boolean hasBinarySearchNumConflicts() {
    4415  return ((bitField2_ & 0x00100000) != 0);
    4416  }
    4428  return binarySearchNumConflicts_;
    4429  }
    4430 
    4431  public static final int OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER = 85;
    4432  private boolean optimizeWithMaxHs_;
    4445  public boolean hasOptimizeWithMaxHs() {
    4446  return ((bitField2_ & 0x00200000) != 0);
    4447  }
    4460  public boolean getOptimizeWithMaxHs() {
    4461  return optimizeWithMaxHs_;
    4462  }
    4463 
    4464  public static final int CP_MODEL_PRESOLVE_FIELD_NUMBER = 86;
    4465  private boolean cpModelPresolve_;
    4473  public boolean hasCpModelPresolve() {
    4474  return ((bitField2_ & 0x00400000) != 0);
    4475  }
    4483  public boolean getCpModelPresolve() {
    4484  return cpModelPresolve_;
    4485  }
    4486 
    4487  public static final int CP_MODEL_PROBING_LEVEL_FIELD_NUMBER = 110;
    4488  private int cpModelProbingLevel_;
    4496  public boolean hasCpModelProbingLevel() {
    4497  return ((bitField2_ & 0x00800000) != 0);
    4498  }
    4506  public int getCpModelProbingLevel() {
    4507  return cpModelProbingLevel_;
    4508  }
    4509 
    4510  public static final int CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER = 93;
    4511  private boolean cpModelUseSatPresolve_;
    4519  public boolean hasCpModelUseSatPresolve() {
    4520  return ((bitField2_ & 0x01000000) != 0);
    4521  }
    4529  public boolean getCpModelUseSatPresolve() {
    4530  return cpModelUseSatPresolve_;
    4531  }
    4532 
    4533  public static final int ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER = 87;
    4534  private boolean enumerateAllSolutions_;
    4547  public boolean hasEnumerateAllSolutions() {
    4548  return ((bitField2_ & 0x02000000) != 0);
    4549  }
    4562  public boolean getEnumerateAllSolutions() {
    4563  return enumerateAllSolutions_;
    4564  }
    4565 
    4567  private boolean fillTightenedDomainsInResponse_;
    4580  return ((bitField2_ & 0x04000000) != 0);
    4581  }
    4594  return fillTightenedDomainsInResponse_;
    4595  }
    4596 
    4597  public static final int INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER = 106;
    4598  private boolean instantiateAllVariables_;
    4607  public boolean hasInstantiateAllVariables() {
    4608  return ((bitField2_ & 0x08000000) != 0);
    4609  }
    4618  public boolean getInstantiateAllVariables() {
    4619  return instantiateAllVariables_;
    4620  }
    4621 
    4623  private boolean autoDetectGreaterThanAtLeastOneOf_;
    4635  return ((bitField2_ & 0x10000000) != 0);
    4636  }
    4648  return autoDetectGreaterThanAtLeastOneOf_;
    4649  }
    4650 
    4651  public static final int STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER = 98;
    4652  private boolean stopAfterFirstSolution_;
    4660  public boolean hasStopAfterFirstSolution() {
    4661  return ((bitField2_ & 0x20000000) != 0);
    4662  }
    4670  public boolean getStopAfterFirstSolution() {
    4671  return stopAfterFirstSolution_;
    4672  }
    4673 
    4674  public static final int NUM_SEARCH_WORKERS_FIELD_NUMBER = 100;
    4675  private int numSearchWorkers_;
    4684  public boolean hasNumSearchWorkers() {
    4685  return ((bitField2_ & 0x40000000) != 0);
    4686  }
    4695  public int getNumSearchWorkers() {
    4696  return numSearchWorkers_;
    4697  }
    4698 
    4699  public static final int INTERLEAVE_SEARCH_FIELD_NUMBER = 136;
    4700  private boolean interleaveSearch_;
    4711  public boolean hasInterleaveSearch() {
    4712  return ((bitField2_ & 0x80000000) != 0);
    4713  }
    4724  public boolean getInterleaveSearch() {
    4725  return interleaveSearch_;
    4726  }
    4727 
    4728  public static final int DETERMINISTIC_PARALLEL_SEARCH_FIELD_NUMBER = 134;
    4729  private boolean deterministicParallelSearch_;
    4740  return ((bitField3_ & 0x00000001) != 0);
    4741  }
    4752  return deterministicParallelSearch_;
    4753  }
    4754 
    4755  public static final int SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER = 113;
    4756  private boolean shareObjectiveBounds_;
    4764  public boolean hasShareObjectiveBounds() {
    4765  return ((bitField3_ & 0x00000002) != 0);
    4766  }
    4774  public boolean getShareObjectiveBounds() {
    4775  return shareObjectiveBounds_;
    4776  }
    4777 
    4778  public static final int SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER = 114;
    4779  private boolean shareLevelZeroBounds_;
    4787  public boolean hasShareLevelZeroBounds() {
    4788  return ((bitField3_ & 0x00000004) != 0);
    4789  }
    4797  public boolean getShareLevelZeroBounds() {
    4798  return shareLevelZeroBounds_;
    4799  }
    4800 
    4801  public static final int USE_LNS_ONLY_FIELD_NUMBER = 101;
    4802  private boolean useLnsOnly_;
    4810  public boolean hasUseLnsOnly() {
    4811  return ((bitField3_ & 0x00000008) != 0);
    4812  }
    4820  public boolean getUseLnsOnly() {
    4821  return useLnsOnly_;
    4822  }
    4823 
    4824  public static final int LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER = 105;
    4825  private boolean lnsFocusOnDecisionVariables_;
    4830  return ((bitField3_ & 0x00000010) != 0);
    4831  }
    4836  return lnsFocusOnDecisionVariables_;
    4837  }
    4838 
    4839  public static final int USE_RINS_LNS_FIELD_NUMBER = 129;
    4840  private boolean useRinsLns_;
    4848  public boolean hasUseRinsLns() {
    4849  return ((bitField3_ & 0x00000020) != 0);
    4850  }
    4858  public boolean getUseRinsLns() {
    4859  return useRinsLns_;
    4860  }
    4861 
    4862  public static final int RANDOMIZE_SEARCH_FIELD_NUMBER = 103;
    4863  private boolean randomizeSearch_;
    4871  public boolean hasRandomizeSearch() {
    4872  return ((bitField3_ & 0x00000040) != 0);
    4873  }
    4881  public boolean getRandomizeSearch() {
    4882  return randomizeSearch_;
    4883  }
    4884 
    4885  public static final int SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER = 104;
    4886  private long searchRandomizationTolerance_;
    4901  return ((bitField3_ & 0x00000080) != 0);
    4902  }
    4917  return searchRandomizationTolerance_;
    4918  }
    4919 
    4920  public static final int USE_OPTIONAL_VARIABLES_FIELD_NUMBER = 108;
    4921  private boolean useOptionalVariables_;
    4931  public boolean hasUseOptionalVariables() {
    4932  return ((bitField3_ & 0x00000100) != 0);
    4933  }
    4943  public boolean getUseOptionalVariables() {
    4944  return useOptionalVariables_;
    4945  }
    4946 
    4947  public static final int USE_EXACT_LP_REASON_FIELD_NUMBER = 109;
    4948  private boolean useExactLpReason_;
    4959  public boolean hasUseExactLpReason() {
    4960  return ((bitField3_ & 0x00000200) != 0);
    4961  }
    4972  public boolean getUseExactLpReason() {
    4973  return useExactLpReason_;
    4974  }
    4975 
    4976  public static final int USE_COMBINED_NO_OVERLAP_FIELD_NUMBER = 133;
    4977  private boolean useCombinedNoOverlap_;
    4987  public boolean hasUseCombinedNoOverlap() {
    4988  return ((bitField3_ & 0x00000400) != 0);
    4989  }
    4999  public boolean getUseCombinedNoOverlap() {
    5000  return useCombinedNoOverlap_;
    5001  }
    5002 
    5003  public static final int MIP_MAX_BOUND_FIELD_NUMBER = 124;
    5004  private double mipMaxBound_;
    5014  public boolean hasMipMaxBound() {
    5015  return ((bitField3_ & 0x00000800) != 0);
    5016  }
    5026  public double getMipMaxBound() {
    5027  return mipMaxBound_;
    5028  }
    5029 
    5030  public static final int MIP_VAR_SCALING_FIELD_NUMBER = 125;
    5031  private double mipVarScaling_;
    5041  public boolean hasMipVarScaling() {
    5042  return ((bitField3_ & 0x00001000) != 0);
    5043  }
    5053  public double getMipVarScaling() {
    5054  return mipVarScaling_;
    5055  }
    5056 
    5057  public static final int MIP_WANTED_PRECISION_FIELD_NUMBER = 126;
    5058  private double mipWantedPrecision_;
    5074  public boolean hasMipWantedPrecision() {
    5075  return ((bitField3_ & 0x00002000) != 0);
    5076  }
    5092  public double getMipWantedPrecision() {
    5093  return mipWantedPrecision_;
    5094  }
    5095 
    5096  public static final int MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER = 127;
    5097  private int mipMaxActivityExponent_;
    5111  public boolean hasMipMaxActivityExponent() {
    5112  return ((bitField3_ & 0x00004000) != 0);
    5113  }
    5128  return mipMaxActivityExponent_;
    5129  }
    5130 
    5131  public static final int MIP_CHECK_PRECISION_FIELD_NUMBER = 128;
    5132  private double mipCheckPrecision_;
    5143  public boolean hasMipCheckPrecision() {
    5144  return ((bitField3_ & 0x00008000) != 0);
    5145  }
    5156  public double getMipCheckPrecision() {
    5157  return mipCheckPrecision_;
    5158  }
    5159 
    5160  public static final int CATCH_SIGINT_SIGNAL_FIELD_NUMBER = 135;
    5161  private boolean catchSigintSignal_;
    5171  public boolean hasCatchSigintSignal() {
    5172  return ((bitField3_ & 0x00010000) != 0);
    5173  }
    5183  public boolean getCatchSigintSignal() {
    5184  return catchSigintSignal_;
    5185  }
    5186 
    5187  private byte memoizedIsInitialized = -1;
    5188  @java.lang.Override
    5189  public final boolean isInitialized() {
    5190  byte isInitialized = memoizedIsInitialized;
    5191  if (isInitialized == 1) return true;
    5192  if (isInitialized == 0) return false;
    5193 
    5194  memoizedIsInitialized = 1;
    5195  return true;
    5196  }
    5197 
    5198  @java.lang.Override
    5199  public void writeTo(com.google.protobuf.CodedOutputStream output)
    5200  throws java.io.IOException {
    5201  if (((bitField0_ & 0x00000001) != 0)) {
    5202  output.writeEnum(1, preferredVariableOrder_);
    5203  }
    5204  if (((bitField0_ & 0x00000002) != 0)) {
    5205  output.writeEnum(2, initialPolarity_);
    5206  }
    5207  if (((bitField0_ & 0x00000100) != 0)) {
    5208  output.writeEnum(4, minimizationAlgorithm_);
    5209  }
    5210  if (((bitField0_ & 0x00000800) != 0)) {
    5211  output.writeInt32(11, clauseCleanupPeriod_);
    5212  }
    5213  if (((bitField0_ & 0x00001000) != 0)) {
    5214  output.writeInt32(13, clauseCleanupTarget_);
    5215  }
    5216  if (((bitField0_ & 0x00100000) != 0)) {
    5217  output.writeDouble(15, variableActivityDecay_);
    5218  }
    5219  if (((bitField0_ & 0x00200000) != 0)) {
    5220  output.writeDouble(16, maxVariableActivityValue_);
    5221  }
    5222  if (((bitField0_ & 0x02000000) != 0)) {
    5223  output.writeDouble(17, clauseActivityDecay_);
    5224  }
    5225  if (((bitField0_ & 0x04000000) != 0)) {
    5226  output.writeDouble(18, maxClauseActivityValue_);
    5227  }
    5228  if (((bitField0_ & 0x00400000) != 0)) {
    5229  output.writeDouble(22, glucoseMaxDecay_);
    5230  }
    5231  if (((bitField0_ & 0x00800000) != 0)) {
    5232  output.writeDouble(23, glucoseDecayIncrement_);
    5233  }
    5234  if (((bitField0_ & 0x01000000) != 0)) {
    5235  output.writeInt32(24, glucoseDecayIncrementPeriod_);
    5236  }
    5237  if (((bitField0_ & 0x10000000) != 0)) {
    5238  output.writeInt32(30, restartPeriod_);
    5239  }
    5240  if (((bitField1_ & 0x00000400) != 0)) {
    5241  output.writeInt32(31, randomSeed_);
    5242  }
    5243  if (((bitField0_ & 0x00000010) != 0)) {
    5244  output.writeDouble(32, randomBranchesRatio_);
    5245  }
    5246  if (((bitField1_ & 0x00000200) != 0)) {
    5247  output.writeBool(33, treatBinaryClausesSeparately_);
    5248  }
    5249  if (((bitField0_ & 0x00000200) != 0)) {
    5250  output.writeEnum(34, binaryMinimizationAlgorithm_);
    5251  }
    5252  if (((bitField1_ & 0x00200000) != 0)) {
    5253  output.writeBool(35, useOptimizationHints_);
    5254  }
    5255  if (((bitField1_ & 0x00000020) != 0)) {
    5256  output.writeDouble(36, maxTimeInSeconds_);
    5257  }
    5258  if (((bitField1_ & 0x00000080) != 0)) {
    5259  output.writeInt64(37, maxNumberOfConflicts_);
    5260  }
    5261  if (((bitField1_ & 0x00000100) != 0)) {
    5262  output.writeInt64(40, maxMemoryInMb_);
    5263  }
    5264  if (((bitField1_ & 0x00000800) != 0)) {
    5265  output.writeBool(41, logSearchProgress_);
    5266  }
    5267  if (((bitField1_ & 0x00001000) != 0)) {
    5268  output.writeBool(43, usePbResolution_);
    5269  }
    5270  if (((bitField0_ & 0x00000004) != 0)) {
    5271  output.writeBool(44, usePhaseSaving_);
    5272  }
    5273  if (((bitField0_ & 0x00000008) != 0)) {
    5274  output.writeDouble(45, randomPolarityRatio_);
    5275  }
    5276  if (((bitField0_ & 0x00010000) != 0)) {
    5277  output.writeInt32(46, pbCleanupIncrement_);
    5278  }
    5279  if (((bitField0_ & 0x00020000) != 0)) {
    5280  output.writeDouble(47, pbCleanupRatio_);
    5281  }
    5282  if (((bitField1_ & 0x00002000) != 0)) {
    5283  output.writeBool(48, minimizeReductionDuringPbResolution_);
    5284  }
    5285  if (((bitField1_ & 0x00004000) != 0)) {
    5286  output.writeBool(49, countAssumptionLevelsInLbd_);
    5287  }
    5288  if (((bitField1_ & 0x00400000) != 0)) {
    5289  output.writeBool(50, minimizeCore_);
    5290  }
    5291  if (((bitField1_ & 0x02000000) != 0)) {
    5292  output.writeEnum(51, maxSatAssumptionOrder_);
    5293  }
    5294  if (((bitField1_ & 0x04000000) != 0)) {
    5295  output.writeBool(52, maxSatReverseAssumptionOrder_);
    5296  }
    5297  if (((bitField1_ & 0x08000000) != 0)) {
    5298  output.writeEnum(53, maxSatStratification_);
    5299  }
    5300  if (((bitField1_ & 0x00008000) != 0)) {
    5301  output.writeInt32(54, presolveBveThreshold_);
    5302  }
    5303  if (((bitField1_ & 0x00010000) != 0)) {
    5304  output.writeInt32(55, presolveBveClauseWeight_);
    5305  }
    5306  if (((bitField0_ & 0x00000400) != 0)) {
    5307  output.writeBool(56, subsumptionDuringConflictAnalysis_);
    5308  }
    5309  if (((bitField1_ & 0x00020000) != 0)) {
    5310  output.writeDouble(57, presolveProbingDeterministicTimeLimit_);
    5311  }
    5312  if (((bitField0_ & 0x00002000) != 0)) {
    5313  output.writeEnum(58, clauseCleanupProtection_);
    5314  }
    5315  if (((bitField0_ & 0x00004000) != 0)) {
    5316  output.writeInt32(59, clauseCleanupLbdBound_);
    5317  }
    5318  if (((bitField0_ & 0x00008000) != 0)) {
    5319  output.writeEnum(60, clauseCleanupOrdering_);
    5320  }
    5321  for (int i = 0; i < restartAlgorithms_.size(); i++) {
    5322  output.writeEnum(61, restartAlgorithms_.get(i));
    5323  }
    5324  if (((bitField0_ & 0x20000000) != 0)) {
    5325  output.writeInt32(62, restartRunningWindowSize_);
    5326  }
    5327  if (((bitField0_ & 0x40000000) != 0)) {
    5328  output.writeDouble(63, restartDlAverageRatio_);
    5329  }
    5330  if (((bitField1_ & 0x00000001) != 0)) {
    5331  output.writeBool(64, useBlockingRestart_);
    5332  }
    5333  if (((bitField1_ & 0x00000002) != 0)) {
    5334  output.writeInt32(65, blockingRestartWindowSize_);
    5335  }
    5336  if (((bitField1_ & 0x00000004) != 0)) {
    5337  output.writeDouble(66, blockingRestartMultiplier_);
    5338  }
    5339  if (((bitField1_ & 0x00000040) != 0)) {
    5340  output.writeDouble(67, maxDeterministicTime_);
    5341  }
    5342  if (((bitField1_ & 0x00000008) != 0)) {
    5343  output.writeInt32(68, numConflictsBeforeStrategyChanges_);
    5344  }
    5345  if (((bitField1_ & 0x00000010) != 0)) {
    5346  output.writeDouble(69, strategyChangeIncreaseRatio_);
    5347  }
    5348  if (((bitField0_ & 0x08000000) != 0)) {
    5349  com.google.protobuf.GeneratedMessageV3.writeString(output, 70, defaultRestartAlgorithms_);
    5350  }
    5351  if (((bitField0_ & 0x80000000) != 0)) {
    5352  output.writeDouble(71, restartLbdAverageRatio_);
    5353  }
    5354  if (((bitField1_ & 0x00080000) != 0)) {
    5355  output.writeBool(72, presolveUseBva_);
    5356  }
    5357  if (((bitField1_ & 0x00100000) != 0)) {
    5358  output.writeInt32(73, presolveBvaThreshold_);
    5359  }
    5360  if (((bitField1_ & 0x10000000) != 0)) {
    5361  output.writeBool(74, usePrecedencesInDisjunctiveConstraint_);
    5362  }
    5363  if (((bitField0_ & 0x00000020) != 0)) {
    5364  output.writeBool(75, useErwaHeuristic_);
    5365  }
    5366  if (((bitField0_ & 0x00000040) != 0)) {
    5367  output.writeDouble(76, initialVariablesActivity_);
    5368  }
    5369  if (((bitField0_ & 0x00000080) != 0)) {
    5370  output.writeBool(77, alsoBumpVariablesInConflictReasons_);
    5371  }
    5372  if (((bitField1_ & 0x20000000) != 0)) {
    5373  output.writeBool(78, useOverloadCheckerInCumulativeConstraint_);
    5374  }
    5375  if (((bitField1_ & 0x40000000) != 0)) {
    5376  output.writeBool(79, useTimetableEdgeFindingInCumulativeConstraint_);
    5377  }
    5378  if (((bitField1_ & 0x80000000) != 0)) {
    5379  output.writeBool(80, useDisjunctiveConstraintInCumulativeConstraint_);
    5380  }
    5381  if (((bitField2_ & 0x00002000) != 0)) {
    5382  output.writeEnum(82, searchBranching_);
    5383  }
    5384  if (((bitField2_ & 0x00080000) != 0)) {
    5385  output.writeBool(83, optimizeWithCore_);
    5386  }
    5387  if (((bitField1_ & 0x00800000) != 0)) {
    5388  output.writeBool(84, findMultipleCores_);
    5389  }
    5390  if (((bitField2_ & 0x00200000) != 0)) {
    5391  output.writeBool(85, optimizeWithMaxHs_);
    5392  }
    5393  if (((bitField2_ & 0x00400000) != 0)) {
    5394  output.writeBool(86, cpModelPresolve_);
    5395  }
    5396  if (((bitField2_ & 0x02000000) != 0)) {
    5397  output.writeBool(87, enumerateAllSolutions_);
    5398  }
    5399  if (((bitField1_ & 0x00040000) != 0)) {
    5400  output.writeBool(88, presolveBlockedClause_);
    5401  }
    5402  if (((bitField1_ & 0x01000000) != 0)) {
    5403  output.writeBool(89, coverOptimization_);
    5404  }
    5405  if (((bitField2_ & 0x00000001) != 0)) {
    5406  output.writeInt32(90, linearizationLevel_);
    5407  }
    5408  if (((bitField2_ & 0x00000004) != 0)) {
    5409  output.writeInt32(91, maxNumCuts_);
    5410  }
    5411  if (((bitField2_ & 0x00000008) != 0)) {
    5412  output.writeBool(92, onlyAddCutsAtLevelZero_);
    5413  }
    5414  if (((bitField2_ & 0x01000000) != 0)) {
    5415  output.writeBool(93, cpModelUseSatPresolve_);
    5416  }
    5417  if (((bitField2_ & 0x00004000) != 0)) {
    5418  output.writeBool(94, exploitIntegerLpSolution_);
    5419  }
    5420  if (((bitField2_ & 0x10000000) != 0)) {
    5421  output.writeBool(95, autoDetectGreaterThanAtLeastOneOf_);
    5422  }
    5423  if (((bitField0_ & 0x00040000) != 0)) {
    5424  output.writeInt32(96, minimizeWithPropagationRestartPeriod_);
    5425  }
    5426  if (((bitField0_ & 0x00080000) != 0)) {
    5427  output.writeInt32(97, minimizeWithPropagationNumDecisions_);
    5428  }
    5429  if (((bitField2_ & 0x20000000) != 0)) {
    5430  output.writeBool(98, stopAfterFirstSolution_);
    5431  }
    5432  if (((bitField2_ & 0x00100000) != 0)) {
    5433  output.writeInt32(99, binarySearchNumConflicts_);
    5434  }
    5435  if (((bitField2_ & 0x40000000) != 0)) {
    5436  output.writeInt32(100, numSearchWorkers_);
    5437  }
    5438  if (((bitField3_ & 0x00000008) != 0)) {
    5439  output.writeBool(101, useLnsOnly_);
    5440  }
    5441  if (((bitField3_ & 0x00000040) != 0)) {
    5442  output.writeBool(103, randomizeSearch_);
    5443  }
    5444  if (((bitField3_ & 0x00000080) != 0)) {
    5445  output.writeInt64(104, searchRandomizationTolerance_);
    5446  }
    5447  if (((bitField3_ & 0x00000010) != 0)) {
    5448  output.writeBool(105, lnsFocusOnDecisionVariables_);
    5449  }
    5450  if (((bitField2_ & 0x08000000) != 0)) {
    5451  output.writeBool(106, instantiateAllVariables_);
    5452  }
    5453  if (((bitField2_ & 0x00000002) != 0)) {
    5454  output.writeInt32(107, booleanEncodingLevel_);
    5455  }
    5456  if (((bitField3_ & 0x00000100) != 0)) {
    5457  output.writeBool(108, useOptionalVariables_);
    5458  }
    5459  if (((bitField3_ & 0x00000200) != 0)) {
    5460  output.writeBool(109, useExactLpReason_);
    5461  }
    5462  if (((bitField2_ & 0x00800000) != 0)) {
    5463  output.writeInt32(110, cpModelProbingLevel_);
    5464  }
    5465  if (((bitField2_ & 0x00000010) != 0)) {
    5466  output.writeBool(111, addKnapsackCuts_);
    5467  }
    5468  if (((bitField2_ & 0x00000200) != 0)) {
    5469  output.writeBool(112, addLpConstraintsLazily_);
    5470  }
    5471  if (((bitField3_ & 0x00000002) != 0)) {
    5472  output.writeBool(113, shareObjectiveBounds_);
    5473  }
    5474  if (((bitField3_ & 0x00000004) != 0)) {
    5475  output.writeBool(114, shareLevelZeroBounds_);
    5476  }
    5477  if (((bitField2_ & 0x00000400) != 0)) {
    5478  output.writeDouble(115, minOrthogonalityForLpConstraints_);
    5479  }
    5480  if (((bitField2_ & 0x00008000) != 0)) {
    5481  output.writeBool(116, exploitAllLpSolution_);
    5482  }
    5483  if (((bitField2_ & 0x00000020) != 0)) {
    5484  output.writeBool(117, addCgCuts_);
    5485  }
    5486  if (((bitField2_ & 0x00000080) != 0)) {
    5487  output.writeBool(118, useMirRounding_);
    5488  }
    5489  if (((bitField2_ & 0x00000100) != 0)) {
    5490  output.writeInt32(119, maxIntegerRoundingScaling_);
    5491  }
    5492  if (((bitField2_ & 0x00000040) != 0)) {
    5493  output.writeBool(120, addMirCuts_);
    5494  }
    5495  if (((bitField2_ & 0x00000800) != 0)) {
    5496  output.writeInt64(121, maxInactiveCount_);
    5497  }
    5498  if (((bitField2_ & 0x00001000) != 0)) {
    5499  output.writeInt64(122, constraintRemovalBatchSize_);
    5500  }
    5501  if (((bitField2_ & 0x00040000) != 0)) {
    5502  output.writeInt64(123, pseudoCostReliabilityThreshold_);
    5503  }
    5504  if (((bitField3_ & 0x00000800) != 0)) {
    5505  output.writeDouble(124, mipMaxBound_);
    5506  }
    5507  if (((bitField3_ & 0x00001000) != 0)) {
    5508  output.writeDouble(125, mipVarScaling_);
    5509  }
    5510  if (((bitField3_ & 0x00002000) != 0)) {
    5511  output.writeDouble(126, mipWantedPrecision_);
    5512  }
    5513  if (((bitField3_ & 0x00004000) != 0)) {
    5514  output.writeInt32(127, mipMaxActivityExponent_);
    5515  }
    5516  if (((bitField3_ & 0x00008000) != 0)) {
    5517  output.writeDouble(128, mipCheckPrecision_);
    5518  }
    5519  if (((bitField3_ & 0x00000020) != 0)) {
    5520  output.writeBool(129, useRinsLns_);
    5521  }
    5522  if (((bitField2_ & 0x00010000) != 0)) {
    5523  output.writeBool(130, exploitBestSolution_);
    5524  }
    5525  if (((bitField2_ & 0x00020000) != 0)) {
    5526  output.writeBool(131, exploitObjective_);
    5527  }
    5528  if (((bitField2_ & 0x04000000) != 0)) {
    5529  output.writeBool(132, fillTightenedDomainsInResponse_);
    5530  }
    5531  if (((bitField3_ & 0x00000400) != 0)) {
    5532  output.writeBool(133, useCombinedNoOverlap_);
    5533  }
    5534  if (((bitField3_ & 0x00000001) != 0)) {
    5535  output.writeBool(134, deterministicParallelSearch_);
    5536  }
    5537  if (((bitField3_ & 0x00010000) != 0)) {
    5538  output.writeBool(135, catchSigintSignal_);
    5539  }
    5540  if (((bitField2_ & 0x80000000) != 0)) {
    5541  output.writeBool(136, interleaveSearch_);
    5542  }
    5543  unknownFields.writeTo(output);
    5544  }
    5545 
    5546  @java.lang.Override
    5547  public int getSerializedSize() {
    5548  int size = memoizedSize;
    5549  if (size != -1) return size;
    5550 
    5551  size = 0;
    5552  if (((bitField0_ & 0x00000001) != 0)) {
    5553  size += com.google.protobuf.CodedOutputStream
    5554  .computeEnumSize(1, preferredVariableOrder_);
    5555  }
    5556  if (((bitField0_ & 0x00000002) != 0)) {
    5557  size += com.google.protobuf.CodedOutputStream
    5558  .computeEnumSize(2, initialPolarity_);
    5559  }
    5560  if (((bitField0_ & 0x00000100) != 0)) {
    5561  size += com.google.protobuf.CodedOutputStream
    5562  .computeEnumSize(4, minimizationAlgorithm_);
    5563  }
    5564  if (((bitField0_ & 0x00000800) != 0)) {
    5565  size += com.google.protobuf.CodedOutputStream
    5566  .computeInt32Size(11, clauseCleanupPeriod_);
    5567  }
    5568  if (((bitField0_ & 0x00001000) != 0)) {
    5569  size += com.google.protobuf.CodedOutputStream
    5570  .computeInt32Size(13, clauseCleanupTarget_);
    5571  }
    5572  if (((bitField0_ & 0x00100000) != 0)) {
    5573  size += com.google.protobuf.CodedOutputStream
    5574  .computeDoubleSize(15, variableActivityDecay_);
    5575  }
    5576  if (((bitField0_ & 0x00200000) != 0)) {
    5577  size += com.google.protobuf.CodedOutputStream
    5578  .computeDoubleSize(16, maxVariableActivityValue_);
    5579  }
    5580  if (((bitField0_ & 0x02000000) != 0)) {
    5581  size += com.google.protobuf.CodedOutputStream
    5582  .computeDoubleSize(17, clauseActivityDecay_);
    5583  }
    5584  if (((bitField0_ & 0x04000000) != 0)) {
    5585  size += com.google.protobuf.CodedOutputStream
    5586  .computeDoubleSize(18, maxClauseActivityValue_);
    5587  }
    5588  if (((bitField0_ & 0x00400000) != 0)) {
    5589  size += com.google.protobuf.CodedOutputStream
    5590  .computeDoubleSize(22, glucoseMaxDecay_);
    5591  }
    5592  if (((bitField0_ & 0x00800000) != 0)) {
    5593  size += com.google.protobuf.CodedOutputStream
    5594  .computeDoubleSize(23, glucoseDecayIncrement_);
    5595  }
    5596  if (((bitField0_ & 0x01000000) != 0)) {
    5597  size += com.google.protobuf.CodedOutputStream
    5598  .computeInt32Size(24, glucoseDecayIncrementPeriod_);
    5599  }
    5600  if (((bitField0_ & 0x10000000) != 0)) {
    5601  size += com.google.protobuf.CodedOutputStream
    5602  .computeInt32Size(30, restartPeriod_);
    5603  }
    5604  if (((bitField1_ & 0x00000400) != 0)) {
    5605  size += com.google.protobuf.CodedOutputStream
    5606  .computeInt32Size(31, randomSeed_);
    5607  }
    5608  if (((bitField0_ & 0x00000010) != 0)) {
    5609  size += com.google.protobuf.CodedOutputStream
    5610  .computeDoubleSize(32, randomBranchesRatio_);
    5611  }
    5612  if (((bitField1_ & 0x00000200) != 0)) {
    5613  size += com.google.protobuf.CodedOutputStream
    5614  .computeBoolSize(33, treatBinaryClausesSeparately_);
    5615  }
    5616  if (((bitField0_ & 0x00000200) != 0)) {
    5617  size += com.google.protobuf.CodedOutputStream
    5618  .computeEnumSize(34, binaryMinimizationAlgorithm_);
    5619  }
    5620  if (((bitField1_ & 0x00200000) != 0)) {
    5621  size += com.google.protobuf.CodedOutputStream
    5622  .computeBoolSize(35, useOptimizationHints_);
    5623  }
    5624  if (((bitField1_ & 0x00000020) != 0)) {
    5625  size += com.google.protobuf.CodedOutputStream
    5626  .computeDoubleSize(36, maxTimeInSeconds_);
    5627  }
    5628  if (((bitField1_ & 0x00000080) != 0)) {
    5629  size += com.google.protobuf.CodedOutputStream
    5630  .computeInt64Size(37, maxNumberOfConflicts_);
    5631  }
    5632  if (((bitField1_ & 0x00000100) != 0)) {
    5633  size += com.google.protobuf.CodedOutputStream
    5634  .computeInt64Size(40, maxMemoryInMb_);
    5635  }
    5636  if (((bitField1_ & 0x00000800) != 0)) {
    5637  size += com.google.protobuf.CodedOutputStream
    5638  .computeBoolSize(41, logSearchProgress_);
    5639  }
    5640  if (((bitField1_ & 0x00001000) != 0)) {
    5641  size += com.google.protobuf.CodedOutputStream
    5642  .computeBoolSize(43, usePbResolution_);
    5643  }
    5644  if (((bitField0_ & 0x00000004) != 0)) {
    5645  size += com.google.protobuf.CodedOutputStream
    5646  .computeBoolSize(44, usePhaseSaving_);
    5647  }
    5648  if (((bitField0_ & 0x00000008) != 0)) {
    5649  size += com.google.protobuf.CodedOutputStream
    5650  .computeDoubleSize(45, randomPolarityRatio_);
    5651  }
    5652  if (((bitField0_ & 0x00010000) != 0)) {
    5653  size += com.google.protobuf.CodedOutputStream
    5654  .computeInt32Size(46, pbCleanupIncrement_);
    5655  }
    5656  if (((bitField0_ & 0x00020000) != 0)) {
    5657  size += com.google.protobuf.CodedOutputStream
    5658  .computeDoubleSize(47, pbCleanupRatio_);
    5659  }
    5660  if (((bitField1_ & 0x00002000) != 0)) {
    5661  size += com.google.protobuf.CodedOutputStream
    5662  .computeBoolSize(48, minimizeReductionDuringPbResolution_);
    5663  }
    5664  if (((bitField1_ & 0x00004000) != 0)) {
    5665  size += com.google.protobuf.CodedOutputStream
    5666  .computeBoolSize(49, countAssumptionLevelsInLbd_);
    5667  }
    5668  if (((bitField1_ & 0x00400000) != 0)) {
    5669  size += com.google.protobuf.CodedOutputStream
    5670  .computeBoolSize(50, minimizeCore_);
    5671  }
    5672  if (((bitField1_ & 0x02000000) != 0)) {
    5673  size += com.google.protobuf.CodedOutputStream
    5674  .computeEnumSize(51, maxSatAssumptionOrder_);
    5675  }
    5676  if (((bitField1_ & 0x04000000) != 0)) {
    5677  size += com.google.protobuf.CodedOutputStream
    5678  .computeBoolSize(52, maxSatReverseAssumptionOrder_);
    5679  }
    5680  if (((bitField1_ & 0x08000000) != 0)) {
    5681  size += com.google.protobuf.CodedOutputStream
    5682  .computeEnumSize(53, maxSatStratification_);
    5683  }
    5684  if (((bitField1_ & 0x00008000) != 0)) {
    5685  size += com.google.protobuf.CodedOutputStream
    5686  .computeInt32Size(54, presolveBveThreshold_);
    5687  }
    5688  if (((bitField1_ & 0x00010000) != 0)) {
    5689  size += com.google.protobuf.CodedOutputStream
    5690  .computeInt32Size(55, presolveBveClauseWeight_);
    5691  }
    5692  if (((bitField0_ & 0x00000400) != 0)) {
    5693  size += com.google.protobuf.CodedOutputStream
    5694  .computeBoolSize(56, subsumptionDuringConflictAnalysis_);
    5695  }
    5696  if (((bitField1_ & 0x00020000) != 0)) {
    5697  size += com.google.protobuf.CodedOutputStream
    5698  .computeDoubleSize(57, presolveProbingDeterministicTimeLimit_);
    5699  }
    5700  if (((bitField0_ & 0x00002000) != 0)) {
    5701  size += com.google.protobuf.CodedOutputStream
    5702  .computeEnumSize(58, clauseCleanupProtection_);
    5703  }
    5704  if (((bitField0_ & 0x00004000) != 0)) {
    5705  size += com.google.protobuf.CodedOutputStream
    5706  .computeInt32Size(59, clauseCleanupLbdBound_);
    5707  }
    5708  if (((bitField0_ & 0x00008000) != 0)) {
    5709  size += com.google.protobuf.CodedOutputStream
    5710  .computeEnumSize(60, clauseCleanupOrdering_);
    5711  }
    5712  {
    5713  int dataSize = 0;
    5714  for (int i = 0; i < restartAlgorithms_.size(); i++) {
    5715  dataSize += com.google.protobuf.CodedOutputStream
    5716  .computeEnumSizeNoTag(restartAlgorithms_.get(i));
    5717  }
    5718  size += dataSize;
    5719  size += 2 * restartAlgorithms_.size();
    5720  }
    5721  if (((bitField0_ & 0x20000000) != 0)) {
    5722  size += com.google.protobuf.CodedOutputStream
    5723  .computeInt32Size(62, restartRunningWindowSize_);
    5724  }
    5725  if (((bitField0_ & 0x40000000) != 0)) {
    5726  size += com.google.protobuf.CodedOutputStream
    5727  .computeDoubleSize(63, restartDlAverageRatio_);
    5728  }
    5729  if (((bitField1_ & 0x00000001) != 0)) {
    5730  size += com.google.protobuf.CodedOutputStream
    5731  .computeBoolSize(64, useBlockingRestart_);
    5732  }
    5733  if (((bitField1_ & 0x00000002) != 0)) {
    5734  size += com.google.protobuf.CodedOutputStream
    5735  .computeInt32Size(65, blockingRestartWindowSize_);
    5736  }
    5737  if (((bitField1_ & 0x00000004) != 0)) {
    5738  size += com.google.protobuf.CodedOutputStream
    5739  .computeDoubleSize(66, blockingRestartMultiplier_);
    5740  }
    5741  if (((bitField1_ & 0x00000040) != 0)) {
    5742  size += com.google.protobuf.CodedOutputStream
    5743  .computeDoubleSize(67, maxDeterministicTime_);
    5744  }
    5745  if (((bitField1_ & 0x00000008) != 0)) {
    5746  size += com.google.protobuf.CodedOutputStream
    5747  .computeInt32Size(68, numConflictsBeforeStrategyChanges_);
    5748  }
    5749  if (((bitField1_ & 0x00000010) != 0)) {
    5750  size += com.google.protobuf.CodedOutputStream
    5751  .computeDoubleSize(69, strategyChangeIncreaseRatio_);
    5752  }
    5753  if (((bitField0_ & 0x08000000) != 0)) {
    5754  size += com.google.protobuf.GeneratedMessageV3.computeStringSize(70, defaultRestartAlgorithms_);
    5755  }
    5756  if (((bitField0_ & 0x80000000) != 0)) {
    5757  size += com.google.protobuf.CodedOutputStream
    5758  .computeDoubleSize(71, restartLbdAverageRatio_);
    5759  }
    5760  if (((bitField1_ & 0x00080000) != 0)) {
    5761  size += com.google.protobuf.CodedOutputStream
    5762  .computeBoolSize(72, presolveUseBva_);
    5763  }
    5764  if (((bitField1_ & 0x00100000) != 0)) {
    5765  size += com.google.protobuf.CodedOutputStream
    5766  .computeInt32Size(73, presolveBvaThreshold_);
    5767  }
    5768  if (((bitField1_ & 0x10000000) != 0)) {
    5769  size += com.google.protobuf.CodedOutputStream
    5770  .computeBoolSize(74, usePrecedencesInDisjunctiveConstraint_);
    5771  }
    5772  if (((bitField0_ & 0x00000020) != 0)) {
    5773  size += com.google.protobuf.CodedOutputStream
    5774  .computeBoolSize(75, useErwaHeuristic_);
    5775  }
    5776  if (((bitField0_ & 0x00000040) != 0)) {
    5777  size += com.google.protobuf.CodedOutputStream
    5778  .computeDoubleSize(76, initialVariablesActivity_);
    5779  }
    5780  if (((bitField0_ & 0x00000080) != 0)) {
    5781  size += com.google.protobuf.CodedOutputStream
    5782  .computeBoolSize(77, alsoBumpVariablesInConflictReasons_);
    5783  }
    5784  if (((bitField1_ & 0x20000000) != 0)) {
    5785  size += com.google.protobuf.CodedOutputStream
    5786  .computeBoolSize(78, useOverloadCheckerInCumulativeConstraint_);
    5787  }
    5788  if (((bitField1_ & 0x40000000) != 0)) {
    5789  size += com.google.protobuf.CodedOutputStream
    5790  .computeBoolSize(79, useTimetableEdgeFindingInCumulativeConstraint_);
    5791  }
    5792  if (((bitField1_ & 0x80000000) != 0)) {
    5793  size += com.google.protobuf.CodedOutputStream
    5794  .computeBoolSize(80, useDisjunctiveConstraintInCumulativeConstraint_);
    5795  }
    5796  if (((bitField2_ & 0x00002000) != 0)) {
    5797  size += com.google.protobuf.CodedOutputStream
    5798  .computeEnumSize(82, searchBranching_);
    5799  }
    5800  if (((bitField2_ & 0x00080000) != 0)) {
    5801  size += com.google.protobuf.CodedOutputStream
    5802  .computeBoolSize(83, optimizeWithCore_);
    5803  }
    5804  if (((bitField1_ & 0x00800000) != 0)) {
    5805  size += com.google.protobuf.CodedOutputStream
    5806  .computeBoolSize(84, findMultipleCores_);
    5807  }
    5808  if (((bitField2_ & 0x00200000) != 0)) {
    5809  size += com.google.protobuf.CodedOutputStream
    5810  .computeBoolSize(85, optimizeWithMaxHs_);
    5811  }
    5812  if (((bitField2_ & 0x00400000) != 0)) {
    5813  size += com.google.protobuf.CodedOutputStream
    5814  .computeBoolSize(86, cpModelPresolve_);
    5815  }
    5816  if (((bitField2_ & 0x02000000) != 0)) {
    5817  size += com.google.protobuf.CodedOutputStream
    5818  .computeBoolSize(87, enumerateAllSolutions_);
    5819  }
    5820  if (((bitField1_ & 0x00040000) != 0)) {
    5821  size += com.google.protobuf.CodedOutputStream
    5822  .computeBoolSize(88, presolveBlockedClause_);
    5823  }
    5824  if (((bitField1_ & 0x01000000) != 0)) {
    5825  size += com.google.protobuf.CodedOutputStream
    5826  .computeBoolSize(89, coverOptimization_);
    5827  }
    5828  if (((bitField2_ & 0x00000001) != 0)) {
    5829  size += com.google.protobuf.CodedOutputStream
    5830  .computeInt32Size(90, linearizationLevel_);
    5831  }
    5832  if (((bitField2_ & 0x00000004) != 0)) {
    5833  size += com.google.protobuf.CodedOutputStream
    5834  .computeInt32Size(91, maxNumCuts_);
    5835  }
    5836  if (((bitField2_ & 0x00000008) != 0)) {
    5837  size += com.google.protobuf.CodedOutputStream
    5838  .computeBoolSize(92, onlyAddCutsAtLevelZero_);
    5839  }
    5840  if (((bitField2_ & 0x01000000) != 0)) {
    5841  size += com.google.protobuf.CodedOutputStream
    5842  .computeBoolSize(93, cpModelUseSatPresolve_);
    5843  }
    5844  if (((bitField2_ & 0x00004000) != 0)) {
    5845  size += com.google.protobuf.CodedOutputStream
    5846  .computeBoolSize(94, exploitIntegerLpSolution_);
    5847  }
    5848  if (((bitField2_ & 0x10000000) != 0)) {
    5849  size += com.google.protobuf.CodedOutputStream
    5850  .computeBoolSize(95, autoDetectGreaterThanAtLeastOneOf_);
    5851  }
    5852  if (((bitField0_ & 0x00040000) != 0)) {
    5853  size += com.google.protobuf.CodedOutputStream
    5854  .computeInt32Size(96, minimizeWithPropagationRestartPeriod_);
    5855  }
    5856  if (((bitField0_ & 0x00080000) != 0)) {
    5857  size += com.google.protobuf.CodedOutputStream
    5858  .computeInt32Size(97, minimizeWithPropagationNumDecisions_);
    5859  }
    5860  if (((bitField2_ & 0x20000000) != 0)) {
    5861  size += com.google.protobuf.CodedOutputStream
    5862  .computeBoolSize(98, stopAfterFirstSolution_);
    5863  }
    5864  if (((bitField2_ & 0x00100000) != 0)) {
    5865  size += com.google.protobuf.CodedOutputStream
    5866  .computeInt32Size(99, binarySearchNumConflicts_);
    5867  }
    5868  if (((bitField2_ & 0x40000000) != 0)) {
    5869  size += com.google.protobuf.CodedOutputStream
    5870  .computeInt32Size(100, numSearchWorkers_);
    5871  }
    5872  if (((bitField3_ & 0x00000008) != 0)) {
    5873  size += com.google.protobuf.CodedOutputStream
    5874  .computeBoolSize(101, useLnsOnly_);
    5875  }
    5876  if (((bitField3_ & 0x00000040) != 0)) {
    5877  size += com.google.protobuf.CodedOutputStream
    5878  .computeBoolSize(103, randomizeSearch_);
    5879  }
    5880  if (((bitField3_ & 0x00000080) != 0)) {
    5881  size += com.google.protobuf.CodedOutputStream
    5882  .computeInt64Size(104, searchRandomizationTolerance_);
    5883  }
    5884  if (((bitField3_ & 0x00000010) != 0)) {
    5885  size += com.google.protobuf.CodedOutputStream
    5886  .computeBoolSize(105, lnsFocusOnDecisionVariables_);
    5887  }
    5888  if (((bitField2_ & 0x08000000) != 0)) {
    5889  size += com.google.protobuf.CodedOutputStream
    5890  .computeBoolSize(106, instantiateAllVariables_);
    5891  }
    5892  if (((bitField2_ & 0x00000002) != 0)) {
    5893  size += com.google.protobuf.CodedOutputStream
    5894  .computeInt32Size(107, booleanEncodingLevel_);
    5895  }
    5896  if (((bitField3_ & 0x00000100) != 0)) {
    5897  size += com.google.protobuf.CodedOutputStream
    5898  .computeBoolSize(108, useOptionalVariables_);
    5899  }
    5900  if (((bitField3_ & 0x00000200) != 0)) {
    5901  size += com.google.protobuf.CodedOutputStream
    5902  .computeBoolSize(109, useExactLpReason_);
    5903  }
    5904  if (((bitField2_ & 0x00800000) != 0)) {
    5905  size += com.google.protobuf.CodedOutputStream
    5906  .computeInt32Size(110, cpModelProbingLevel_);
    5907  }
    5908  if (((bitField2_ & 0x00000010) != 0)) {
    5909  size += com.google.protobuf.CodedOutputStream
    5910  .computeBoolSize(111, addKnapsackCuts_);
    5911  }
    5912  if (((bitField2_ & 0x00000200) != 0)) {
    5913  size += com.google.protobuf.CodedOutputStream
    5914  .computeBoolSize(112, addLpConstraintsLazily_);
    5915  }
    5916  if (((bitField3_ & 0x00000002) != 0)) {
    5917  size += com.google.protobuf.CodedOutputStream
    5918  .computeBoolSize(113, shareObjectiveBounds_);
    5919  }
    5920  if (((bitField3_ & 0x00000004) != 0)) {
    5921  size += com.google.protobuf.CodedOutputStream
    5922  .computeBoolSize(114, shareLevelZeroBounds_);
    5923  }
    5924  if (((bitField2_ & 0x00000400) != 0)) {
    5925  size += com.google.protobuf.CodedOutputStream
    5926  .computeDoubleSize(115, minOrthogonalityForLpConstraints_);
    5927  }
    5928  if (((bitField2_ & 0x00008000) != 0)) {
    5929  size += com.google.protobuf.CodedOutputStream
    5930  .computeBoolSize(116, exploitAllLpSolution_);
    5931  }
    5932  if (((bitField2_ & 0x00000020) != 0)) {
    5933  size += com.google.protobuf.CodedOutputStream
    5934  .computeBoolSize(117, addCgCuts_);
    5935  }
    5936  if (((bitField2_ & 0x00000080) != 0)) {
    5937  size += com.google.protobuf.CodedOutputStream
    5938  .computeBoolSize(118, useMirRounding_);
    5939  }
    5940  if (((bitField2_ & 0x00000100) != 0)) {
    5941  size += com.google.protobuf.CodedOutputStream
    5942  .computeInt32Size(119, maxIntegerRoundingScaling_);
    5943  }
    5944  if (((bitField2_ & 0x00000040) != 0)) {
    5945  size += com.google.protobuf.CodedOutputStream
    5946  .computeBoolSize(120, addMirCuts_);
    5947  }
    5948  if (((bitField2_ & 0x00000800) != 0)) {
    5949  size += com.google.protobuf.CodedOutputStream
    5950  .computeInt64Size(121, maxInactiveCount_);
    5951  }
    5952  if (((bitField2_ & 0x00001000) != 0)) {
    5953  size += com.google.protobuf.CodedOutputStream
    5954  .computeInt64Size(122, constraintRemovalBatchSize_);
    5955  }
    5956  if (((bitField2_ & 0x00040000) != 0)) {
    5957  size += com.google.protobuf.CodedOutputStream
    5958  .computeInt64Size(123, pseudoCostReliabilityThreshold_);
    5959  }
    5960  if (((bitField3_ & 0x00000800) != 0)) {
    5961  size += com.google.protobuf.CodedOutputStream
    5962  .computeDoubleSize(124, mipMaxBound_);
    5963  }
    5964  if (((bitField3_ & 0x00001000) != 0)) {
    5965  size += com.google.protobuf.CodedOutputStream
    5966  .computeDoubleSize(125, mipVarScaling_);
    5967  }
    5968  if (((bitField3_ & 0x00002000) != 0)) {
    5969  size += com.google.protobuf.CodedOutputStream
    5970  .computeDoubleSize(126, mipWantedPrecision_);
    5971  }
    5972  if (((bitField3_ & 0x00004000) != 0)) {
    5973  size += com.google.protobuf.CodedOutputStream
    5974  .computeInt32Size(127, mipMaxActivityExponent_);
    5975  }
    5976  if (((bitField3_ & 0x00008000) != 0)) {
    5977  size += com.google.protobuf.CodedOutputStream
    5978  .computeDoubleSize(128, mipCheckPrecision_);
    5979  }
    5980  if (((bitField3_ & 0x00000020) != 0)) {
    5981  size += com.google.protobuf.CodedOutputStream
    5982  .computeBoolSize(129, useRinsLns_);
    5983  }
    5984  if (((bitField2_ & 0x00010000) != 0)) {
    5985  size += com.google.protobuf.CodedOutputStream
    5986  .computeBoolSize(130, exploitBestSolution_);
    5987  }
    5988  if (((bitField2_ & 0x00020000) != 0)) {
    5989  size += com.google.protobuf.CodedOutputStream
    5990  .computeBoolSize(131, exploitObjective_);
    5991  }
    5992  if (((bitField2_ & 0x04000000) != 0)) {
    5993  size += com.google.protobuf.CodedOutputStream
    5994  .computeBoolSize(132, fillTightenedDomainsInResponse_);
    5995  }
    5996  if (((bitField3_ & 0x00000400) != 0)) {
    5997  size += com.google.protobuf.CodedOutputStream
    5998  .computeBoolSize(133, useCombinedNoOverlap_);
    5999  }
    6000  if (((bitField3_ & 0x00000001) != 0)) {
    6001  size += com.google.protobuf.CodedOutputStream
    6002  .computeBoolSize(134, deterministicParallelSearch_);
    6003  }
    6004  if (((bitField3_ & 0x00010000) != 0)) {
    6005  size += com.google.protobuf.CodedOutputStream
    6006  .computeBoolSize(135, catchSigintSignal_);
    6007  }
    6008  if (((bitField2_ & 0x80000000) != 0)) {
    6009  size += com.google.protobuf.CodedOutputStream
    6010  .computeBoolSize(136, interleaveSearch_);
    6011  }
    6012  size += unknownFields.getSerializedSize();
    6013  memoizedSize = size;
    6014  return size;
    6015  }
    6016 
    6017  @java.lang.Override
    6018  public boolean equals(final java.lang.Object obj) {
    6019  if (obj == this) {
    6020  return true;
    6021  }
    6022  if (!(obj instanceof com.google.ortools.sat.SatParameters)) {
    6023  return super.equals(obj);
    6024  }
    6026 
    6027  if (hasPreferredVariableOrder() != other.hasPreferredVariableOrder()) return false;
    6028  if (hasPreferredVariableOrder()) {
    6029  if (preferredVariableOrder_ != other.preferredVariableOrder_) return false;
    6030  }
    6031  if (hasInitialPolarity() != other.hasInitialPolarity()) return false;
    6032  if (hasInitialPolarity()) {
    6033  if (initialPolarity_ != other.initialPolarity_) return false;
    6034  }
    6035  if (hasUsePhaseSaving() != other.hasUsePhaseSaving()) return false;
    6036  if (hasUsePhaseSaving()) {
    6037  if (getUsePhaseSaving()
    6038  != other.getUsePhaseSaving()) return false;
    6039  }
    6040  if (hasRandomPolarityRatio() != other.hasRandomPolarityRatio()) return false;
    6041  if (hasRandomPolarityRatio()) {
    6042  if (java.lang.Double.doubleToLongBits(getRandomPolarityRatio())
    6043  != java.lang.Double.doubleToLongBits(
    6044  other.getRandomPolarityRatio())) return false;
    6045  }
    6046  if (hasRandomBranchesRatio() != other.hasRandomBranchesRatio()) return false;
    6047  if (hasRandomBranchesRatio()) {
    6048  if (java.lang.Double.doubleToLongBits(getRandomBranchesRatio())
    6049  != java.lang.Double.doubleToLongBits(
    6050  other.getRandomBranchesRatio())) return false;
    6051  }
    6052  if (hasUseErwaHeuristic() != other.hasUseErwaHeuristic()) return false;
    6053  if (hasUseErwaHeuristic()) {
    6054  if (getUseErwaHeuristic()
    6055  != other.getUseErwaHeuristic()) return false;
    6056  }
    6057  if (hasInitialVariablesActivity() != other.hasInitialVariablesActivity()) return false;
    6059  if (java.lang.Double.doubleToLongBits(getInitialVariablesActivity())
    6060  != java.lang.Double.doubleToLongBits(
    6061  other.getInitialVariablesActivity())) return false;
    6062  }
    6063  if (hasAlsoBumpVariablesInConflictReasons() != other.hasAlsoBumpVariablesInConflictReasons()) return false;
    6066  != other.getAlsoBumpVariablesInConflictReasons()) return false;
    6067  }
    6068  if (hasMinimizationAlgorithm() != other.hasMinimizationAlgorithm()) return false;
    6069  if (hasMinimizationAlgorithm()) {
    6070  if (minimizationAlgorithm_ != other.minimizationAlgorithm_) return false;
    6071  }
    6072  if (hasBinaryMinimizationAlgorithm() != other.hasBinaryMinimizationAlgorithm()) return false;
    6074  if (binaryMinimizationAlgorithm_ != other.binaryMinimizationAlgorithm_) return false;
    6075  }
    6076  if (hasSubsumptionDuringConflictAnalysis() != other.hasSubsumptionDuringConflictAnalysis()) return false;
    6079  != other.getSubsumptionDuringConflictAnalysis()) return false;
    6080  }
    6081  if (hasClauseCleanupPeriod() != other.hasClauseCleanupPeriod()) return false;
    6082  if (hasClauseCleanupPeriod()) {
    6084  != other.getClauseCleanupPeriod()) return false;
    6085  }
    6086  if (hasClauseCleanupTarget() != other.hasClauseCleanupTarget()) return false;
    6087  if (hasClauseCleanupTarget()) {
    6089  != other.getClauseCleanupTarget()) return false;
    6090  }
    6091  if (hasClauseCleanupProtection() != other.hasClauseCleanupProtection()) return false;
    6093  if (clauseCleanupProtection_ != other.clauseCleanupProtection_) return false;
    6094  }
    6095  if (hasClauseCleanupLbdBound() != other.hasClauseCleanupLbdBound()) return false;
    6096  if (hasClauseCleanupLbdBound()) {
    6098  != other.getClauseCleanupLbdBound()) return false;
    6099  }
    6100  if (hasClauseCleanupOrdering() != other.hasClauseCleanupOrdering()) return false;
    6101  if (hasClauseCleanupOrdering()) {
    6102  if (clauseCleanupOrdering_ != other.clauseCleanupOrdering_) return false;
    6103  }
    6104  if (hasPbCleanupIncrement() != other.hasPbCleanupIncrement()) return false;
    6105  if (hasPbCleanupIncrement()) {
    6106  if (getPbCleanupIncrement()
    6107  != other.getPbCleanupIncrement()) return false;
    6108  }
    6109  if (hasPbCleanupRatio() != other.hasPbCleanupRatio()) return false;
    6110  if (hasPbCleanupRatio()) {
    6111  if (java.lang.Double.doubleToLongBits(getPbCleanupRatio())
    6112  != java.lang.Double.doubleToLongBits(
    6113  other.getPbCleanupRatio())) return false;
    6114  }
    6115  if (hasMinimizeWithPropagationRestartPeriod() != other.hasMinimizeWithPropagationRestartPeriod()) return false;
    6118  != other.getMinimizeWithPropagationRestartPeriod()) return false;
    6119  }
    6120  if (hasMinimizeWithPropagationNumDecisions() != other.hasMinimizeWithPropagationNumDecisions()) return false;
    6123  != other.getMinimizeWithPropagationNumDecisions()) return false;
    6124  }
    6125  if (hasVariableActivityDecay() != other.hasVariableActivityDecay()) return false;
    6126  if (hasVariableActivityDecay()) {
    6127  if (java.lang.Double.doubleToLongBits(getVariableActivityDecay())
    6128  != java.lang.Double.doubleToLongBits(
    6129  other.getVariableActivityDecay())) return false;
    6130  }
    6131  if (hasMaxVariableActivityValue() != other.hasMaxVariableActivityValue()) return false;
    6133  if (java.lang.Double.doubleToLongBits(getMaxVariableActivityValue())
    6134  != java.lang.Double.doubleToLongBits(
    6135  other.getMaxVariableActivityValue())) return false;
    6136  }
    6137  if (hasGlucoseMaxDecay() != other.hasGlucoseMaxDecay()) return false;
    6138  if (hasGlucoseMaxDecay()) {
    6139  if (java.lang.Double.doubleToLongBits(getGlucoseMaxDecay())
    6140  != java.lang.Double.doubleToLongBits(
    6141  other.getGlucoseMaxDecay())) return false;
    6142  }
    6143  if (hasGlucoseDecayIncrement() != other.hasGlucoseDecayIncrement()) return false;
    6144  if (hasGlucoseDecayIncrement()) {
    6145  if (java.lang.Double.doubleToLongBits(getGlucoseDecayIncrement())
    6146  != java.lang.Double.doubleToLongBits(
    6147  other.getGlucoseDecayIncrement())) return false;
    6148  }
    6149  if (hasGlucoseDecayIncrementPeriod() != other.hasGlucoseDecayIncrementPeriod()) return false;
    6152  != other.getGlucoseDecayIncrementPeriod()) return false;
    6153  }
    6154  if (hasClauseActivityDecay() != other.hasClauseActivityDecay()) return false;
    6155  if (hasClauseActivityDecay()) {
    6156  if (java.lang.Double.doubleToLongBits(getClauseActivityDecay())
    6157  != java.lang.Double.doubleToLongBits(
    6158  other.getClauseActivityDecay())) return false;
    6159  }
    6160  if (hasMaxClauseActivityValue() != other.hasMaxClauseActivityValue()) return false;
    6161  if (hasMaxClauseActivityValue()) {
    6162  if (java.lang.Double.doubleToLongBits(getMaxClauseActivityValue())
    6163  != java.lang.Double.doubleToLongBits(
    6164  other.getMaxClauseActivityValue())) return false;
    6165  }
    6166  if (!restartAlgorithms_.equals(other.restartAlgorithms_)) return false;
    6167  if (hasDefaultRestartAlgorithms() != other.hasDefaultRestartAlgorithms()) return false;
    6170  .equals(other.getDefaultRestartAlgorithms())) return false;
    6171  }
    6172  if (hasRestartPeriod() != other.hasRestartPeriod()) return false;
    6173  if (hasRestartPeriod()) {
    6174  if (getRestartPeriod()
    6175  != other.getRestartPeriod()) return false;
    6176  }
    6177  if (hasRestartRunningWindowSize() != other.hasRestartRunningWindowSize()) return false;
    6180  != other.getRestartRunningWindowSize()) return false;
    6181  }
    6182  if (hasRestartDlAverageRatio() != other.hasRestartDlAverageRatio()) return false;
    6183  if (hasRestartDlAverageRatio()) {
    6184  if (java.lang.Double.doubleToLongBits(getRestartDlAverageRatio())
    6185  != java.lang.Double.doubleToLongBits(
    6186  other.getRestartDlAverageRatio())) return false;
    6187  }
    6188  if (hasRestartLbdAverageRatio() != other.hasRestartLbdAverageRatio()) return false;
    6189  if (hasRestartLbdAverageRatio()) {
    6190  if (java.lang.Double.doubleToLongBits(getRestartLbdAverageRatio())
    6191  != java.lang.Double.doubleToLongBits(
    6192  other.getRestartLbdAverageRatio())) return false;
    6193  }
    6194  if (hasUseBlockingRestart() != other.hasUseBlockingRestart()) return false;
    6195  if (hasUseBlockingRestart()) {
    6196  if (getUseBlockingRestart()
    6197  != other.getUseBlockingRestart()) return false;
    6198  }
    6199  if (hasBlockingRestartWindowSize() != other.hasBlockingRestartWindowSize()) return false;
    6202  != other.getBlockingRestartWindowSize()) return false;
    6203  }
    6204  if (hasBlockingRestartMultiplier() != other.hasBlockingRestartMultiplier()) return false;
    6206  if (java.lang.Double.doubleToLongBits(getBlockingRestartMultiplier())
    6207  != java.lang.Double.doubleToLongBits(
    6208  other.getBlockingRestartMultiplier())) return false;
    6209  }
    6210  if (hasNumConflictsBeforeStrategyChanges() != other.hasNumConflictsBeforeStrategyChanges()) return false;
    6213  != other.getNumConflictsBeforeStrategyChanges()) return false;
    6214  }
    6215  if (hasStrategyChangeIncreaseRatio() != other.hasStrategyChangeIncreaseRatio()) return false;
    6217  if (java.lang.Double.doubleToLongBits(getStrategyChangeIncreaseRatio())
    6218  != java.lang.Double.doubleToLongBits(
    6219  other.getStrategyChangeIncreaseRatio())) return false;
    6220  }
    6221  if (hasMaxTimeInSeconds() != other.hasMaxTimeInSeconds()) return false;
    6222  if (hasMaxTimeInSeconds()) {
    6223  if (java.lang.Double.doubleToLongBits(getMaxTimeInSeconds())
    6224  != java.lang.Double.doubleToLongBits(
    6225  other.getMaxTimeInSeconds())) return false;
    6226  }
    6227  if (hasMaxDeterministicTime() != other.hasMaxDeterministicTime()) return false;
    6228  if (hasMaxDeterministicTime()) {
    6229  if (java.lang.Double.doubleToLongBits(getMaxDeterministicTime())
    6230  != java.lang.Double.doubleToLongBits(
    6231  other.getMaxDeterministicTime())) return false;
    6232  }
    6233  if (hasMaxNumberOfConflicts() != other.hasMaxNumberOfConflicts()) return false;
    6234  if (hasMaxNumberOfConflicts()) {
    6236  != other.getMaxNumberOfConflicts()) return false;
    6237  }
    6238  if (hasMaxMemoryInMb() != other.hasMaxMemoryInMb()) return false;
    6239  if (hasMaxMemoryInMb()) {
    6240  if (getMaxMemoryInMb()
    6241  != other.getMaxMemoryInMb()) return false;
    6242  }
    6243  if (hasTreatBinaryClausesSeparately() != other.hasTreatBinaryClausesSeparately()) return false;
    6246  != other.getTreatBinaryClausesSeparately()) return false;
    6247  }
    6248  if (hasRandomSeed() != other.hasRandomSeed()) return false;
    6249  if (hasRandomSeed()) {
    6250  if (getRandomSeed()
    6251  != other.getRandomSeed()) return false;
    6252  }
    6253  if (hasLogSearchProgress() != other.hasLogSearchProgress()) return false;
    6254  if (hasLogSearchProgress()) {
    6255  if (getLogSearchProgress()
    6256  != other.getLogSearchProgress()) return false;
    6257  }
    6258  if (hasUsePbResolution() != other.hasUsePbResolution()) return false;
    6259  if (hasUsePbResolution()) {
    6260  if (getUsePbResolution()
    6261  != other.getUsePbResolution()) return false;
    6262  }
    6263  if (hasMinimizeReductionDuringPbResolution() != other.hasMinimizeReductionDuringPbResolution()) return false;
    6266  != other.getMinimizeReductionDuringPbResolution()) return false;
    6267  }
    6268  if (hasCountAssumptionLevelsInLbd() != other.hasCountAssumptionLevelsInLbd()) return false;
    6271  != other.getCountAssumptionLevelsInLbd()) return false;
    6272  }
    6273  if (hasPresolveBveThreshold() != other.hasPresolveBveThreshold()) return false;
    6274  if (hasPresolveBveThreshold()) {
    6276  != other.getPresolveBveThreshold()) return false;
    6277  }
    6278  if (hasPresolveBveClauseWeight() != other.hasPresolveBveClauseWeight()) return false;
    6281  != other.getPresolveBveClauseWeight()) return false;
    6282  }
    6283  if (hasPresolveProbingDeterministicTimeLimit() != other.hasPresolveProbingDeterministicTimeLimit()) return false;
    6285  if (java.lang.Double.doubleToLongBits(getPresolveProbingDeterministicTimeLimit())
    6286  != java.lang.Double.doubleToLongBits(
    6287  other.getPresolveProbingDeterministicTimeLimit())) return false;
    6288  }
    6289  if (hasPresolveBlockedClause() != other.hasPresolveBlockedClause()) return false;
    6290  if (hasPresolveBlockedClause()) {
    6292  != other.getPresolveBlockedClause()) return false;
    6293  }
    6294  if (hasPresolveUseBva() != other.hasPresolveUseBva()) return false;
    6295  if (hasPresolveUseBva()) {
    6296  if (getPresolveUseBva()
    6297  != other.getPresolveUseBva()) return false;
    6298  }
    6299  if (hasPresolveBvaThreshold() != other.hasPresolveBvaThreshold()) return false;
    6300  if (hasPresolveBvaThreshold()) {
    6302  != other.getPresolveBvaThreshold()) return false;
    6303  }
    6304  if (hasUseOptimizationHints() != other.hasUseOptimizationHints()) return false;
    6305  if (hasUseOptimizationHints()) {
    6307  != other.getUseOptimizationHints()) return false;
    6308  }
    6309  if (hasMinimizeCore() != other.hasMinimizeCore()) return false;
    6310  if (hasMinimizeCore()) {
    6311  if (getMinimizeCore()
    6312  != other.getMinimizeCore()) return false;
    6313  }
    6314  if (hasFindMultipleCores() != other.hasFindMultipleCores()) return false;
    6315  if (hasFindMultipleCores()) {
    6316  if (getFindMultipleCores()
    6317  != other.getFindMultipleCores()) return false;
    6318  }
    6319  if (hasCoverOptimization() != other.hasCoverOptimization()) return false;
    6320  if (hasCoverOptimization()) {
    6321  if (getCoverOptimization()
    6322  != other.getCoverOptimization()) return false;
    6323  }
    6324  if (hasMaxSatAssumptionOrder() != other.hasMaxSatAssumptionOrder()) return false;
    6325  if (hasMaxSatAssumptionOrder()) {
    6326  if (maxSatAssumptionOrder_ != other.maxSatAssumptionOrder_) return false;
    6327  }
    6328  if (hasMaxSatReverseAssumptionOrder() != other.hasMaxSatReverseAssumptionOrder()) return false;
    6331  != other.getMaxSatReverseAssumptionOrder()) return false;
    6332  }
    6333  if (hasMaxSatStratification() != other.hasMaxSatStratification()) return false;
    6334  if (hasMaxSatStratification()) {
    6335  if (maxSatStratification_ != other.maxSatStratification_) return false;
    6336  }
    6337  if (hasUsePrecedencesInDisjunctiveConstraint() != other.hasUsePrecedencesInDisjunctiveConstraint()) return false;
    6340  != other.getUsePrecedencesInDisjunctiveConstraint()) return false;
    6341  }
    6342  if (hasUseOverloadCheckerInCumulativeConstraint() != other.hasUseOverloadCheckerInCumulativeConstraint()) return false;
    6345  != other.getUseOverloadCheckerInCumulativeConstraint()) return false;
    6346  }
    6347  if (hasUseTimetableEdgeFindingInCumulativeConstraint() != other.hasUseTimetableEdgeFindingInCumulativeConstraint()) return false;
    6350  != other.getUseTimetableEdgeFindingInCumulativeConstraint()) return false;
    6351  }
    6352  if (hasUseDisjunctiveConstraintInCumulativeConstraint() != other.hasUseDisjunctiveConstraintInCumulativeConstraint()) return false;
    6355  != other.getUseDisjunctiveConstraintInCumulativeConstraint()) return false;
    6356  }
    6357  if (hasLinearizationLevel() != other.hasLinearizationLevel()) return false;
    6358  if (hasLinearizationLevel()) {
    6359  if (getLinearizationLevel()
    6360  != other.getLinearizationLevel()) return false;
    6361  }
    6362  if (hasBooleanEncodingLevel() != other.hasBooleanEncodingLevel()) return false;
    6363  if (hasBooleanEncodingLevel()) {
    6365  != other.getBooleanEncodingLevel()) return false;
    6366  }
    6367  if (hasMaxNumCuts() != other.hasMaxNumCuts()) return false;
    6368  if (hasMaxNumCuts()) {
    6369  if (getMaxNumCuts()
    6370  != other.getMaxNumCuts()) return false;
    6371  }
    6372  if (hasOnlyAddCutsAtLevelZero() != other.hasOnlyAddCutsAtLevelZero()) return false;
    6373  if (hasOnlyAddCutsAtLevelZero()) {
    6375  != other.getOnlyAddCutsAtLevelZero()) return false;
    6376  }
    6377  if (hasAddKnapsackCuts() != other.hasAddKnapsackCuts()) return false;
    6378  if (hasAddKnapsackCuts()) {
    6379  if (getAddKnapsackCuts()
    6380  != other.getAddKnapsackCuts()) return false;
    6381  }
    6382  if (hasAddCgCuts() != other.hasAddCgCuts()) return false;
    6383  if (hasAddCgCuts()) {
    6384  if (getAddCgCuts()
    6385  != other.getAddCgCuts()) return false;
    6386  }
    6387  if (hasAddMirCuts() != other.hasAddMirCuts()) return false;
    6388  if (hasAddMirCuts()) {
    6389  if (getAddMirCuts()
    6390  != other.getAddMirCuts()) return false;
    6391  }
    6392  if (hasUseMirRounding() != other.hasUseMirRounding()) return false;
    6393  if (hasUseMirRounding()) {
    6394  if (getUseMirRounding()
    6395  != other.getUseMirRounding()) return false;
    6396  }
    6397  if (hasMaxIntegerRoundingScaling() != other.hasMaxIntegerRoundingScaling()) return false;
    6400  != other.getMaxIntegerRoundingScaling()) return false;
    6401  }
    6402  if (hasAddLpConstraintsLazily() != other.hasAddLpConstraintsLazily()) return false;
    6403  if (hasAddLpConstraintsLazily()) {
    6405  != other.getAddLpConstraintsLazily()) return false;
    6406  }
    6407  if (hasMinOrthogonalityForLpConstraints() != other.hasMinOrthogonalityForLpConstraints()) return false;
    6409  if (java.lang.Double.doubleToLongBits(getMinOrthogonalityForLpConstraints())
    6410  != java.lang.Double.doubleToLongBits(
    6411  other.getMinOrthogonalityForLpConstraints())) return false;
    6412  }
    6413  if (hasMaxInactiveCount() != other.hasMaxInactiveCount()) return false;
    6414  if (hasMaxInactiveCount()) {
    6415  if (getMaxInactiveCount()
    6416  != other.getMaxInactiveCount()) return false;
    6417  }
    6418  if (hasConstraintRemovalBatchSize() != other.hasConstraintRemovalBatchSize()) return false;
    6421  != other.getConstraintRemovalBatchSize()) return false;
    6422  }
    6423  if (hasSearchBranching() != other.hasSearchBranching()) return false;
    6424  if (hasSearchBranching()) {
    6425  if (searchBranching_ != other.searchBranching_) return false;
    6426  }
    6427  if (hasExploitIntegerLpSolution() != other.hasExploitIntegerLpSolution()) return false;
    6430  != other.getExploitIntegerLpSolution()) return false;
    6431  }
    6432  if (hasExploitAllLpSolution() != other.hasExploitAllLpSolution()) return false;
    6433  if (hasExploitAllLpSolution()) {
    6435  != other.getExploitAllLpSolution()) return false;
    6436  }
    6437  if (hasExploitBestSolution() != other.hasExploitBestSolution()) return false;
    6438  if (hasExploitBestSolution()) {
    6440  != other.getExploitBestSolution()) return false;
    6441  }
    6442  if (hasExploitObjective() != other.hasExploitObjective()) return false;
    6443  if (hasExploitObjective()) {
    6444  if (getExploitObjective()
    6445  != other.getExploitObjective()) return false;
    6446  }
    6447  if (hasPseudoCostReliabilityThreshold() != other.hasPseudoCostReliabilityThreshold()) return false;
    6450  != other.getPseudoCostReliabilityThreshold()) return false;
    6451  }
    6452  if (hasOptimizeWithCore() != other.hasOptimizeWithCore()) return false;
    6453  if (hasOptimizeWithCore()) {
    6454  if (getOptimizeWithCore()
    6455  != other.getOptimizeWithCore()) return false;
    6456  }
    6457  if (hasBinarySearchNumConflicts() != other.hasBinarySearchNumConflicts()) return false;
    6460  != other.getBinarySearchNumConflicts()) return false;
    6461  }
    6462  if (hasOptimizeWithMaxHs() != other.hasOptimizeWithMaxHs()) return false;
    6463  if (hasOptimizeWithMaxHs()) {
    6464  if (getOptimizeWithMaxHs()
    6465  != other.getOptimizeWithMaxHs()) return false;
    6466  }
    6467  if (hasCpModelPresolve() != other.hasCpModelPresolve()) return false;
    6468  if (hasCpModelPresolve()) {
    6469  if (getCpModelPresolve()
    6470  != other.getCpModelPresolve()) return false;
    6471  }
    6472  if (hasCpModelProbingLevel() != other.hasCpModelProbingLevel()) return false;
    6473  if (hasCpModelProbingLevel()) {
    6475  != other.getCpModelProbingLevel()) return false;
    6476  }
    6477  if (hasCpModelUseSatPresolve() != other.hasCpModelUseSatPresolve()) return false;
    6478  if (hasCpModelUseSatPresolve()) {
    6480  != other.getCpModelUseSatPresolve()) return false;
    6481  }
    6482  if (hasEnumerateAllSolutions() != other.hasEnumerateAllSolutions()) return false;
    6483  if (hasEnumerateAllSolutions()) {
    6485  != other.getEnumerateAllSolutions()) return false;
    6486  }
    6487  if (hasFillTightenedDomainsInResponse() != other.hasFillTightenedDomainsInResponse()) return false;
    6490  != other.getFillTightenedDomainsInResponse()) return false;
    6491  }
    6492  if (hasInstantiateAllVariables() != other.hasInstantiateAllVariables()) return false;
    6495  != other.getInstantiateAllVariables()) return false;
    6496  }
    6497  if (hasAutoDetectGreaterThanAtLeastOneOf() != other.hasAutoDetectGreaterThanAtLeastOneOf()) return false;
    6500  != other.getAutoDetectGreaterThanAtLeastOneOf()) return false;
    6501  }
    6502  if (hasStopAfterFirstSolution() != other.hasStopAfterFirstSolution()) return false;
    6503  if (hasStopAfterFirstSolution()) {
    6505  != other.getStopAfterFirstSolution()) return false;
    6506  }
    6507  if (hasNumSearchWorkers() != other.hasNumSearchWorkers()) return false;
    6508  if (hasNumSearchWorkers()) {
    6509  if (getNumSearchWorkers()
    6510  != other.getNumSearchWorkers()) return false;
    6511  }
    6512  if (hasInterleaveSearch() != other.hasInterleaveSearch()) return false;
    6513  if (hasInterleaveSearch()) {
    6514  if (getInterleaveSearch()
    6515  != other.getInterleaveSearch()) return false;
    6516  }
    6517  if (hasDeterministicParallelSearch() != other.hasDeterministicParallelSearch()) return false;
    6520  != other.getDeterministicParallelSearch()) return false;
    6521  }
    6522  if (hasShareObjectiveBounds() != other.hasShareObjectiveBounds()) return false;
    6523  if (hasShareObjectiveBounds()) {
    6525  != other.getShareObjectiveBounds()) return false;
    6526  }
    6527  if (hasShareLevelZeroBounds() != other.hasShareLevelZeroBounds()) return false;
    6528  if (hasShareLevelZeroBounds()) {
    6530  != other.getShareLevelZeroBounds()) return false;
    6531  }
    6532  if (hasUseLnsOnly() != other.hasUseLnsOnly()) return false;
    6533  if (hasUseLnsOnly()) {
    6534  if (getUseLnsOnly()
    6535  != other.getUseLnsOnly()) return false;
    6536  }
    6537  if (hasLnsFocusOnDecisionVariables() != other.hasLnsFocusOnDecisionVariables()) return false;
    6540  != other.getLnsFocusOnDecisionVariables()) return false;
    6541  }
    6542  if (hasUseRinsLns() != other.hasUseRinsLns()) return false;
    6543  if (hasUseRinsLns()) {
    6544  if (getUseRinsLns()
    6545  != other.getUseRinsLns()) return false;
    6546  }
    6547  if (hasRandomizeSearch() != other.hasRandomizeSearch()) return false;
    6548  if (hasRandomizeSearch()) {
    6549  if (getRandomizeSearch()
    6550  != other.getRandomizeSearch()) return false;
    6551  }
    6552  if (hasSearchRandomizationTolerance() != other.hasSearchRandomizationTolerance()) return false;
    6555  != other.getSearchRandomizationTolerance()) return false;
    6556  }
    6557  if (hasUseOptionalVariables() != other.hasUseOptionalVariables()) return false;
    6558  if (hasUseOptionalVariables()) {
    6560  != other.getUseOptionalVariables()) return false;
    6561  }
    6562  if (hasUseExactLpReason() != other.hasUseExactLpReason()) return false;
    6563  if (hasUseExactLpReason()) {
    6564  if (getUseExactLpReason()
    6565  != other.getUseExactLpReason()) return false;
    6566  }
    6567  if (hasUseCombinedNoOverlap() != other.hasUseCombinedNoOverlap()) return false;
    6568  if (hasUseCombinedNoOverlap()) {
    6570  != other.getUseCombinedNoOverlap()) return false;
    6571  }
    6572  if (hasMipMaxBound() != other.hasMipMaxBound()) return false;
    6573  if (hasMipMaxBound()) {
    6574  if (java.lang.Double.doubleToLongBits(getMipMaxBound())
    6575  != java.lang.Double.doubleToLongBits(
    6576  other.getMipMaxBound())) return false;
    6577  }
    6578  if (hasMipVarScaling() != other.hasMipVarScaling()) return false;
    6579  if (hasMipVarScaling()) {
    6580  if (java.lang.Double.doubleToLongBits(getMipVarScaling())
    6581  != java.lang.Double.doubleToLongBits(
    6582  other.getMipVarScaling())) return false;
    6583  }
    6584  if (hasMipWantedPrecision() != other.hasMipWantedPrecision()) return false;
    6585  if (hasMipWantedPrecision()) {
    6586  if (java.lang.Double.doubleToLongBits(getMipWantedPrecision())
    6587  != java.lang.Double.doubleToLongBits(
    6588  other.getMipWantedPrecision())) return false;
    6589  }
    6590  if (hasMipMaxActivityExponent() != other.hasMipMaxActivityExponent()) return false;
    6591  if (hasMipMaxActivityExponent()) {
    6593  != other.getMipMaxActivityExponent()) return false;
    6594  }
    6595  if (hasMipCheckPrecision() != other.hasMipCheckPrecision()) return false;
    6596  if (hasMipCheckPrecision()) {
    6597  if (java.lang.Double.doubleToLongBits(getMipCheckPrecision())
    6598  != java.lang.Double.doubleToLongBits(
    6599  other.getMipCheckPrecision())) return false;
    6600  }
    6601  if (hasCatchSigintSignal() != other.hasCatchSigintSignal()) return false;
    6602  if (hasCatchSigintSignal()) {
    6603  if (getCatchSigintSignal()
    6604  != other.getCatchSigintSignal()) return false;
    6605  }
    6606  if (!unknownFields.equals(other.unknownFields)) return false;
    6607  return true;
    6608  }
    6609 
    6610  @java.lang.Override
    6611  public int hashCode() {
    6612  if (memoizedHashCode != 0) {
    6613  return memoizedHashCode;
    6614  }
    6615  int hash = 41;
    6616  hash = (19 * hash) + getDescriptor().hashCode();
    6617  if (hasPreferredVariableOrder()) {
    6618  hash = (37 * hash) + PREFERRED_VARIABLE_ORDER_FIELD_NUMBER;
    6619  hash = (53 * hash) + preferredVariableOrder_;
    6620  }
    6621  if (hasInitialPolarity()) {
    6622  hash = (37 * hash) + INITIAL_POLARITY_FIELD_NUMBER;
    6623  hash = (53 * hash) + initialPolarity_;
    6624  }
    6625  if (hasUsePhaseSaving()) {
    6626  hash = (37 * hash) + USE_PHASE_SAVING_FIELD_NUMBER;
    6627  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6628  getUsePhaseSaving());
    6629  }
    6630  if (hasRandomPolarityRatio()) {
    6631  hash = (37 * hash) + RANDOM_POLARITY_RATIO_FIELD_NUMBER;
    6632  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6633  java.lang.Double.doubleToLongBits(getRandomPolarityRatio()));
    6634  }
    6635  if (hasRandomBranchesRatio()) {
    6636  hash = (37 * hash) + RANDOM_BRANCHES_RATIO_FIELD_NUMBER;
    6637  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6638  java.lang.Double.doubleToLongBits(getRandomBranchesRatio()));
    6639  }
    6640  if (hasUseErwaHeuristic()) {
    6641  hash = (37 * hash) + USE_ERWA_HEURISTIC_FIELD_NUMBER;
    6642  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6644  }
    6646  hash = (37 * hash) + INITIAL_VARIABLES_ACTIVITY_FIELD_NUMBER;
    6647  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6648  java.lang.Double.doubleToLongBits(getInitialVariablesActivity()));
    6649  }
    6652  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6654  }
    6655  if (hasMinimizationAlgorithm()) {
    6656  hash = (37 * hash) + MINIMIZATION_ALGORITHM_FIELD_NUMBER;
    6657  hash = (53 * hash) + minimizationAlgorithm_;
    6658  }
    6660  hash = (37 * hash) + BINARY_MINIMIZATION_ALGORITHM_FIELD_NUMBER;
    6661  hash = (53 * hash) + binaryMinimizationAlgorithm_;
    6662  }
    6665  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6667  }
    6668  if (hasClauseCleanupPeriod()) {
    6669  hash = (37 * hash) + CLAUSE_CLEANUP_PERIOD_FIELD_NUMBER;
    6670  hash = (53 * hash) + getClauseCleanupPeriod();
    6671  }
    6672  if (hasClauseCleanupTarget()) {
    6673  hash = (37 * hash) + CLAUSE_CLEANUP_TARGET_FIELD_NUMBER;
    6674  hash = (53 * hash) + getClauseCleanupTarget();
    6675  }
    6677  hash = (37 * hash) + CLAUSE_CLEANUP_PROTECTION_FIELD_NUMBER;
    6678  hash = (53 * hash) + clauseCleanupProtection_;
    6679  }
    6680  if (hasClauseCleanupLbdBound()) {
    6681  hash = (37 * hash) + CLAUSE_CLEANUP_LBD_BOUND_FIELD_NUMBER;
    6682  hash = (53 * hash) + getClauseCleanupLbdBound();
    6683  }
    6684  if (hasClauseCleanupOrdering()) {
    6685  hash = (37 * hash) + CLAUSE_CLEANUP_ORDERING_FIELD_NUMBER;
    6686  hash = (53 * hash) + clauseCleanupOrdering_;
    6687  }
    6688  if (hasPbCleanupIncrement()) {
    6689  hash = (37 * hash) + PB_CLEANUP_INCREMENT_FIELD_NUMBER;
    6690  hash = (53 * hash) + getPbCleanupIncrement();
    6691  }
    6692  if (hasPbCleanupRatio()) {
    6693  hash = (37 * hash) + PB_CLEANUP_RATIO_FIELD_NUMBER;
    6694  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6695  java.lang.Double.doubleToLongBits(getPbCleanupRatio()));
    6696  }
    6699  hash = (53 * hash) + getMinimizeWithPropagationRestartPeriod();
    6700  }
    6703  hash = (53 * hash) + getMinimizeWithPropagationNumDecisions();
    6704  }
    6705  if (hasVariableActivityDecay()) {
    6706  hash = (37 * hash) + VARIABLE_ACTIVITY_DECAY_FIELD_NUMBER;
    6707  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6708  java.lang.Double.doubleToLongBits(getVariableActivityDecay()));
    6709  }
    6711  hash = (37 * hash) + MAX_VARIABLE_ACTIVITY_VALUE_FIELD_NUMBER;
    6712  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6713  java.lang.Double.doubleToLongBits(getMaxVariableActivityValue()));
    6714  }
    6715  if (hasGlucoseMaxDecay()) {
    6716  hash = (37 * hash) + GLUCOSE_MAX_DECAY_FIELD_NUMBER;
    6717  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6718  java.lang.Double.doubleToLongBits(getGlucoseMaxDecay()));
    6719  }
    6720  if (hasGlucoseDecayIncrement()) {
    6721  hash = (37 * hash) + GLUCOSE_DECAY_INCREMENT_FIELD_NUMBER;
    6722  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6723  java.lang.Double.doubleToLongBits(getGlucoseDecayIncrement()));
    6724  }
    6726  hash = (37 * hash) + GLUCOSE_DECAY_INCREMENT_PERIOD_FIELD_NUMBER;
    6727  hash = (53 * hash) + getGlucoseDecayIncrementPeriod();
    6728  }
    6729  if (hasClauseActivityDecay()) {
    6730  hash = (37 * hash) + CLAUSE_ACTIVITY_DECAY_FIELD_NUMBER;
    6731  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6732  java.lang.Double.doubleToLongBits(getClauseActivityDecay()));
    6733  }
    6734  if (hasMaxClauseActivityValue()) {
    6735  hash = (37 * hash) + MAX_CLAUSE_ACTIVITY_VALUE_FIELD_NUMBER;
    6736  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6737  java.lang.Double.doubleToLongBits(getMaxClauseActivityValue()));
    6738  }
    6739  if (getRestartAlgorithmsCount() > 0) {
    6740  hash = (37 * hash) + RESTART_ALGORITHMS_FIELD_NUMBER;
    6741  hash = (53 * hash) + restartAlgorithms_.hashCode();
    6742  }
    6744  hash = (37 * hash) + DEFAULT_RESTART_ALGORITHMS_FIELD_NUMBER;
    6745  hash = (53 * hash) + getDefaultRestartAlgorithms().hashCode();
    6746  }
    6747  if (hasRestartPeriod()) {
    6748  hash = (37 * hash) + RESTART_PERIOD_FIELD_NUMBER;
    6749  hash = (53 * hash) + getRestartPeriod();
    6750  }
    6752  hash = (37 * hash) + RESTART_RUNNING_WINDOW_SIZE_FIELD_NUMBER;
    6753  hash = (53 * hash) + getRestartRunningWindowSize();
    6754  }
    6755  if (hasRestartDlAverageRatio()) {
    6756  hash = (37 * hash) + RESTART_DL_AVERAGE_RATIO_FIELD_NUMBER;
    6757  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6758  java.lang.Double.doubleToLongBits(getRestartDlAverageRatio()));
    6759  }
    6760  if (hasRestartLbdAverageRatio()) {
    6761  hash = (37 * hash) + RESTART_LBD_AVERAGE_RATIO_FIELD_NUMBER;
    6762  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6763  java.lang.Double.doubleToLongBits(getRestartLbdAverageRatio()));
    6764  }
    6765  if (hasUseBlockingRestart()) {
    6766  hash = (37 * hash) + USE_BLOCKING_RESTART_FIELD_NUMBER;
    6767  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6769  }
    6771  hash = (37 * hash) + BLOCKING_RESTART_WINDOW_SIZE_FIELD_NUMBER;
    6772  hash = (53 * hash) + getBlockingRestartWindowSize();
    6773  }
    6775  hash = (37 * hash) + BLOCKING_RESTART_MULTIPLIER_FIELD_NUMBER;
    6776  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6777  java.lang.Double.doubleToLongBits(getBlockingRestartMultiplier()));
    6778  }
    6781  hash = (53 * hash) + getNumConflictsBeforeStrategyChanges();
    6782  }
    6784  hash = (37 * hash) + STRATEGY_CHANGE_INCREASE_RATIO_FIELD_NUMBER;
    6785  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6786  java.lang.Double.doubleToLongBits(getStrategyChangeIncreaseRatio()));
    6787  }
    6788  if (hasMaxTimeInSeconds()) {
    6789  hash = (37 * hash) + MAX_TIME_IN_SECONDS_FIELD_NUMBER;
    6790  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6791  java.lang.Double.doubleToLongBits(getMaxTimeInSeconds()));
    6792  }
    6793  if (hasMaxDeterministicTime()) {
    6794  hash = (37 * hash) + MAX_DETERMINISTIC_TIME_FIELD_NUMBER;
    6795  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6796  java.lang.Double.doubleToLongBits(getMaxDeterministicTime()));
    6797  }
    6798  if (hasMaxNumberOfConflicts()) {
    6799  hash = (37 * hash) + MAX_NUMBER_OF_CONFLICTS_FIELD_NUMBER;
    6800  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6802  }
    6803  if (hasMaxMemoryInMb()) {
    6804  hash = (37 * hash) + MAX_MEMORY_IN_MB_FIELD_NUMBER;
    6805  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6806  getMaxMemoryInMb());
    6807  }
    6809  hash = (37 * hash) + TREAT_BINARY_CLAUSES_SEPARATELY_FIELD_NUMBER;
    6810  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6812  }
    6813  if (hasRandomSeed()) {
    6814  hash = (37 * hash) + RANDOM_SEED_FIELD_NUMBER;
    6815  hash = (53 * hash) + getRandomSeed();
    6816  }
    6817  if (hasLogSearchProgress()) {
    6818  hash = (37 * hash) + LOG_SEARCH_PROGRESS_FIELD_NUMBER;
    6819  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6821  }
    6822  if (hasUsePbResolution()) {
    6823  hash = (37 * hash) + USE_PB_RESOLUTION_FIELD_NUMBER;
    6824  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6825  getUsePbResolution());
    6826  }
    6829  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6831  }
    6833  hash = (37 * hash) + COUNT_ASSUMPTION_LEVELS_IN_LBD_FIELD_NUMBER;
    6834  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6836  }
    6837  if (hasPresolveBveThreshold()) {
    6838  hash = (37 * hash) + PRESOLVE_BVE_THRESHOLD_FIELD_NUMBER;
    6839  hash = (53 * hash) + getPresolveBveThreshold();
    6840  }
    6842  hash = (37 * hash) + PRESOLVE_BVE_CLAUSE_WEIGHT_FIELD_NUMBER;
    6843  hash = (53 * hash) + getPresolveBveClauseWeight();
    6844  }
    6847  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6848  java.lang.Double.doubleToLongBits(getPresolveProbingDeterministicTimeLimit()));
    6849  }
    6850  if (hasPresolveBlockedClause()) {
    6851  hash = (37 * hash) + PRESOLVE_BLOCKED_CLAUSE_FIELD_NUMBER;
    6852  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6854  }
    6855  if (hasPresolveUseBva()) {
    6856  hash = (37 * hash) + PRESOLVE_USE_BVA_FIELD_NUMBER;
    6857  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6858  getPresolveUseBva());
    6859  }
    6860  if (hasPresolveBvaThreshold()) {
    6861  hash = (37 * hash) + PRESOLVE_BVA_THRESHOLD_FIELD_NUMBER;
    6862  hash = (53 * hash) + getPresolveBvaThreshold();
    6863  }
    6864  if (hasUseOptimizationHints()) {
    6865  hash = (37 * hash) + USE_OPTIMIZATION_HINTS_FIELD_NUMBER;
    6866  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6868  }
    6869  if (hasMinimizeCore()) {
    6870  hash = (37 * hash) + MINIMIZE_CORE_FIELD_NUMBER;
    6871  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6872  getMinimizeCore());
    6873  }
    6874  if (hasFindMultipleCores()) {
    6875  hash = (37 * hash) + FIND_MULTIPLE_CORES_FIELD_NUMBER;
    6876  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6878  }
    6879  if (hasCoverOptimization()) {
    6880  hash = (37 * hash) + COVER_OPTIMIZATION_FIELD_NUMBER;
    6881  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6883  }
    6884  if (hasMaxSatAssumptionOrder()) {
    6885  hash = (37 * hash) + MAX_SAT_ASSUMPTION_ORDER_FIELD_NUMBER;
    6886  hash = (53 * hash) + maxSatAssumptionOrder_;
    6887  }
    6889  hash = (37 * hash) + MAX_SAT_REVERSE_ASSUMPTION_ORDER_FIELD_NUMBER;
    6890  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6892  }
    6893  if (hasMaxSatStratification()) {
    6894  hash = (37 * hash) + MAX_SAT_STRATIFICATION_FIELD_NUMBER;
    6895  hash = (53 * hash) + maxSatStratification_;
    6896  }
    6899  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6901  }
    6904  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6906  }
    6909  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6911  }
    6914  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6916  }
    6917  if (hasLinearizationLevel()) {
    6918  hash = (37 * hash) + LINEARIZATION_LEVEL_FIELD_NUMBER;
    6919  hash = (53 * hash) + getLinearizationLevel();
    6920  }
    6921  if (hasBooleanEncodingLevel()) {
    6922  hash = (37 * hash) + BOOLEAN_ENCODING_LEVEL_FIELD_NUMBER;
    6923  hash = (53 * hash) + getBooleanEncodingLevel();
    6924  }
    6925  if (hasMaxNumCuts()) {
    6926  hash = (37 * hash) + MAX_NUM_CUTS_FIELD_NUMBER;
    6927  hash = (53 * hash) + getMaxNumCuts();
    6928  }
    6929  if (hasOnlyAddCutsAtLevelZero()) {
    6930  hash = (37 * hash) + ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER;
    6931  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6933  }
    6934  if (hasAddKnapsackCuts()) {
    6935  hash = (37 * hash) + ADD_KNAPSACK_CUTS_FIELD_NUMBER;
    6936  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6937  getAddKnapsackCuts());
    6938  }
    6939  if (hasAddCgCuts()) {
    6940  hash = (37 * hash) + ADD_CG_CUTS_FIELD_NUMBER;
    6941  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6942  getAddCgCuts());
    6943  }
    6944  if (hasAddMirCuts()) {
    6945  hash = (37 * hash) + ADD_MIR_CUTS_FIELD_NUMBER;
    6946  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6947  getAddMirCuts());
    6948  }
    6949  if (hasUseMirRounding()) {
    6950  hash = (37 * hash) + USE_MIR_ROUNDING_FIELD_NUMBER;
    6951  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6952  getUseMirRounding());
    6953  }
    6955  hash = (37 * hash) + MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER;
    6956  hash = (53 * hash) + getMaxIntegerRoundingScaling();
    6957  }
    6958  if (hasAddLpConstraintsLazily()) {
    6959  hash = (37 * hash) + ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER;
    6960  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6962  }
    6965  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6966  java.lang.Double.doubleToLongBits(getMinOrthogonalityForLpConstraints()));
    6967  }
    6968  if (hasMaxInactiveCount()) {
    6969  hash = (37 * hash) + MAX_INACTIVE_COUNT_FIELD_NUMBER;
    6970  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6972  }
    6974  hash = (37 * hash) + CONSTRAINT_REMOVAL_BATCH_SIZE_FIELD_NUMBER;
    6975  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6977  }
    6978  if (hasSearchBranching()) {
    6979  hash = (37 * hash) + SEARCH_BRANCHING_FIELD_NUMBER;
    6980  hash = (53 * hash) + searchBranching_;
    6981  }
    6983  hash = (37 * hash) + EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER;
    6984  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6986  }
    6987  if (hasExploitAllLpSolution()) {
    6988  hash = (37 * hash) + EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER;
    6989  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6991  }
    6992  if (hasExploitBestSolution()) {
    6993  hash = (37 * hash) + EXPLOIT_BEST_SOLUTION_FIELD_NUMBER;
    6994  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6996  }
    6997  if (hasExploitObjective()) {
    6998  hash = (37 * hash) + EXPLOIT_OBJECTIVE_FIELD_NUMBER;
    6999  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7001  }
    7004  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7006  }
    7007  if (hasOptimizeWithCore()) {
    7008  hash = (37 * hash) + OPTIMIZE_WITH_CORE_FIELD_NUMBER;
    7009  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7011  }
    7013  hash = (37 * hash) + BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER;
    7014  hash = (53 * hash) + getBinarySearchNumConflicts();
    7015  }
    7016  if (hasOptimizeWithMaxHs()) {
    7017  hash = (37 * hash) + OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER;
    7018  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7020  }
    7021  if (hasCpModelPresolve()) {
    7022  hash = (37 * hash) + CP_MODEL_PRESOLVE_FIELD_NUMBER;
    7023  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7024  getCpModelPresolve());
    7025  }
    7026  if (hasCpModelProbingLevel()) {
    7027  hash = (37 * hash) + CP_MODEL_PROBING_LEVEL_FIELD_NUMBER;
    7028  hash = (53 * hash) + getCpModelProbingLevel();
    7029  }
    7030  if (hasCpModelUseSatPresolve()) {
    7031  hash = (37 * hash) + CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER;
    7032  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7034  }
    7035  if (hasEnumerateAllSolutions()) {
    7036  hash = (37 * hash) + ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER;
    7037  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7039  }
    7042  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7044  }
    7046  hash = (37 * hash) + INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER;
    7047  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7049  }
    7052  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7054  }
    7055  if (hasStopAfterFirstSolution()) {
    7056  hash = (37 * hash) + STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER;
    7057  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7059  }
    7060  if (hasNumSearchWorkers()) {
    7061  hash = (37 * hash) + NUM_SEARCH_WORKERS_FIELD_NUMBER;
    7062  hash = (53 * hash) + getNumSearchWorkers();
    7063  }
    7064  if (hasInterleaveSearch()) {
    7065  hash = (37 * hash) + INTERLEAVE_SEARCH_FIELD_NUMBER;
    7066  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7068  }
    7070  hash = (37 * hash) + DETERMINISTIC_PARALLEL_SEARCH_FIELD_NUMBER;
    7071  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7073  }
    7074  if (hasShareObjectiveBounds()) {
    7075  hash = (37 * hash) + SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER;
    7076  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7078  }
    7079  if (hasShareLevelZeroBounds()) {
    7080  hash = (37 * hash) + SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER;
    7081  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7083  }
    7084  if (hasUseLnsOnly()) {
    7085  hash = (37 * hash) + USE_LNS_ONLY_FIELD_NUMBER;
    7086  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7087  getUseLnsOnly());
    7088  }
    7090  hash = (37 * hash) + LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER;
    7091  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7093  }
    7094  if (hasUseRinsLns()) {
    7095  hash = (37 * hash) + USE_RINS_LNS_FIELD_NUMBER;
    7096  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7097  getUseRinsLns());
    7098  }
    7099  if (hasRandomizeSearch()) {
    7100  hash = (37 * hash) + RANDOMIZE_SEARCH_FIELD_NUMBER;
    7101  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7102  getRandomizeSearch());
    7103  }
    7105  hash = (37 * hash) + SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER;
    7106  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7108  }
    7109  if (hasUseOptionalVariables()) {
    7110  hash = (37 * hash) + USE_OPTIONAL_VARIABLES_FIELD_NUMBER;
    7111  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7113  }
    7114  if (hasUseExactLpReason()) {
    7115  hash = (37 * hash) + USE_EXACT_LP_REASON_FIELD_NUMBER;
    7116  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7118  }
    7119  if (hasUseCombinedNoOverlap()) {
    7120  hash = (37 * hash) + USE_COMBINED_NO_OVERLAP_FIELD_NUMBER;
    7121  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7123  }
    7124  if (hasMipMaxBound()) {
    7125  hash = (37 * hash) + MIP_MAX_BOUND_FIELD_NUMBER;
    7126  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7127  java.lang.Double.doubleToLongBits(getMipMaxBound()));
    7128  }
    7129  if (hasMipVarScaling()) {
    7130  hash = (37 * hash) + MIP_VAR_SCALING_FIELD_NUMBER;
    7131  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7132  java.lang.Double.doubleToLongBits(getMipVarScaling()));
    7133  }
    7134  if (hasMipWantedPrecision()) {
    7135  hash = (37 * hash) + MIP_WANTED_PRECISION_FIELD_NUMBER;
    7136  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7137  java.lang.Double.doubleToLongBits(getMipWantedPrecision()));
    7138  }
    7139  if (hasMipMaxActivityExponent()) {
    7140  hash = (37 * hash) + MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER;
    7141  hash = (53 * hash) + getMipMaxActivityExponent();
    7142  }
    7143  if (hasMipCheckPrecision()) {
    7144  hash = (37 * hash) + MIP_CHECK_PRECISION_FIELD_NUMBER;
    7145  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7146  java.lang.Double.doubleToLongBits(getMipCheckPrecision()));
    7147  }
    7148  if (hasCatchSigintSignal()) {
    7149  hash = (37 * hash) + CATCH_SIGINT_SIGNAL_FIELD_NUMBER;
    7150  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7152  }
    7153  hash = (29 * hash) + unknownFields.hashCode();
    7154  memoizedHashCode = hash;
    7155  return hash;
    7156  }
    7157 
    7159  java.nio.ByteBuffer data)
    7160  throws com.google.protobuf.InvalidProtocolBufferException {
    7161  return PARSER.parseFrom(data);
    7162  }
    7164  java.nio.ByteBuffer data,
    7165  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7166  throws com.google.protobuf.InvalidProtocolBufferException {
    7167  return PARSER.parseFrom(data, extensionRegistry);
    7168  }
    7170  com.google.protobuf.ByteString data)
    7171  throws com.google.protobuf.InvalidProtocolBufferException {
    7172  return PARSER.parseFrom(data);
    7173  }
    7175  com.google.protobuf.ByteString data,
    7176  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7177  throws com.google.protobuf.InvalidProtocolBufferException {
    7178  return PARSER.parseFrom(data, extensionRegistry);
    7179  }
    7180  public static com.google.ortools.sat.SatParameters parseFrom(byte[] data)
    7181  throws com.google.protobuf.InvalidProtocolBufferException {
    7182  return PARSER.parseFrom(data);
    7183  }
    7185  byte[] data,
    7186  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7187  throws com.google.protobuf.InvalidProtocolBufferException {
    7188  return PARSER.parseFrom(data, extensionRegistry);
    7189  }
    7190  public static com.google.ortools.sat.SatParameters parseFrom(java.io.InputStream input)
    7191  throws java.io.IOException {
    7192  return com.google.protobuf.GeneratedMessageV3
    7193  .parseWithIOException(PARSER, input);
    7194  }
    7196  java.io.InputStream input,
    7197  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7198  throws java.io.IOException {
    7199  return com.google.protobuf.GeneratedMessageV3
    7200  .parseWithIOException(PARSER, input, extensionRegistry);
    7201  }
    7202  public static com.google.ortools.sat.SatParameters parseDelimitedFrom(java.io.InputStream input)
    7203  throws java.io.IOException {
    7204  return com.google.protobuf.GeneratedMessageV3
    7205  .parseDelimitedWithIOException(PARSER, input);
    7206  }
    7208  java.io.InputStream input,
    7209  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7210  throws java.io.IOException {
    7211  return com.google.protobuf.GeneratedMessageV3
    7212  .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    7213  }
    7215  com.google.protobuf.CodedInputStream input)
    7216  throws java.io.IOException {
    7217  return com.google.protobuf.GeneratedMessageV3
    7218  .parseWithIOException(PARSER, input);
    7219  }
    7221  com.google.protobuf.CodedInputStream input,
    7222  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7223  throws java.io.IOException {
    7224  return com.google.protobuf.GeneratedMessageV3
    7225  .parseWithIOException(PARSER, input, extensionRegistry);
    7226  }
    7227 
    7228  @java.lang.Override
    7229  public Builder newBuilderForType() { return newBuilder(); }
    7230  public static Builder newBuilder() {
    7231  return DEFAULT_INSTANCE.toBuilder();
    7232  }
    7233  public static Builder newBuilder(com.google.ortools.sat.SatParameters prototype) {
    7234  return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    7235  }
    7236  @java.lang.Override
    7237  public Builder toBuilder() {
    7238  return this == DEFAULT_INSTANCE
    7239  ? new Builder() : new Builder().mergeFrom(this);
    7240  }
    7241 
    7242  @java.lang.Override
    7244  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    7245  Builder builder = new Builder(parent);
    7246  return builder;
    7247  }
    7257  public static final class Builder extends
    7258  com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
    7259  // @@protoc_insertion_point(builder_implements:operations_research.sat.SatParameters)
    7260  com.google.ortools.sat.SatParametersOrBuilder {
    7261  public static final com.google.protobuf.Descriptors.Descriptor
    7263  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
    7264  }
    7265 
    7266  @java.lang.Override
    7267  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    7269  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_fieldAccessorTable
    7270  .ensureFieldAccessorsInitialized(
    7272  }
    7273 
    7274  // Construct using com.google.ortools.sat.SatParameters.newBuilder()
    7275  private Builder() {
    7276  maybeForceBuilderInitialization();
    7277  }
    7278 
    7279  private Builder(
    7280  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    7281  super(parent);
    7282  maybeForceBuilderInitialization();
    7283  }
    7284  private void maybeForceBuilderInitialization() {
    7285  if (com.google.protobuf.GeneratedMessageV3
    7286  .alwaysUseFieldBuilders) {
    7287  }
    7288  }
    7289  @java.lang.Override
    7290  public Builder clear() {
    7291  super.clear();
    7292  preferredVariableOrder_ = 0;
    7293  bitField0_ = (bitField0_ & ~0x00000001);
    7294  initialPolarity_ = 1;
    7295  bitField0_ = (bitField0_ & ~0x00000002);
    7296  usePhaseSaving_ = true;
    7297  bitField0_ = (bitField0_ & ~0x00000004);
    7298  randomPolarityRatio_ = 0D;
    7299  bitField0_ = (bitField0_ & ~0x00000008);
    7300  randomBranchesRatio_ = 0D;
    7301  bitField0_ = (bitField0_ & ~0x00000010);
    7302  useErwaHeuristic_ = false;
    7303  bitField0_ = (bitField0_ & ~0x00000020);
    7304  initialVariablesActivity_ = 0D;
    7305  bitField0_ = (bitField0_ & ~0x00000040);
    7306  alsoBumpVariablesInConflictReasons_ = false;
    7307  bitField0_ = (bitField0_ & ~0x00000080);
    7308  minimizationAlgorithm_ = 2;
    7309  bitField0_ = (bitField0_ & ~0x00000100);
    7310  binaryMinimizationAlgorithm_ = 1;
    7311  bitField0_ = (bitField0_ & ~0x00000200);
    7312  subsumptionDuringConflictAnalysis_ = true;
    7313  bitField0_ = (bitField0_ & ~0x00000400);
    7314  clauseCleanupPeriod_ = 10000;
    7315  bitField0_ = (bitField0_ & ~0x00000800);
    7316  clauseCleanupTarget_ = 10000;
    7317  bitField0_ = (bitField0_ & ~0x00001000);
    7318  clauseCleanupProtection_ = 0;
    7319  bitField0_ = (bitField0_ & ~0x00002000);
    7320  clauseCleanupLbdBound_ = 5;
    7321  bitField0_ = (bitField0_ & ~0x00004000);
    7322  clauseCleanupOrdering_ = 0;
    7323  bitField0_ = (bitField0_ & ~0x00008000);
    7324  pbCleanupIncrement_ = 200;
    7325  bitField0_ = (bitField0_ & ~0x00010000);
    7326  pbCleanupRatio_ = 0.5D;
    7327  bitField0_ = (bitField0_ & ~0x00020000);
    7328  minimizeWithPropagationRestartPeriod_ = 10;
    7329  bitField0_ = (bitField0_ & ~0x00040000);
    7330  minimizeWithPropagationNumDecisions_ = 1000;
    7331  bitField0_ = (bitField0_ & ~0x00080000);
    7332  variableActivityDecay_ = 0.8D;
    7333  bitField0_ = (bitField0_ & ~0x00100000);
    7334  maxVariableActivityValue_ = 1e+100D;
    7335  bitField0_ = (bitField0_ & ~0x00200000);
    7336  glucoseMaxDecay_ = 0.95D;
    7337  bitField0_ = (bitField0_ & ~0x00400000);
    7338  glucoseDecayIncrement_ = 0.01D;
    7339  bitField0_ = (bitField0_ & ~0x00800000);
    7340  glucoseDecayIncrementPeriod_ = 5000;
    7341  bitField0_ = (bitField0_ & ~0x01000000);
    7342  clauseActivityDecay_ = 0.999D;
    7343  bitField0_ = (bitField0_ & ~0x02000000);
    7344  maxClauseActivityValue_ = 1e+20D;
    7345  bitField0_ = (bitField0_ & ~0x04000000);
    7346  restartAlgorithms_ = java.util.Collections.emptyList();
    7347  bitField0_ = (bitField0_ & ~0x08000000);
    7348  defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
    7349  bitField0_ = (bitField0_ & ~0x10000000);
    7350  restartPeriod_ = 50;
    7351  bitField0_ = (bitField0_ & ~0x20000000);
    7352  restartRunningWindowSize_ = 50;
    7353  bitField0_ = (bitField0_ & ~0x40000000);
    7354  restartDlAverageRatio_ = 1D;
    7355  bitField0_ = (bitField0_ & ~0x80000000);
    7356  restartLbdAverageRatio_ = 1D;
    7357  bitField1_ = (bitField1_ & ~0x00000001);
    7358  useBlockingRestart_ = false;
    7359  bitField1_ = (bitField1_ & ~0x00000002);
    7360  blockingRestartWindowSize_ = 5000;
    7361  bitField1_ = (bitField1_ & ~0x00000004);
    7362  blockingRestartMultiplier_ = 1.4D;
    7363  bitField1_ = (bitField1_ & ~0x00000008);
    7364  numConflictsBeforeStrategyChanges_ = 0;
    7365  bitField1_ = (bitField1_ & ~0x00000010);
    7366  strategyChangeIncreaseRatio_ = 0D;
    7367  bitField1_ = (bitField1_ & ~0x00000020);
    7368  maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    7369  bitField1_ = (bitField1_ & ~0x00000040);
    7370  maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    7371  bitField1_ = (bitField1_ & ~0x00000080);
    7372  maxNumberOfConflicts_ = 9223372036854775807L;
    7373  bitField1_ = (bitField1_ & ~0x00000100);
    7374  maxMemoryInMb_ = 10000L;
    7375  bitField1_ = (bitField1_ & ~0x00000200);
    7376  treatBinaryClausesSeparately_ = true;
    7377  bitField1_ = (bitField1_ & ~0x00000400);
    7378  randomSeed_ = 1;
    7379  bitField1_ = (bitField1_ & ~0x00000800);
    7380  logSearchProgress_ = false;
    7381  bitField1_ = (bitField1_ & ~0x00001000);
    7382  usePbResolution_ = false;
    7383  bitField1_ = (bitField1_ & ~0x00002000);
    7384  minimizeReductionDuringPbResolution_ = false;
    7385  bitField1_ = (bitField1_ & ~0x00004000);
    7386  countAssumptionLevelsInLbd_ = true;
    7387  bitField1_ = (bitField1_ & ~0x00008000);
    7388  presolveBveThreshold_ = 500;
    7389  bitField1_ = (bitField1_ & ~0x00010000);
    7390  presolveBveClauseWeight_ = 3;
    7391  bitField1_ = (bitField1_ & ~0x00020000);
    7392  presolveProbingDeterministicTimeLimit_ = 30D;
    7393  bitField1_ = (bitField1_ & ~0x00040000);
    7394  presolveBlockedClause_ = true;
    7395  bitField1_ = (bitField1_ & ~0x00080000);
    7396  presolveUseBva_ = true;
    7397  bitField1_ = (bitField1_ & ~0x00100000);
    7398  presolveBvaThreshold_ = 1;
    7399  bitField1_ = (bitField1_ & ~0x00200000);
    7400  useOptimizationHints_ = true;
    7401  bitField1_ = (bitField1_ & ~0x00400000);
    7402  minimizeCore_ = true;
    7403  bitField1_ = (bitField1_ & ~0x00800000);
    7404  findMultipleCores_ = true;
    7405  bitField1_ = (bitField1_ & ~0x01000000);
    7406  coverOptimization_ = true;
    7407  bitField1_ = (bitField1_ & ~0x02000000);
    7408  maxSatAssumptionOrder_ = 0;
    7409  bitField1_ = (bitField1_ & ~0x04000000);
    7410  maxSatReverseAssumptionOrder_ = false;
    7411  bitField1_ = (bitField1_ & ~0x08000000);
    7412  maxSatStratification_ = 1;
    7413  bitField1_ = (bitField1_ & ~0x10000000);
    7414  usePrecedencesInDisjunctiveConstraint_ = true;
    7415  bitField1_ = (bitField1_ & ~0x20000000);
    7416  useOverloadCheckerInCumulativeConstraint_ = false;
    7417  bitField1_ = (bitField1_ & ~0x40000000);
    7418  useTimetableEdgeFindingInCumulativeConstraint_ = false;
    7419  bitField1_ = (bitField1_ & ~0x80000000);
    7420  useDisjunctiveConstraintInCumulativeConstraint_ = true;
    7421  bitField2_ = (bitField2_ & ~0x00000001);
    7422  linearizationLevel_ = 1;
    7423  bitField2_ = (bitField2_ & ~0x00000002);
    7424  booleanEncodingLevel_ = 1;
    7425  bitField2_ = (bitField2_ & ~0x00000004);
    7426  maxNumCuts_ = 1000;
    7427  bitField2_ = (bitField2_ & ~0x00000008);
    7428  onlyAddCutsAtLevelZero_ = false;
    7429  bitField2_ = (bitField2_ & ~0x00000010);
    7430  addKnapsackCuts_ = false;
    7431  bitField2_ = (bitField2_ & ~0x00000020);
    7432  addCgCuts_ = false;
    7433  bitField2_ = (bitField2_ & ~0x00000040);
    7434  addMirCuts_ = true;
    7435  bitField2_ = (bitField2_ & ~0x00000080);
    7436  useMirRounding_ = true;
    7437  bitField2_ = (bitField2_ & ~0x00000100);
    7438  maxIntegerRoundingScaling_ = 600;
    7439  bitField2_ = (bitField2_ & ~0x00000200);
    7440  addLpConstraintsLazily_ = true;
    7441  bitField2_ = (bitField2_ & ~0x00000400);
    7442  minOrthogonalityForLpConstraints_ = 0D;
    7443  bitField2_ = (bitField2_ & ~0x00000800);
    7444  maxInactiveCount_ = 1000L;
    7445  bitField2_ = (bitField2_ & ~0x00001000);
    7446  constraintRemovalBatchSize_ = 100L;
    7447  bitField2_ = (bitField2_ & ~0x00002000);
    7448  searchBranching_ = 0;
    7449  bitField2_ = (bitField2_ & ~0x00004000);
    7450  exploitIntegerLpSolution_ = true;
    7451  bitField2_ = (bitField2_ & ~0x00008000);
    7452  exploitAllLpSolution_ = true;
    7453  bitField2_ = (bitField2_ & ~0x00010000);
    7454  exploitBestSolution_ = false;
    7455  bitField2_ = (bitField2_ & ~0x00020000);
    7456  exploitObjective_ = true;
    7457  bitField2_ = (bitField2_ & ~0x00040000);
    7458  pseudoCostReliabilityThreshold_ = 100L;
    7459  bitField2_ = (bitField2_ & ~0x00080000);
    7460  optimizeWithCore_ = false;
    7461  bitField2_ = (bitField2_ & ~0x00100000);
    7462  binarySearchNumConflicts_ = -1;
    7463  bitField2_ = (bitField2_ & ~0x00200000);
    7464  optimizeWithMaxHs_ = false;
    7465  bitField2_ = (bitField2_ & ~0x00400000);
    7466  cpModelPresolve_ = true;
    7467  bitField2_ = (bitField2_ & ~0x00800000);
    7468  cpModelProbingLevel_ = 2;
    7469  bitField2_ = (bitField2_ & ~0x01000000);
    7470  cpModelUseSatPresolve_ = true;
    7471  bitField2_ = (bitField2_ & ~0x02000000);
    7472  enumerateAllSolutions_ = false;
    7473  bitField2_ = (bitField2_ & ~0x04000000);
    7474  fillTightenedDomainsInResponse_ = false;
    7475  bitField2_ = (bitField2_ & ~0x08000000);
    7476  instantiateAllVariables_ = true;
    7477  bitField2_ = (bitField2_ & ~0x10000000);
    7478  autoDetectGreaterThanAtLeastOneOf_ = true;
    7479  bitField2_ = (bitField2_ & ~0x20000000);
    7480  stopAfterFirstSolution_ = false;
    7481  bitField2_ = (bitField2_ & ~0x40000000);
    7482  numSearchWorkers_ = 1;
    7483  bitField2_ = (bitField2_ & ~0x80000000);
    7484  interleaveSearch_ = false;
    7485  bitField3_ = (bitField3_ & ~0x00000001);
    7486  deterministicParallelSearch_ = false;
    7487  bitField3_ = (bitField3_ & ~0x00000002);
    7488  shareObjectiveBounds_ = true;
    7489  bitField3_ = (bitField3_ & ~0x00000004);
    7490  shareLevelZeroBounds_ = true;
    7491  bitField3_ = (bitField3_ & ~0x00000008);
    7492  useLnsOnly_ = false;
    7493  bitField3_ = (bitField3_ & ~0x00000010);
    7494  lnsFocusOnDecisionVariables_ = false;
    7495  bitField3_ = (bitField3_ & ~0x00000020);
    7496  useRinsLns_ = true;
    7497  bitField3_ = (bitField3_ & ~0x00000040);
    7498  randomizeSearch_ = false;
    7499  bitField3_ = (bitField3_ & ~0x00000080);
    7500  searchRandomizationTolerance_ = 0L;
    7501  bitField3_ = (bitField3_ & ~0x00000100);
    7502  useOptionalVariables_ = true;
    7503  bitField3_ = (bitField3_ & ~0x00000200);
    7504  useExactLpReason_ = true;
    7505  bitField3_ = (bitField3_ & ~0x00000400);
    7506  useCombinedNoOverlap_ = false;
    7507  bitField3_ = (bitField3_ & ~0x00000800);
    7508  mipMaxBound_ = 10000000D;
    7509  bitField3_ = (bitField3_ & ~0x00001000);
    7510  mipVarScaling_ = 1D;
    7511  bitField3_ = (bitField3_ & ~0x00002000);
    7512  mipWantedPrecision_ = 1e-06D;
    7513  bitField3_ = (bitField3_ & ~0x00004000);
    7514  mipMaxActivityExponent_ = 53;
    7515  bitField3_ = (bitField3_ & ~0x00008000);
    7516  mipCheckPrecision_ = 0.0001D;
    7517  bitField3_ = (bitField3_ & ~0x00010000);
    7518  catchSigintSignal_ = true;
    7519  bitField3_ = (bitField3_ & ~0x00020000);
    7520  return this;
    7521  }
    7522 
    7523  @java.lang.Override
    7524  public com.google.protobuf.Descriptors.Descriptor
    7526  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
    7527  }
    7528 
    7529  @java.lang.Override
    7532  }
    7533 
    7534  @java.lang.Override
    7537  if (!result.isInitialized()) {
    7538  throw newUninitializedMessageException(result);
    7539  }
    7540  return result;
    7541  }
    7542 
    7543  @java.lang.Override
    7546  int from_bitField0_ = bitField0_;
    7547  int from_bitField1_ = bitField1_;
    7548  int from_bitField2_ = bitField2_;
    7549  int from_bitField3_ = bitField3_;
    7550  int to_bitField0_ = 0;
    7551  int to_bitField1_ = 0;
    7552  int to_bitField2_ = 0;
    7553  int to_bitField3_ = 0;
    7554  if (((from_bitField0_ & 0x00000001) != 0)) {
    7555  to_bitField0_ |= 0x00000001;
    7556  }
    7557  result.preferredVariableOrder_ = preferredVariableOrder_;
    7558  if (((from_bitField0_ & 0x00000002) != 0)) {
    7559  to_bitField0_ |= 0x00000002;
    7560  }
    7561  result.initialPolarity_ = initialPolarity_;
    7562  if (((from_bitField0_ & 0x00000004) != 0)) {
    7563  to_bitField0_ |= 0x00000004;
    7564  }
    7565  result.usePhaseSaving_ = usePhaseSaving_;
    7566  if (((from_bitField0_ & 0x00000008) != 0)) {
    7567  result.randomPolarityRatio_ = randomPolarityRatio_;
    7568  to_bitField0_ |= 0x00000008;
    7569  }
    7570  if (((from_bitField0_ & 0x00000010) != 0)) {
    7571  result.randomBranchesRatio_ = randomBranchesRatio_;
    7572  to_bitField0_ |= 0x00000010;
    7573  }
    7574  if (((from_bitField0_ & 0x00000020) != 0)) {
    7575  result.useErwaHeuristic_ = useErwaHeuristic_;
    7576  to_bitField0_ |= 0x00000020;
    7577  }
    7578  if (((from_bitField0_ & 0x00000040) != 0)) {
    7579  result.initialVariablesActivity_ = initialVariablesActivity_;
    7580  to_bitField0_ |= 0x00000040;
    7581  }
    7582  if (((from_bitField0_ & 0x00000080) != 0)) {
    7583  result.alsoBumpVariablesInConflictReasons_ = alsoBumpVariablesInConflictReasons_;
    7584  to_bitField0_ |= 0x00000080;
    7585  }
    7586  if (((from_bitField0_ & 0x00000100) != 0)) {
    7587  to_bitField0_ |= 0x00000100;
    7588  }
    7589  result.minimizationAlgorithm_ = minimizationAlgorithm_;
    7590  if (((from_bitField0_ & 0x00000200) != 0)) {
    7591  to_bitField0_ |= 0x00000200;
    7592  }
    7593  result.binaryMinimizationAlgorithm_ = binaryMinimizationAlgorithm_;
    7594  if (((from_bitField0_ & 0x00000400) != 0)) {
    7595  to_bitField0_ |= 0x00000400;
    7596  }
    7597  result.subsumptionDuringConflictAnalysis_ = subsumptionDuringConflictAnalysis_;
    7598  if (((from_bitField0_ & 0x00000800) != 0)) {
    7599  to_bitField0_ |= 0x00000800;
    7600  }
    7601  result.clauseCleanupPeriod_ = clauseCleanupPeriod_;
    7602  if (((from_bitField0_ & 0x00001000) != 0)) {
    7603  to_bitField0_ |= 0x00001000;
    7604  }
    7605  result.clauseCleanupTarget_ = clauseCleanupTarget_;
    7606  if (((from_bitField0_ & 0x00002000) != 0)) {
    7607  to_bitField0_ |= 0x00002000;
    7608  }
    7609  result.clauseCleanupProtection_ = clauseCleanupProtection_;
    7610  if (((from_bitField0_ & 0x00004000) != 0)) {
    7611  to_bitField0_ |= 0x00004000;
    7612  }
    7613  result.clauseCleanupLbdBound_ = clauseCleanupLbdBound_;
    7614  if (((from_bitField0_ & 0x00008000) != 0)) {
    7615  to_bitField0_ |= 0x00008000;
    7616  }
    7617  result.clauseCleanupOrdering_ = clauseCleanupOrdering_;
    7618  if (((from_bitField0_ & 0x00010000) != 0)) {
    7619  to_bitField0_ |= 0x00010000;
    7620  }
    7621  result.pbCleanupIncrement_ = pbCleanupIncrement_;
    7622  if (((from_bitField0_ & 0x00020000) != 0)) {
    7623  to_bitField0_ |= 0x00020000;
    7624  }
    7625  result.pbCleanupRatio_ = pbCleanupRatio_;
    7626  if (((from_bitField0_ & 0x00040000) != 0)) {
    7627  to_bitField0_ |= 0x00040000;
    7628  }
    7629  result.minimizeWithPropagationRestartPeriod_ = minimizeWithPropagationRestartPeriod_;
    7630  if (((from_bitField0_ & 0x00080000) != 0)) {
    7631  to_bitField0_ |= 0x00080000;
    7632  }
    7633  result.minimizeWithPropagationNumDecisions_ = minimizeWithPropagationNumDecisions_;
    7634  if (((from_bitField0_ & 0x00100000) != 0)) {
    7635  to_bitField0_ |= 0x00100000;
    7636  }
    7637  result.variableActivityDecay_ = variableActivityDecay_;
    7638  if (((from_bitField0_ & 0x00200000) != 0)) {
    7639  to_bitField0_ |= 0x00200000;
    7640  }
    7641  result.maxVariableActivityValue_ = maxVariableActivityValue_;
    7642  if (((from_bitField0_ & 0x00400000) != 0)) {
    7643  to_bitField0_ |= 0x00400000;
    7644  }
    7645  result.glucoseMaxDecay_ = glucoseMaxDecay_;
    7646  if (((from_bitField0_ & 0x00800000) != 0)) {
    7647  to_bitField0_ |= 0x00800000;
    7648  }
    7649  result.glucoseDecayIncrement_ = glucoseDecayIncrement_;
    7650  if (((from_bitField0_ & 0x01000000) != 0)) {
    7651  to_bitField0_ |= 0x01000000;
    7652  }
    7653  result.glucoseDecayIncrementPeriod_ = glucoseDecayIncrementPeriod_;
    7654  if (((from_bitField0_ & 0x02000000) != 0)) {
    7655  to_bitField0_ |= 0x02000000;
    7656  }
    7657  result.clauseActivityDecay_ = clauseActivityDecay_;
    7658  if (((from_bitField0_ & 0x04000000) != 0)) {
    7659  to_bitField0_ |= 0x04000000;
    7660  }
    7661  result.maxClauseActivityValue_ = maxClauseActivityValue_;
    7662  if (((bitField0_ & 0x08000000) != 0)) {
    7663  restartAlgorithms_ = java.util.Collections.unmodifiableList(restartAlgorithms_);
    7664  bitField0_ = (bitField0_ & ~0x08000000);
    7665  }
    7666  result.restartAlgorithms_ = restartAlgorithms_;
    7667  if (((from_bitField0_ & 0x10000000) != 0)) {
    7668  to_bitField0_ |= 0x08000000;
    7669  }
    7670  result.defaultRestartAlgorithms_ = defaultRestartAlgorithms_;
    7671  if (((from_bitField0_ & 0x20000000) != 0)) {
    7672  to_bitField0_ |= 0x10000000;
    7673  }
    7674  result.restartPeriod_ = restartPeriod_;
    7675  if (((from_bitField0_ & 0x40000000) != 0)) {
    7676  to_bitField0_ |= 0x20000000;
    7677  }
    7678  result.restartRunningWindowSize_ = restartRunningWindowSize_;
    7679  if (((from_bitField0_ & 0x80000000) != 0)) {
    7680  to_bitField0_ |= 0x40000000;
    7681  }
    7682  result.restartDlAverageRatio_ = restartDlAverageRatio_;
    7683  if (((from_bitField1_ & 0x00000001) != 0)) {
    7684  to_bitField0_ |= 0x80000000;
    7685  }
    7686  result.restartLbdAverageRatio_ = restartLbdAverageRatio_;
    7687  if (((from_bitField1_ & 0x00000002) != 0)) {
    7688  result.useBlockingRestart_ = useBlockingRestart_;
    7689  to_bitField1_ |= 0x00000001;
    7690  }
    7691  if (((from_bitField1_ & 0x00000004) != 0)) {
    7692  to_bitField1_ |= 0x00000002;
    7693  }
    7694  result.blockingRestartWindowSize_ = blockingRestartWindowSize_;
    7695  if (((from_bitField1_ & 0x00000008) != 0)) {
    7696  to_bitField1_ |= 0x00000004;
    7697  }
    7698  result.blockingRestartMultiplier_ = blockingRestartMultiplier_;
    7699  if (((from_bitField1_ & 0x00000010) != 0)) {
    7700  result.numConflictsBeforeStrategyChanges_ = numConflictsBeforeStrategyChanges_;
    7701  to_bitField1_ |= 0x00000008;
    7702  }
    7703  if (((from_bitField1_ & 0x00000020) != 0)) {
    7704  result.strategyChangeIncreaseRatio_ = strategyChangeIncreaseRatio_;
    7705  to_bitField1_ |= 0x00000010;
    7706  }
    7707  if (((from_bitField1_ & 0x00000040) != 0)) {
    7708  to_bitField1_ |= 0x00000020;
    7709  }
    7710  result.maxTimeInSeconds_ = maxTimeInSeconds_;
    7711  if (((from_bitField1_ & 0x00000080) != 0)) {
    7712  to_bitField1_ |= 0x00000040;
    7713  }
    7714  result.maxDeterministicTime_ = maxDeterministicTime_;
    7715  if (((from_bitField1_ & 0x00000100) != 0)) {
    7716  to_bitField1_ |= 0x00000080;
    7717  }
    7718  result.maxNumberOfConflicts_ = maxNumberOfConflicts_;
    7719  if (((from_bitField1_ & 0x00000200) != 0)) {
    7720  to_bitField1_ |= 0x00000100;
    7721  }
    7722  result.maxMemoryInMb_ = maxMemoryInMb_;
    7723  if (((from_bitField1_ & 0x00000400) != 0)) {
    7724  to_bitField1_ |= 0x00000200;
    7725  }
    7726  result.treatBinaryClausesSeparately_ = treatBinaryClausesSeparately_;
    7727  if (((from_bitField1_ & 0x00000800) != 0)) {
    7728  to_bitField1_ |= 0x00000400;
    7729  }
    7730  result.randomSeed_ = randomSeed_;
    7731  if (((from_bitField1_ & 0x00001000) != 0)) {
    7732  result.logSearchProgress_ = logSearchProgress_;
    7733  to_bitField1_ |= 0x00000800;
    7734  }
    7735  if (((from_bitField1_ & 0x00002000) != 0)) {
    7736  result.usePbResolution_ = usePbResolution_;
    7737  to_bitField1_ |= 0x00001000;
    7738  }
    7739  if (((from_bitField1_ & 0x00004000) != 0)) {
    7740  result.minimizeReductionDuringPbResolution_ = minimizeReductionDuringPbResolution_;
    7741  to_bitField1_ |= 0x00002000;
    7742  }
    7743  if (((from_bitField1_ & 0x00008000) != 0)) {
    7744  to_bitField1_ |= 0x00004000;
    7745  }
    7746  result.countAssumptionLevelsInLbd_ = countAssumptionLevelsInLbd_;
    7747  if (((from_bitField1_ & 0x00010000) != 0)) {
    7748  to_bitField1_ |= 0x00008000;
    7749  }
    7750  result.presolveBveThreshold_ = presolveBveThreshold_;
    7751  if (((from_bitField1_ & 0x00020000) != 0)) {
    7752  to_bitField1_ |= 0x00010000;
    7753  }
    7754  result.presolveBveClauseWeight_ = presolveBveClauseWeight_;
    7755  if (((from_bitField1_ & 0x00040000) != 0)) {
    7756  to_bitField1_ |= 0x00020000;
    7757  }
    7758  result.presolveProbingDeterministicTimeLimit_ = presolveProbingDeterministicTimeLimit_;
    7759  if (((from_bitField1_ & 0x00080000) != 0)) {
    7760  to_bitField1_ |= 0x00040000;
    7761  }
    7762  result.presolveBlockedClause_ = presolveBlockedClause_;
    7763  if (((from_bitField1_ & 0x00100000) != 0)) {
    7764  to_bitField1_ |= 0x00080000;
    7765  }
    7766  result.presolveUseBva_ = presolveUseBva_;
    7767  if (((from_bitField1_ & 0x00200000) != 0)) {
    7768  to_bitField1_ |= 0x00100000;
    7769  }
    7770  result.presolveBvaThreshold_ = presolveBvaThreshold_;
    7771  if (((from_bitField1_ & 0x00400000) != 0)) {
    7772  to_bitField1_ |= 0x00200000;
    7773  }
    7774  result.useOptimizationHints_ = useOptimizationHints_;
    7775  if (((from_bitField1_ & 0x00800000) != 0)) {
    7776  to_bitField1_ |= 0x00400000;
    7777  }
    7778  result.minimizeCore_ = minimizeCore_;
    7779  if (((from_bitField1_ & 0x01000000) != 0)) {
    7780  to_bitField1_ |= 0x00800000;
    7781  }
    7782  result.findMultipleCores_ = findMultipleCores_;
    7783  if (((from_bitField1_ & 0x02000000) != 0)) {
    7784  to_bitField1_ |= 0x01000000;
    7785  }
    7786  result.coverOptimization_ = coverOptimization_;
    7787  if (((from_bitField1_ & 0x04000000) != 0)) {
    7788  to_bitField1_ |= 0x02000000;
    7789  }
    7790  result.maxSatAssumptionOrder_ = maxSatAssumptionOrder_;
    7791  if (((from_bitField1_ & 0x08000000) != 0)) {
    7792  result.maxSatReverseAssumptionOrder_ = maxSatReverseAssumptionOrder_;
    7793  to_bitField1_ |= 0x04000000;
    7794  }
    7795  if (((from_bitField1_ & 0x10000000) != 0)) {
    7796  to_bitField1_ |= 0x08000000;
    7797  }
    7798  result.maxSatStratification_ = maxSatStratification_;
    7799  if (((from_bitField1_ & 0x20000000) != 0)) {
    7800  to_bitField1_ |= 0x10000000;
    7801  }
    7802  result.usePrecedencesInDisjunctiveConstraint_ = usePrecedencesInDisjunctiveConstraint_;
    7803  if (((from_bitField1_ & 0x40000000) != 0)) {
    7804  result.useOverloadCheckerInCumulativeConstraint_ = useOverloadCheckerInCumulativeConstraint_;
    7805  to_bitField1_ |= 0x20000000;
    7806  }
    7807  if (((from_bitField1_ & 0x80000000) != 0)) {
    7808  result.useTimetableEdgeFindingInCumulativeConstraint_ = useTimetableEdgeFindingInCumulativeConstraint_;
    7809  to_bitField1_ |= 0x40000000;
    7810  }
    7811  if (((from_bitField2_ & 0x00000001) != 0)) {
    7812  to_bitField1_ |= 0x80000000;
    7813  }
    7814  result.useDisjunctiveConstraintInCumulativeConstraint_ = useDisjunctiveConstraintInCumulativeConstraint_;
    7815  if (((from_bitField2_ & 0x00000002) != 0)) {
    7816  to_bitField2_ |= 0x00000001;
    7817  }
    7818  result.linearizationLevel_ = linearizationLevel_;
    7819  if (((from_bitField2_ & 0x00000004) != 0)) {
    7820  to_bitField2_ |= 0x00000002;
    7821  }
    7822  result.booleanEncodingLevel_ = booleanEncodingLevel_;
    7823  if (((from_bitField2_ & 0x00000008) != 0)) {
    7824  to_bitField2_ |= 0x00000004;
    7825  }
    7826  result.maxNumCuts_ = maxNumCuts_;
    7827  if (((from_bitField2_ & 0x00000010) != 0)) {
    7828  result.onlyAddCutsAtLevelZero_ = onlyAddCutsAtLevelZero_;
    7829  to_bitField2_ |= 0x00000008;
    7830  }
    7831  if (((from_bitField2_ & 0x00000020) != 0)) {
    7832  result.addKnapsackCuts_ = addKnapsackCuts_;
    7833  to_bitField2_ |= 0x00000010;
    7834  }
    7835  if (((from_bitField2_ & 0x00000040) != 0)) {
    7836  result.addCgCuts_ = addCgCuts_;
    7837  to_bitField2_ |= 0x00000020;
    7838  }
    7839  if (((from_bitField2_ & 0x00000080) != 0)) {
    7840  to_bitField2_ |= 0x00000040;
    7841  }
    7842  result.addMirCuts_ = addMirCuts_;
    7843  if (((from_bitField2_ & 0x00000100) != 0)) {
    7844  to_bitField2_ |= 0x00000080;
    7845  }
    7846  result.useMirRounding_ = useMirRounding_;
    7847  if (((from_bitField2_ & 0x00000200) != 0)) {
    7848  to_bitField2_ |= 0x00000100;
    7849  }
    7850  result.maxIntegerRoundingScaling_ = maxIntegerRoundingScaling_;
    7851  if (((from_bitField2_ & 0x00000400) != 0)) {
    7852  to_bitField2_ |= 0x00000200;
    7853  }
    7854  result.addLpConstraintsLazily_ = addLpConstraintsLazily_;
    7855  if (((from_bitField2_ & 0x00000800) != 0)) {
    7856  result.minOrthogonalityForLpConstraints_ = minOrthogonalityForLpConstraints_;
    7857  to_bitField2_ |= 0x00000400;
    7858  }
    7859  if (((from_bitField2_ & 0x00001000) != 0)) {
    7860  to_bitField2_ |= 0x00000800;
    7861  }
    7862  result.maxInactiveCount_ = maxInactiveCount_;
    7863  if (((from_bitField2_ & 0x00002000) != 0)) {
    7864  to_bitField2_ |= 0x00001000;
    7865  }
    7866  result.constraintRemovalBatchSize_ = constraintRemovalBatchSize_;
    7867  if (((from_bitField2_ & 0x00004000) != 0)) {
    7868  to_bitField2_ |= 0x00002000;
    7869  }
    7870  result.searchBranching_ = searchBranching_;
    7871  if (((from_bitField2_ & 0x00008000) != 0)) {
    7872  to_bitField2_ |= 0x00004000;
    7873  }
    7874  result.exploitIntegerLpSolution_ = exploitIntegerLpSolution_;
    7875  if (((from_bitField2_ & 0x00010000) != 0)) {
    7876  to_bitField2_ |= 0x00008000;
    7877  }
    7878  result.exploitAllLpSolution_ = exploitAllLpSolution_;
    7879  if (((from_bitField2_ & 0x00020000) != 0)) {
    7880  result.exploitBestSolution_ = exploitBestSolution_;
    7881  to_bitField2_ |= 0x00010000;
    7882  }
    7883  if (((from_bitField2_ & 0x00040000) != 0)) {
    7884  to_bitField2_ |= 0x00020000;
    7885  }
    7886  result.exploitObjective_ = exploitObjective_;
    7887  if (((from_bitField2_ & 0x00080000) != 0)) {
    7888  to_bitField2_ |= 0x00040000;
    7889  }
    7890  result.pseudoCostReliabilityThreshold_ = pseudoCostReliabilityThreshold_;
    7891  if (((from_bitField2_ & 0x00100000) != 0)) {
    7892  result.optimizeWithCore_ = optimizeWithCore_;
    7893  to_bitField2_ |= 0x00080000;
    7894  }
    7895  if (((from_bitField2_ & 0x00200000) != 0)) {
    7896  to_bitField2_ |= 0x00100000;
    7897  }
    7898  result.binarySearchNumConflicts_ = binarySearchNumConflicts_;
    7899  if (((from_bitField2_ & 0x00400000) != 0)) {
    7900  result.optimizeWithMaxHs_ = optimizeWithMaxHs_;
    7901  to_bitField2_ |= 0x00200000;
    7902  }
    7903  if (((from_bitField2_ & 0x00800000) != 0)) {
    7904  to_bitField2_ |= 0x00400000;
    7905  }
    7906  result.cpModelPresolve_ = cpModelPresolve_;
    7907  if (((from_bitField2_ & 0x01000000) != 0)) {
    7908  to_bitField2_ |= 0x00800000;
    7909  }
    7910  result.cpModelProbingLevel_ = cpModelProbingLevel_;
    7911  if (((from_bitField2_ & 0x02000000) != 0)) {
    7912  to_bitField2_ |= 0x01000000;
    7913  }
    7914  result.cpModelUseSatPresolve_ = cpModelUseSatPresolve_;
    7915  if (((from_bitField2_ & 0x04000000) != 0)) {
    7916  result.enumerateAllSolutions_ = enumerateAllSolutions_;
    7917  to_bitField2_ |= 0x02000000;
    7918  }
    7919  if (((from_bitField2_ & 0x08000000) != 0)) {
    7920  result.fillTightenedDomainsInResponse_ = fillTightenedDomainsInResponse_;
    7921  to_bitField2_ |= 0x04000000;
    7922  }
    7923  if (((from_bitField2_ & 0x10000000) != 0)) {
    7924  to_bitField2_ |= 0x08000000;
    7925  }
    7926  result.instantiateAllVariables_ = instantiateAllVariables_;
    7927  if (((from_bitField2_ & 0x20000000) != 0)) {
    7928  to_bitField2_ |= 0x10000000;
    7929  }
    7930  result.autoDetectGreaterThanAtLeastOneOf_ = autoDetectGreaterThanAtLeastOneOf_;
    7931  if (((from_bitField2_ & 0x40000000) != 0)) {
    7932  result.stopAfterFirstSolution_ = stopAfterFirstSolution_;
    7933  to_bitField2_ |= 0x20000000;
    7934  }
    7935  if (((from_bitField2_ & 0x80000000) != 0)) {
    7936  to_bitField2_ |= 0x40000000;
    7937  }
    7938  result.numSearchWorkers_ = numSearchWorkers_;
    7939  if (((from_bitField3_ & 0x00000001) != 0)) {
    7940  result.interleaveSearch_ = interleaveSearch_;
    7941  to_bitField2_ |= 0x80000000;
    7942  }
    7943  if (((from_bitField3_ & 0x00000002) != 0)) {
    7944  result.deterministicParallelSearch_ = deterministicParallelSearch_;
    7945  to_bitField3_ |= 0x00000001;
    7946  }
    7947  if (((from_bitField3_ & 0x00000004) != 0)) {
    7948  to_bitField3_ |= 0x00000002;
    7949  }
    7950  result.shareObjectiveBounds_ = shareObjectiveBounds_;
    7951  if (((from_bitField3_ & 0x00000008) != 0)) {
    7952  to_bitField3_ |= 0x00000004;
    7953  }
    7954  result.shareLevelZeroBounds_ = shareLevelZeroBounds_;
    7955  if (((from_bitField3_ & 0x00000010) != 0)) {
    7956  result.useLnsOnly_ = useLnsOnly_;
    7957  to_bitField3_ |= 0x00000008;
    7958  }
    7959  if (((from_bitField3_ & 0x00000020) != 0)) {
    7960  result.lnsFocusOnDecisionVariables_ = lnsFocusOnDecisionVariables_;
    7961  to_bitField3_ |= 0x00000010;
    7962  }
    7963  if (((from_bitField3_ & 0x00000040) != 0)) {
    7964  to_bitField3_ |= 0x00000020;
    7965  }
    7966  result.useRinsLns_ = useRinsLns_;
    7967  if (((from_bitField3_ & 0x00000080) != 0)) {
    7968  result.randomizeSearch_ = randomizeSearch_;
    7969  to_bitField3_ |= 0x00000040;
    7970  }
    7971  if (((from_bitField3_ & 0x00000100) != 0)) {
    7972  result.searchRandomizationTolerance_ = searchRandomizationTolerance_;
    7973  to_bitField3_ |= 0x00000080;
    7974  }
    7975  if (((from_bitField3_ & 0x00000200) != 0)) {
    7976  to_bitField3_ |= 0x00000100;
    7977  }
    7978  result.useOptionalVariables_ = useOptionalVariables_;
    7979  if (((from_bitField3_ & 0x00000400) != 0)) {
    7980  to_bitField3_ |= 0x00000200;
    7981  }
    7982  result.useExactLpReason_ = useExactLpReason_;
    7983  if (((from_bitField3_ & 0x00000800) != 0)) {
    7984  result.useCombinedNoOverlap_ = useCombinedNoOverlap_;
    7985  to_bitField3_ |= 0x00000400;
    7986  }
    7987  if (((from_bitField3_ & 0x00001000) != 0)) {
    7988  to_bitField3_ |= 0x00000800;
    7989  }
    7990  result.mipMaxBound_ = mipMaxBound_;
    7991  if (((from_bitField3_ & 0x00002000) != 0)) {
    7992  to_bitField3_ |= 0x00001000;
    7993  }
    7994  result.mipVarScaling_ = mipVarScaling_;
    7995  if (((from_bitField3_ & 0x00004000) != 0)) {
    7996  to_bitField3_ |= 0x00002000;
    7997  }
    7998  result.mipWantedPrecision_ = mipWantedPrecision_;
    7999  if (((from_bitField3_ & 0x00008000) != 0)) {
    8000  to_bitField3_ |= 0x00004000;
    8001  }
    8002  result.mipMaxActivityExponent_ = mipMaxActivityExponent_;
    8003  if (((from_bitField3_ & 0x00010000) != 0)) {
    8004  to_bitField3_ |= 0x00008000;
    8005  }
    8006  result.mipCheckPrecision_ = mipCheckPrecision_;
    8007  if (((from_bitField3_ & 0x00020000) != 0)) {
    8008  to_bitField3_ |= 0x00010000;
    8009  }
    8010  result.catchSigintSignal_ = catchSigintSignal_;
    8011  result.bitField0_ = to_bitField0_;
    8012  result.bitField1_ = to_bitField1_;
    8013  result.bitField2_ = to_bitField2_;
    8014  result.bitField3_ = to_bitField3_;
    8015  onBuilt();
    8016  return result;
    8017  }
    8018 
    8019  @java.lang.Override
    8020  public Builder clone() {
    8021  return super.clone();
    8022  }
    8023  @java.lang.Override
    8025  com.google.protobuf.Descriptors.FieldDescriptor field,
    8026  java.lang.Object value) {
    8027  return super.setField(field, value);
    8028  }
    8029  @java.lang.Override
    8031  com.google.protobuf.Descriptors.FieldDescriptor field) {
    8032  return super.clearField(field);
    8033  }
    8034  @java.lang.Override
    8036  com.google.protobuf.Descriptors.OneofDescriptor oneof) {
    8037  return super.clearOneof(oneof);
    8038  }
    8039  @java.lang.Override
    8041  com.google.protobuf.Descriptors.FieldDescriptor field,
    8042  int index, java.lang.Object value) {
    8043  return super.setRepeatedField(field, index, value);
    8044  }
    8045  @java.lang.Override
    8047  com.google.protobuf.Descriptors.FieldDescriptor field,
    8048  java.lang.Object value) {
    8049  return super.addRepeatedField(field, value);
    8050  }
    8051  @java.lang.Override
    8052  public Builder mergeFrom(com.google.protobuf.Message other) {
    8053  if (other instanceof com.google.ortools.sat.SatParameters) {
    8054  return mergeFrom((com.google.ortools.sat.SatParameters)other);
    8055  } else {
    8056  super.mergeFrom(other);
    8057  return this;
    8058  }
    8059  }
    8060 
    8062  if (other == com.google.ortools.sat.SatParameters.getDefaultInstance()) return this;
    8063  if (other.hasPreferredVariableOrder()) {
    8064  setPreferredVariableOrder(other.getPreferredVariableOrder());
    8065  }
    8066  if (other.hasInitialPolarity()) {
    8067  setInitialPolarity(other.getInitialPolarity());
    8068  }
    8069  if (other.hasUsePhaseSaving()) {
    8070  setUsePhaseSaving(other.getUsePhaseSaving());
    8071  }
    8072  if (other.hasRandomPolarityRatio()) {
    8073  setRandomPolarityRatio(other.getRandomPolarityRatio());
    8074  }
    8075  if (other.hasRandomBranchesRatio()) {
    8076  setRandomBranchesRatio(other.getRandomBranchesRatio());
    8077  }
    8078  if (other.hasUseErwaHeuristic()) {
    8079  setUseErwaHeuristic(other.getUseErwaHeuristic());
    8080  }
    8081  if (other.hasInitialVariablesActivity()) {
    8082  setInitialVariablesActivity(other.getInitialVariablesActivity());
    8083  }
    8084  if (other.hasAlsoBumpVariablesInConflictReasons()) {
    8085  setAlsoBumpVariablesInConflictReasons(other.getAlsoBumpVariablesInConflictReasons());
    8086  }
    8087  if (other.hasMinimizationAlgorithm()) {
    8088  setMinimizationAlgorithm(other.getMinimizationAlgorithm());
    8089  }
    8090  if (other.hasBinaryMinimizationAlgorithm()) {
    8091  setBinaryMinimizationAlgorithm(other.getBinaryMinimizationAlgorithm());
    8092  }
    8093  if (other.hasSubsumptionDuringConflictAnalysis()) {
    8094  setSubsumptionDuringConflictAnalysis(other.getSubsumptionDuringConflictAnalysis());
    8095  }
    8096  if (other.hasClauseCleanupPeriod()) {
    8097  setClauseCleanupPeriod(other.getClauseCleanupPeriod());
    8098  }
    8099  if (other.hasClauseCleanupTarget()) {
    8100  setClauseCleanupTarget(other.getClauseCleanupTarget());
    8101  }
    8102  if (other.hasClauseCleanupProtection()) {
    8103  setClauseCleanupProtection(other.getClauseCleanupProtection());
    8104  }
    8105  if (other.hasClauseCleanupLbdBound()) {
    8106  setClauseCleanupLbdBound(other.getClauseCleanupLbdBound());
    8107  }
    8108  if (other.hasClauseCleanupOrdering()) {
    8109  setClauseCleanupOrdering(other.getClauseCleanupOrdering());
    8110  }
    8111  if (other.hasPbCleanupIncrement()) {
    8112  setPbCleanupIncrement(other.getPbCleanupIncrement());
    8113  }
    8114  if (other.hasPbCleanupRatio()) {
    8115  setPbCleanupRatio(other.getPbCleanupRatio());
    8116  }
    8117  if (other.hasMinimizeWithPropagationRestartPeriod()) {
    8118  setMinimizeWithPropagationRestartPeriod(other.getMinimizeWithPropagationRestartPeriod());
    8119  }
    8120  if (other.hasMinimizeWithPropagationNumDecisions()) {
    8121  setMinimizeWithPropagationNumDecisions(other.getMinimizeWithPropagationNumDecisions());
    8122  }
    8123  if (other.hasVariableActivityDecay()) {
    8124  setVariableActivityDecay(other.getVariableActivityDecay());
    8125  }
    8126  if (other.hasMaxVariableActivityValue()) {
    8127  setMaxVariableActivityValue(other.getMaxVariableActivityValue());
    8128  }
    8129  if (other.hasGlucoseMaxDecay()) {
    8130  setGlucoseMaxDecay(other.getGlucoseMaxDecay());
    8131  }
    8132  if (other.hasGlucoseDecayIncrement()) {
    8133  setGlucoseDecayIncrement(other.getGlucoseDecayIncrement());
    8134  }
    8135  if (other.hasGlucoseDecayIncrementPeriod()) {
    8136  setGlucoseDecayIncrementPeriod(other.getGlucoseDecayIncrementPeriod());
    8137  }
    8138  if (other.hasClauseActivityDecay()) {
    8139  setClauseActivityDecay(other.getClauseActivityDecay());
    8140  }
    8141  if (other.hasMaxClauseActivityValue()) {
    8142  setMaxClauseActivityValue(other.getMaxClauseActivityValue());
    8143  }
    8144  if (!other.restartAlgorithms_.isEmpty()) {
    8145  if (restartAlgorithms_.isEmpty()) {
    8146  restartAlgorithms_ = other.restartAlgorithms_;
    8147  bitField0_ = (bitField0_ & ~0x08000000);
    8148  } else {
    8149  ensureRestartAlgorithmsIsMutable();
    8150  restartAlgorithms_.addAll(other.restartAlgorithms_);
    8151  }
    8152  onChanged();
    8153  }
    8154  if (other.hasDefaultRestartAlgorithms()) {
    8155  bitField0_ |= 0x10000000;
    8156  defaultRestartAlgorithms_ = other.defaultRestartAlgorithms_;
    8157  onChanged();
    8158  }
    8159  if (other.hasRestartPeriod()) {
    8160  setRestartPeriod(other.getRestartPeriod());
    8161  }
    8162  if (other.hasRestartRunningWindowSize()) {
    8163  setRestartRunningWindowSize(other.getRestartRunningWindowSize());
    8164  }
    8165  if (other.hasRestartDlAverageRatio()) {
    8166  setRestartDlAverageRatio(other.getRestartDlAverageRatio());
    8167  }
    8168  if (other.hasRestartLbdAverageRatio()) {
    8169  setRestartLbdAverageRatio(other.getRestartLbdAverageRatio());
    8170  }
    8171  if (other.hasUseBlockingRestart()) {
    8172  setUseBlockingRestart(other.getUseBlockingRestart());
    8173  }
    8174  if (other.hasBlockingRestartWindowSize()) {
    8175  setBlockingRestartWindowSize(other.getBlockingRestartWindowSize());
    8176  }
    8177  if (other.hasBlockingRestartMultiplier()) {
    8178  setBlockingRestartMultiplier(other.getBlockingRestartMultiplier());
    8179  }
    8180  if (other.hasNumConflictsBeforeStrategyChanges()) {
    8181  setNumConflictsBeforeStrategyChanges(other.getNumConflictsBeforeStrategyChanges());
    8182  }
    8183  if (other.hasStrategyChangeIncreaseRatio()) {
    8184  setStrategyChangeIncreaseRatio(other.getStrategyChangeIncreaseRatio());
    8185  }
    8186  if (other.hasMaxTimeInSeconds()) {
    8187  setMaxTimeInSeconds(other.getMaxTimeInSeconds());
    8188  }
    8189  if (other.hasMaxDeterministicTime()) {
    8190  setMaxDeterministicTime(other.getMaxDeterministicTime());
    8191  }
    8192  if (other.hasMaxNumberOfConflicts()) {
    8193  setMaxNumberOfConflicts(other.getMaxNumberOfConflicts());
    8194  }
    8195  if (other.hasMaxMemoryInMb()) {
    8196  setMaxMemoryInMb(other.getMaxMemoryInMb());
    8197  }
    8198  if (other.hasTreatBinaryClausesSeparately()) {
    8199  setTreatBinaryClausesSeparately(other.getTreatBinaryClausesSeparately());
    8200  }
    8201  if (other.hasRandomSeed()) {
    8202  setRandomSeed(other.getRandomSeed());
    8203  }
    8204  if (other.hasLogSearchProgress()) {
    8205  setLogSearchProgress(other.getLogSearchProgress());
    8206  }
    8207  if (other.hasUsePbResolution()) {
    8208  setUsePbResolution(other.getUsePbResolution());
    8209  }
    8210  if (other.hasMinimizeReductionDuringPbResolution()) {
    8211  setMinimizeReductionDuringPbResolution(other.getMinimizeReductionDuringPbResolution());
    8212  }
    8213  if (other.hasCountAssumptionLevelsInLbd()) {
    8214  setCountAssumptionLevelsInLbd(other.getCountAssumptionLevelsInLbd());
    8215  }
    8216  if (other.hasPresolveBveThreshold()) {
    8217  setPresolveBveThreshold(other.getPresolveBveThreshold());
    8218  }
    8219  if (other.hasPresolveBveClauseWeight()) {
    8220  setPresolveBveClauseWeight(other.getPresolveBveClauseWeight());
    8221  }
    8222  if (other.hasPresolveProbingDeterministicTimeLimit()) {
    8223  setPresolveProbingDeterministicTimeLimit(other.getPresolveProbingDeterministicTimeLimit());
    8224  }
    8225  if (other.hasPresolveBlockedClause()) {
    8226  setPresolveBlockedClause(other.getPresolveBlockedClause());
    8227  }
    8228  if (other.hasPresolveUseBva()) {
    8229  setPresolveUseBva(other.getPresolveUseBva());
    8230  }
    8231  if (other.hasPresolveBvaThreshold()) {
    8232  setPresolveBvaThreshold(other.getPresolveBvaThreshold());
    8233  }
    8234  if (other.hasUseOptimizationHints()) {
    8235  setUseOptimizationHints(other.getUseOptimizationHints());
    8236  }
    8237  if (other.hasMinimizeCore()) {
    8238  setMinimizeCore(other.getMinimizeCore());
    8239  }
    8240  if (other.hasFindMultipleCores()) {
    8241  setFindMultipleCores(other.getFindMultipleCores());
    8242  }
    8243  if (other.hasCoverOptimization()) {
    8244  setCoverOptimization(other.getCoverOptimization());
    8245  }
    8246  if (other.hasMaxSatAssumptionOrder()) {
    8247  setMaxSatAssumptionOrder(other.getMaxSatAssumptionOrder());
    8248  }
    8249  if (other.hasMaxSatReverseAssumptionOrder()) {
    8250  setMaxSatReverseAssumptionOrder(other.getMaxSatReverseAssumptionOrder());
    8251  }
    8252  if (other.hasMaxSatStratification()) {
    8253  setMaxSatStratification(other.getMaxSatStratification());
    8254  }
    8255  if (other.hasUsePrecedencesInDisjunctiveConstraint()) {
    8256  setUsePrecedencesInDisjunctiveConstraint(other.getUsePrecedencesInDisjunctiveConstraint());
    8257  }
    8258  if (other.hasUseOverloadCheckerInCumulativeConstraint()) {
    8259  setUseOverloadCheckerInCumulativeConstraint(other.getUseOverloadCheckerInCumulativeConstraint());
    8260  }
    8261  if (other.hasUseTimetableEdgeFindingInCumulativeConstraint()) {
    8262  setUseTimetableEdgeFindingInCumulativeConstraint(other.getUseTimetableEdgeFindingInCumulativeConstraint());
    8263  }
    8264  if (other.hasUseDisjunctiveConstraintInCumulativeConstraint()) {
    8265  setUseDisjunctiveConstraintInCumulativeConstraint(other.getUseDisjunctiveConstraintInCumulativeConstraint());
    8266  }
    8267  if (other.hasLinearizationLevel()) {
    8268  setLinearizationLevel(other.getLinearizationLevel());
    8269  }
    8270  if (other.hasBooleanEncodingLevel()) {
    8271  setBooleanEncodingLevel(other.getBooleanEncodingLevel());
    8272  }
    8273  if (other.hasMaxNumCuts()) {
    8274  setMaxNumCuts(other.getMaxNumCuts());
    8275  }
    8276  if (other.hasOnlyAddCutsAtLevelZero()) {
    8277  setOnlyAddCutsAtLevelZero(other.getOnlyAddCutsAtLevelZero());
    8278  }
    8279  if (other.hasAddKnapsackCuts()) {
    8280  setAddKnapsackCuts(other.getAddKnapsackCuts());
    8281  }
    8282  if (other.hasAddCgCuts()) {
    8283  setAddCgCuts(other.getAddCgCuts());
    8284  }
    8285  if (other.hasAddMirCuts()) {
    8286  setAddMirCuts(other.getAddMirCuts());
    8287  }
    8288  if (other.hasUseMirRounding()) {
    8289  setUseMirRounding(other.getUseMirRounding());
    8290  }
    8291  if (other.hasMaxIntegerRoundingScaling()) {
    8292  setMaxIntegerRoundingScaling(other.getMaxIntegerRoundingScaling());
    8293  }
    8294  if (other.hasAddLpConstraintsLazily()) {
    8295  setAddLpConstraintsLazily(other.getAddLpConstraintsLazily());
    8296  }
    8297  if (other.hasMinOrthogonalityForLpConstraints()) {
    8298  setMinOrthogonalityForLpConstraints(other.getMinOrthogonalityForLpConstraints());
    8299  }
    8300  if (other.hasMaxInactiveCount()) {
    8301  setMaxInactiveCount(other.getMaxInactiveCount());
    8302  }
    8303  if (other.hasConstraintRemovalBatchSize()) {
    8304  setConstraintRemovalBatchSize(other.getConstraintRemovalBatchSize());
    8305  }
    8306  if (other.hasSearchBranching()) {
    8307  setSearchBranching(other.getSearchBranching());
    8308  }
    8309  if (other.hasExploitIntegerLpSolution()) {
    8310  setExploitIntegerLpSolution(other.getExploitIntegerLpSolution());
    8311  }
    8312  if (other.hasExploitAllLpSolution()) {
    8313  setExploitAllLpSolution(other.getExploitAllLpSolution());
    8314  }
    8315  if (other.hasExploitBestSolution()) {
    8316  setExploitBestSolution(other.getExploitBestSolution());
    8317  }
    8318  if (other.hasExploitObjective()) {
    8319  setExploitObjective(other.getExploitObjective());
    8320  }
    8321  if (other.hasPseudoCostReliabilityThreshold()) {
    8322  setPseudoCostReliabilityThreshold(other.getPseudoCostReliabilityThreshold());
    8323  }
    8324  if (other.hasOptimizeWithCore()) {
    8325  setOptimizeWithCore(other.getOptimizeWithCore());
    8326  }
    8327  if (other.hasBinarySearchNumConflicts()) {
    8328  setBinarySearchNumConflicts(other.getBinarySearchNumConflicts());
    8329  }
    8330  if (other.hasOptimizeWithMaxHs()) {
    8331  setOptimizeWithMaxHs(other.getOptimizeWithMaxHs());
    8332  }
    8333  if (other.hasCpModelPresolve()) {
    8334  setCpModelPresolve(other.getCpModelPresolve());
    8335  }
    8336  if (other.hasCpModelProbingLevel()) {
    8337  setCpModelProbingLevel(other.getCpModelProbingLevel());
    8338  }
    8339  if (other.hasCpModelUseSatPresolve()) {
    8340  setCpModelUseSatPresolve(other.getCpModelUseSatPresolve());
    8341  }
    8342  if (other.hasEnumerateAllSolutions()) {
    8343  setEnumerateAllSolutions(other.getEnumerateAllSolutions());
    8344  }
    8345  if (other.hasFillTightenedDomainsInResponse()) {
    8346  setFillTightenedDomainsInResponse(other.getFillTightenedDomainsInResponse());
    8347  }
    8348  if (other.hasInstantiateAllVariables()) {
    8349  setInstantiateAllVariables(other.getInstantiateAllVariables());
    8350  }
    8351  if (other.hasAutoDetectGreaterThanAtLeastOneOf()) {
    8352  setAutoDetectGreaterThanAtLeastOneOf(other.getAutoDetectGreaterThanAtLeastOneOf());
    8353  }
    8354  if (other.hasStopAfterFirstSolution()) {
    8355  setStopAfterFirstSolution(other.getStopAfterFirstSolution());
    8356  }
    8357  if (other.hasNumSearchWorkers()) {
    8358  setNumSearchWorkers(other.getNumSearchWorkers());
    8359  }
    8360  if (other.hasInterleaveSearch()) {
    8361  setInterleaveSearch(other.getInterleaveSearch());
    8362  }
    8363  if (other.hasDeterministicParallelSearch()) {
    8364  setDeterministicParallelSearch(other.getDeterministicParallelSearch());
    8365  }
    8366  if (other.hasShareObjectiveBounds()) {
    8367  setShareObjectiveBounds(other.getShareObjectiveBounds());
    8368  }
    8369  if (other.hasShareLevelZeroBounds()) {
    8370  setShareLevelZeroBounds(other.getShareLevelZeroBounds());
    8371  }
    8372  if (other.hasUseLnsOnly()) {
    8373  setUseLnsOnly(other.getUseLnsOnly());
    8374  }
    8375  if (other.hasLnsFocusOnDecisionVariables()) {
    8376  setLnsFocusOnDecisionVariables(other.getLnsFocusOnDecisionVariables());
    8377  }
    8378  if (other.hasUseRinsLns()) {
    8379  setUseRinsLns(other.getUseRinsLns());
    8380  }
    8381  if (other.hasRandomizeSearch()) {
    8382  setRandomizeSearch(other.getRandomizeSearch());
    8383  }
    8384  if (other.hasSearchRandomizationTolerance()) {
    8385  setSearchRandomizationTolerance(other.getSearchRandomizationTolerance());
    8386  }
    8387  if (other.hasUseOptionalVariables()) {
    8388  setUseOptionalVariables(other.getUseOptionalVariables());
    8389  }
    8390  if (other.hasUseExactLpReason()) {
    8391  setUseExactLpReason(other.getUseExactLpReason());
    8392  }
    8393  if (other.hasUseCombinedNoOverlap()) {
    8394  setUseCombinedNoOverlap(other.getUseCombinedNoOverlap());
    8395  }
    8396  if (other.hasMipMaxBound()) {
    8397  setMipMaxBound(other.getMipMaxBound());
    8398  }
    8399  if (other.hasMipVarScaling()) {
    8400  setMipVarScaling(other.getMipVarScaling());
    8401  }
    8402  if (other.hasMipWantedPrecision()) {
    8403  setMipWantedPrecision(other.getMipWantedPrecision());
    8404  }
    8405  if (other.hasMipMaxActivityExponent()) {
    8406  setMipMaxActivityExponent(other.getMipMaxActivityExponent());
    8407  }
    8408  if (other.hasMipCheckPrecision()) {
    8409  setMipCheckPrecision(other.getMipCheckPrecision());
    8410  }
    8411  if (other.hasCatchSigintSignal()) {
    8412  setCatchSigintSignal(other.getCatchSigintSignal());
    8413  }
    8414  this.mergeUnknownFields(other.unknownFields);
    8415  onChanged();
    8416  return this;
    8417  }
    8418 
    8419  @java.lang.Override
    8420  public final boolean isInitialized() {
    8421  return true;
    8422  }
    8423 
    8424  @java.lang.Override
    8426  com.google.protobuf.CodedInputStream input,
    8427  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    8428  throws java.io.IOException {
    8429  com.google.ortools.sat.SatParameters parsedMessage = null;
    8430  try {
    8431  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
    8432  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    8433  parsedMessage = (com.google.ortools.sat.SatParameters) e.getUnfinishedMessage();
    8434  throw e.unwrapIOException();
    8435  } finally {
    8436  if (parsedMessage != null) {
    8437  mergeFrom(parsedMessage);
    8438  }
    8439  }
    8440  return this;
    8441  }
    8442  private int bitField0_;
    8443  private int bitField1_;
    8444  private int bitField2_;
    8445  private int bitField3_;
    8446 
    8447  private int preferredVariableOrder_ = 0;
    8451  public boolean hasPreferredVariableOrder() {
    8452  return ((bitField0_ & 0x00000001) != 0);
    8453  }
    8458  @SuppressWarnings("deprecation")
    8460  return result == null ? com.google.ortools.sat.SatParameters.VariableOrder.IN_ORDER : result;
    8461  }
    8466  if (value == null) {
    8467  throw new NullPointerException();
    8468  }
    8469  bitField0_ |= 0x00000001;
    8470  preferredVariableOrder_ = value.getNumber();
    8471  onChanged();
    8472  return this;
    8473  }
    8478  bitField0_ = (bitField0_ & ~0x00000001);
    8479  preferredVariableOrder_ = 0;
    8480  onChanged();
    8481  return this;
    8482  }
    8483 
    8484  private int initialPolarity_ = 1;
    8488  public boolean hasInitialPolarity() {
    8489  return ((bitField0_ & 0x00000002) != 0);
    8490  }
    8495  @SuppressWarnings("deprecation")
    8497  return result == null ? com.google.ortools.sat.SatParameters.Polarity.POLARITY_FALSE : result;
    8498  }
    8503  if (value == null) {
    8504  throw new NullPointerException();
    8505  }
    8506  bitField0_ |= 0x00000002;
    8507  initialPolarity_ = value.getNumber();
    8508  onChanged();
    8509  return this;
    8510  }
    8515  bitField0_ = (bitField0_ & ~0x00000002);
    8516  initialPolarity_ = 1;
    8517  onChanged();
    8518  return this;
    8519  }
    8520 
    8521  private boolean usePhaseSaving_ = true;
    8535  public boolean hasUsePhaseSaving() {
    8536  return ((bitField0_ & 0x00000004) != 0);
    8537  }
    8551  public boolean getUsePhaseSaving() {
    8552  return usePhaseSaving_;
    8553  }
    8567  public Builder setUsePhaseSaving(boolean value) {
    8568  bitField0_ |= 0x00000004;
    8569  usePhaseSaving_ = value;
    8570  onChanged();
    8571  return this;
    8572  }
    8587  bitField0_ = (bitField0_ & ~0x00000004);
    8588  usePhaseSaving_ = true;
    8589  onChanged();
    8590  return this;
    8591  }
    8592 
    8593  private double randomPolarityRatio_ ;
    8605  public boolean hasRandomPolarityRatio() {
    8606  return ((bitField0_ & 0x00000008) != 0);
    8607  }
    8619  public double getRandomPolarityRatio() {
    8620  return randomPolarityRatio_;
    8621  }
    8633  public Builder setRandomPolarityRatio(double value) {
    8634  bitField0_ |= 0x00000008;
    8635  randomPolarityRatio_ = value;
    8636  onChanged();
    8637  return this;
    8638  }
    8651  bitField0_ = (bitField0_ & ~0x00000008);
    8652  randomPolarityRatio_ = 0D;
    8653  onChanged();
    8654  return this;
    8655  }
    8656 
    8657  private double randomBranchesRatio_ ;
    8667  public boolean hasRandomBranchesRatio() {
    8668  return ((bitField0_ & 0x00000010) != 0);
    8669  }
    8679  public double getRandomBranchesRatio() {
    8680  return randomBranchesRatio_;
    8681  }
    8691  public Builder setRandomBranchesRatio(double value) {
    8692  bitField0_ |= 0x00000010;
    8693  randomBranchesRatio_ = value;
    8694  onChanged();
    8695  return this;
    8696  }
    8707  bitField0_ = (bitField0_ & ~0x00000010);
    8708  randomBranchesRatio_ = 0D;
    8709  onChanged();
    8710  return this;
    8711  }
    8712 
    8713  private boolean useErwaHeuristic_ ;
    8723  public boolean hasUseErwaHeuristic() {
    8724  return ((bitField0_ & 0x00000020) != 0);
    8725  }
    8735  public boolean getUseErwaHeuristic() {
    8736  return useErwaHeuristic_;
    8737  }
    8747  public Builder setUseErwaHeuristic(boolean value) {
    8748  bitField0_ |= 0x00000020;
    8749  useErwaHeuristic_ = value;
    8750  onChanged();
    8751  return this;
    8752  }
    8763  bitField0_ = (bitField0_ & ~0x00000020);
    8764  useErwaHeuristic_ = false;
    8765  onChanged();
    8766  return this;
    8767  }
    8768 
    8769  private double initialVariablesActivity_ ;
    8782  public boolean hasInitialVariablesActivity() {
    8783  return ((bitField0_ & 0x00000040) != 0);
    8784  }
    8798  return initialVariablesActivity_;
    8799  }
    8812  public Builder setInitialVariablesActivity(double value) {
    8813  bitField0_ |= 0x00000040;
    8814  initialVariablesActivity_ = value;
    8815  onChanged();
    8816  return this;
    8817  }
    8831  bitField0_ = (bitField0_ & ~0x00000040);
    8832  initialVariablesActivity_ = 0D;
    8833  onChanged();
    8834  return this;
    8835  }
    8836 
    8837  private boolean alsoBumpVariablesInConflictReasons_ ;
    8849  return ((bitField0_ & 0x00000080) != 0);
    8850  }
    8862  return alsoBumpVariablesInConflictReasons_;
    8863  }
    8875  bitField0_ |= 0x00000080;
    8876  alsoBumpVariablesInConflictReasons_ = value;
    8877  onChanged();
    8878  return this;
    8879  }
    8891  bitField0_ = (bitField0_ & ~0x00000080);
    8892  alsoBumpVariablesInConflictReasons_ = false;
    8893  onChanged();
    8894  return this;
    8895  }
    8896 
    8897  private int minimizationAlgorithm_ = 2;
    8901  public boolean hasMinimizationAlgorithm() {
    8902  return ((bitField0_ & 0x00000100) != 0);
    8903  }
    8908  @SuppressWarnings("deprecation")
    8910  return result == null ? com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.RECURSIVE : result;
    8911  }
    8916  if (value == null) {
    8917  throw new NullPointerException();
    8918  }
    8919  bitField0_ |= 0x00000100;
    8920  minimizationAlgorithm_ = value.getNumber();
    8921  onChanged();
    8922  return this;
    8923  }
    8928  bitField0_ = (bitField0_ & ~0x00000100);
    8929  minimizationAlgorithm_ = 2;
    8930  onChanged();
    8931  return this;
    8932  }
    8933 
    8934  private int binaryMinimizationAlgorithm_ = 1;
    8939  return ((bitField0_ & 0x00000200) != 0);
    8940  }
    8945  @SuppressWarnings("deprecation")
    8948  }
    8953  if (value == null) {
    8954  throw new NullPointerException();
    8955  }
    8956  bitField0_ |= 0x00000200;
    8957  binaryMinimizationAlgorithm_ = value.getNumber();
    8958  onChanged();
    8959  return this;
    8960  }
    8965  bitField0_ = (bitField0_ & ~0x00000200);
    8966  binaryMinimizationAlgorithm_ = 1;
    8967  onChanged();
    8968  return this;
    8969  }
    8970 
    8971  private boolean subsumptionDuringConflictAnalysis_ = true;
    8983  return ((bitField0_ & 0x00000400) != 0);
    8984  }
    8996  return subsumptionDuringConflictAnalysis_;
    8997  }
    9009  bitField0_ |= 0x00000400;
    9010  subsumptionDuringConflictAnalysis_ = value;
    9011  onChanged();
    9012  return this;
    9013  }
    9025  bitField0_ = (bitField0_ & ~0x00000400);
    9026  subsumptionDuringConflictAnalysis_ = true;
    9027  onChanged();
    9028  return this;
    9029  }
    9030 
    9031  private int clauseCleanupPeriod_ = 10000;
    9039  public boolean hasClauseCleanupPeriod() {
    9040  return ((bitField0_ & 0x00000800) != 0);
    9041  }
    9049  public int getClauseCleanupPeriod() {
    9050  return clauseCleanupPeriod_;
    9051  }
    9059  public Builder setClauseCleanupPeriod(int value) {
    9060  bitField0_ |= 0x00000800;
    9061  clauseCleanupPeriod_ = value;
    9062  onChanged();
    9063  return this;
    9064  }
    9073  bitField0_ = (bitField0_ & ~0x00000800);
    9074  clauseCleanupPeriod_ = 10000;
    9075  onChanged();
    9076  return this;
    9077  }
    9078 
    9079  private int clauseCleanupTarget_ = 10000;
    9088  public boolean hasClauseCleanupTarget() {
    9089  return ((bitField0_ & 0x00001000) != 0);
    9090  }
    9099  public int getClauseCleanupTarget() {
    9100  return clauseCleanupTarget_;
    9101  }
    9110  public Builder setClauseCleanupTarget(int value) {
    9111  bitField0_ |= 0x00001000;
    9112  clauseCleanupTarget_ = value;
    9113  onChanged();
    9114  return this;
    9115  }
    9125  bitField0_ = (bitField0_ & ~0x00001000);
    9126  clauseCleanupTarget_ = 10000;
    9127  onChanged();
    9128  return this;
    9129  }
    9130 
    9131  private int clauseCleanupProtection_ = 0;
    9135  public boolean hasClauseCleanupProtection() {
    9136  return ((bitField0_ & 0x00002000) != 0);
    9137  }
    9142  @SuppressWarnings("deprecation")
    9144  return result == null ? com.google.ortools.sat.SatParameters.ClauseProtection.PROTECTION_NONE : result;
    9145  }
    9150  if (value == null) {
    9151  throw new NullPointerException();
    9152  }
    9153  bitField0_ |= 0x00002000;
    9154  clauseCleanupProtection_ = value.getNumber();
    9155  onChanged();
    9156  return this;
    9157  }
    9162  bitField0_ = (bitField0_ & ~0x00002000);
    9163  clauseCleanupProtection_ = 0;
    9164  onChanged();
    9165  return this;
    9166  }
    9167 
    9168  private int clauseCleanupLbdBound_ = 5;
    9177  public boolean hasClauseCleanupLbdBound() {
    9178  return ((bitField0_ & 0x00004000) != 0);
    9179  }
    9189  return clauseCleanupLbdBound_;
    9190  }
    9199  public Builder setClauseCleanupLbdBound(int value) {
    9200  bitField0_ |= 0x00004000;
    9201  clauseCleanupLbdBound_ = value;
    9202  onChanged();
    9203  return this;
    9204  }
    9214  bitField0_ = (bitField0_ & ~0x00004000);
    9215  clauseCleanupLbdBound_ = 5;
    9216  onChanged();
    9217  return this;
    9218  }
    9219 
    9220  private int clauseCleanupOrdering_ = 0;
    9224  public boolean hasClauseCleanupOrdering() {
    9225  return ((bitField0_ & 0x00008000) != 0);
    9226  }
    9231  @SuppressWarnings("deprecation")
    9233  return result == null ? com.google.ortools.sat.SatParameters.ClauseOrdering.CLAUSE_ACTIVITY : result;
    9234  }
    9239  if (value == null) {
    9240  throw new NullPointerException();
    9241  }
    9242  bitField0_ |= 0x00008000;
    9243  clauseCleanupOrdering_ = value.getNumber();
    9244  onChanged();
    9245  return this;
    9246  }
    9251  bitField0_ = (bitField0_ & ~0x00008000);
    9252  clauseCleanupOrdering_ = 0;
    9253  onChanged();
    9254  return this;
    9255  }
    9256 
    9257  private int pbCleanupIncrement_ = 200;
    9265  public boolean hasPbCleanupIncrement() {
    9266  return ((bitField0_ & 0x00010000) != 0);
    9267  }
    9275  public int getPbCleanupIncrement() {
    9276  return pbCleanupIncrement_;
    9277  }
    9285  public Builder setPbCleanupIncrement(int value) {
    9286  bitField0_ |= 0x00010000;
    9287  pbCleanupIncrement_ = value;
    9288  onChanged();
    9289  return this;
    9290  }
    9299  bitField0_ = (bitField0_ & ~0x00010000);
    9300  pbCleanupIncrement_ = 200;
    9301  onChanged();
    9302  return this;
    9303  }
    9304 
    9305  private double pbCleanupRatio_ = 0.5D;
    9309  public boolean hasPbCleanupRatio() {
    9310  return ((bitField0_ & 0x00020000) != 0);
    9311  }
    9315  public double getPbCleanupRatio() {
    9316  return pbCleanupRatio_;
    9317  }
    9321  public Builder setPbCleanupRatio(double value) {
    9322  bitField0_ |= 0x00020000;
    9323  pbCleanupRatio_ = value;
    9324  onChanged();
    9325  return this;
    9326  }
    9331  bitField0_ = (bitField0_ & ~0x00020000);
    9332  pbCleanupRatio_ = 0.5D;
    9333  onChanged();
    9334  return this;
    9335  }
    9336 
    9337  private int minimizeWithPropagationRestartPeriod_ = 10;
    9356  return ((bitField0_ & 0x00040000) != 0);
    9357  }
    9376  return minimizeWithPropagationRestartPeriod_;
    9377  }
    9396  bitField0_ |= 0x00040000;
    9397  minimizeWithPropagationRestartPeriod_ = value;
    9398  onChanged();
    9399  return this;
    9400  }
    9419  bitField0_ = (bitField0_ & ~0x00040000);
    9420  minimizeWithPropagationRestartPeriod_ = 10;
    9421  onChanged();
    9422  return this;
    9423  }
    9424 
    9425  private int minimizeWithPropagationNumDecisions_ = 1000;
    9430  return ((bitField0_ & 0x00080000) != 0);
    9431  }
    9436  return minimizeWithPropagationNumDecisions_;
    9437  }
    9442  bitField0_ |= 0x00080000;
    9443  minimizeWithPropagationNumDecisions_ = value;
    9444  onChanged();
    9445  return this;
    9446  }
    9451  bitField0_ = (bitField0_ & ~0x00080000);
    9452  minimizeWithPropagationNumDecisions_ = 1000;
    9453  onChanged();
    9454  return this;
    9455  }
    9456 
    9457  private double variableActivityDecay_ = 0.8D;
    9471  public boolean hasVariableActivityDecay() {
    9472  return ((bitField0_ & 0x00100000) != 0);
    9473  }
    9487  public double getVariableActivityDecay() {
    9488  return variableActivityDecay_;
    9489  }
    9503  public Builder setVariableActivityDecay(double value) {
    9504  bitField0_ |= 0x00100000;
    9505  variableActivityDecay_ = value;
    9506  onChanged();
    9507  return this;
    9508  }
    9523  bitField0_ = (bitField0_ & ~0x00100000);
    9524  variableActivityDecay_ = 0.8D;
    9525  onChanged();
    9526  return this;
    9527  }
    9528 
    9529  private double maxVariableActivityValue_ = 1e+100D;
    9533  public boolean hasMaxVariableActivityValue() {
    9534  return ((bitField0_ & 0x00200000) != 0);
    9535  }
    9540  return maxVariableActivityValue_;
    9541  }
    9545  public Builder setMaxVariableActivityValue(double value) {
    9546  bitField0_ |= 0x00200000;
    9547  maxVariableActivityValue_ = value;
    9548  onChanged();
    9549  return this;
    9550  }
    9555  bitField0_ = (bitField0_ & ~0x00200000);
    9556  maxVariableActivityValue_ = 1e+100D;
    9557  onChanged();
    9558  return this;
    9559  }
    9560 
    9561  private double glucoseMaxDecay_ = 0.95D;
    9572  public boolean hasGlucoseMaxDecay() {
    9573  return ((bitField0_ & 0x00400000) != 0);
    9574  }
    9585  public double getGlucoseMaxDecay() {
    9586  return glucoseMaxDecay_;
    9587  }
    9598  public Builder setGlucoseMaxDecay(double value) {
    9599  bitField0_ |= 0x00400000;
    9600  glucoseMaxDecay_ = value;
    9601  onChanged();
    9602  return this;
    9603  }
    9615  bitField0_ = (bitField0_ & ~0x00400000);
    9616  glucoseMaxDecay_ = 0.95D;
    9617  onChanged();
    9618  return this;
    9619  }
    9620 
    9621  private double glucoseDecayIncrement_ = 0.01D;
    9625  public boolean hasGlucoseDecayIncrement() {
    9626  return ((bitField0_ & 0x00800000) != 0);
    9627  }
    9631  public double getGlucoseDecayIncrement() {
    9632  return glucoseDecayIncrement_;
    9633  }
    9637  public Builder setGlucoseDecayIncrement(double value) {
    9638  bitField0_ |= 0x00800000;
    9639  glucoseDecayIncrement_ = value;
    9640  onChanged();
    9641  return this;
    9642  }
    9647  bitField0_ = (bitField0_ & ~0x00800000);
    9648  glucoseDecayIncrement_ = 0.01D;
    9649  onChanged();
    9650  return this;
    9651  }
    9652 
    9653  private int glucoseDecayIncrementPeriod_ = 5000;
    9658  return ((bitField0_ & 0x01000000) != 0);
    9659  }
    9664  return glucoseDecayIncrementPeriod_;
    9665  }
    9670  bitField0_ |= 0x01000000;
    9671  glucoseDecayIncrementPeriod_ = value;
    9672  onChanged();
    9673  return this;
    9674  }
    9679  bitField0_ = (bitField0_ & ~0x01000000);
    9680  glucoseDecayIncrementPeriod_ = 5000;
    9681  onChanged();
    9682  return this;
    9683  }
    9684 
    9685  private double clauseActivityDecay_ = 0.999D;
    9693  public boolean hasClauseActivityDecay() {
    9694  return ((bitField0_ & 0x02000000) != 0);
    9695  }
    9703  public double getClauseActivityDecay() {
    9704  return clauseActivityDecay_;
    9705  }
    9713  public Builder setClauseActivityDecay(double value) {
    9714  bitField0_ |= 0x02000000;
    9715  clauseActivityDecay_ = value;
    9716  onChanged();
    9717  return this;
    9718  }
    9727  bitField0_ = (bitField0_ & ~0x02000000);
    9728  clauseActivityDecay_ = 0.999D;
    9729  onChanged();
    9730  return this;
    9731  }
    9732 
    9733  private double maxClauseActivityValue_ = 1e+20D;
    9737  public boolean hasMaxClauseActivityValue() {
    9738  return ((bitField0_ & 0x04000000) != 0);
    9739  }
    9743  public double getMaxClauseActivityValue() {
    9744  return maxClauseActivityValue_;
    9745  }
    9749  public Builder setMaxClauseActivityValue(double value) {
    9750  bitField0_ |= 0x04000000;
    9751  maxClauseActivityValue_ = value;
    9752  onChanged();
    9753  return this;
    9754  }
    9759  bitField0_ = (bitField0_ & ~0x04000000);
    9760  maxClauseActivityValue_ = 1e+20D;
    9761  onChanged();
    9762  return this;
    9763  }
    9764 
    9765  private java.util.List<java.lang.Integer> restartAlgorithms_ =
    9766  java.util.Collections.emptyList();
    9767  private void ensureRestartAlgorithmsIsMutable() {
    9768  if (!((bitField0_ & 0x08000000) != 0)) {
    9769  restartAlgorithms_ = new java.util.ArrayList<java.lang.Integer>(restartAlgorithms_);
    9770  bitField0_ |= 0x08000000;
    9771  }
    9772  }
    9788  return new com.google.protobuf.Internal.ListAdapter<
    9789  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>(restartAlgorithms_, restartAlgorithms_converter_);
    9790  }
    9806  return restartAlgorithms_.size();
    9807  }
    9823  return restartAlgorithms_converter_.convert(restartAlgorithms_.get(index));
    9824  }
    9840  int index, com.google.ortools.sat.SatParameters.RestartAlgorithm value) {
    9841  if (value == null) {
    9842  throw new NullPointerException();
    9843  }
    9844  ensureRestartAlgorithmsIsMutable();
    9845  restartAlgorithms_.set(index, value.getNumber());
    9846  onChanged();
    9847  return this;
    9848  }
    9864  if (value == null) {
    9865  throw new NullPointerException();
    9866  }
    9867  ensureRestartAlgorithmsIsMutable();
    9868  restartAlgorithms_.add(value.getNumber());
    9869  onChanged();
    9870  return this;
    9871  }
    9887  java.lang.Iterable<? extends com.google.ortools.sat.SatParameters.RestartAlgorithm> values) {
    9888  ensureRestartAlgorithmsIsMutable();
    9889  for (com.google.ortools.sat.SatParameters.RestartAlgorithm value : values) {
    9890  restartAlgorithms_.add(value.getNumber());
    9891  }
    9892  onChanged();
    9893  return this;
    9894  }
    9910  restartAlgorithms_ = java.util.Collections.emptyList();
    9911  bitField0_ = (bitField0_ & ~0x08000000);
    9912  onChanged();
    9913  return this;
    9914  }
    9915 
    9916  private java.lang.Object defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
    9920  public boolean hasDefaultRestartAlgorithms() {
    9921  return ((bitField0_ & 0x10000000) != 0);
    9922  }
    9926  public java.lang.String getDefaultRestartAlgorithms() {
    9927  java.lang.Object ref = defaultRestartAlgorithms_;
    9928  if (!(ref instanceof java.lang.String)) {
    9929  com.google.protobuf.ByteString bs =
    9930  (com.google.protobuf.ByteString) ref;
    9931  java.lang.String s = bs.toStringUtf8();
    9932  if (bs.isValidUtf8()) {
    9933  defaultRestartAlgorithms_ = s;
    9934  }
    9935  return s;
    9936  } else {
    9937  return (java.lang.String) ref;
    9938  }
    9939  }
    9943  public com.google.protobuf.ByteString
    9945  java.lang.Object ref = defaultRestartAlgorithms_;
    9946  if (ref instanceof String) {
    9947  com.google.protobuf.ByteString b =
    9948  com.google.protobuf.ByteString.copyFromUtf8(
    9949  (java.lang.String) ref);
    9950  defaultRestartAlgorithms_ = b;
    9951  return b;
    9952  } else {
    9953  return (com.google.protobuf.ByteString) ref;
    9954  }
    9955  }
    9960  java.lang.String value) {
    9961  if (value == null) {
    9962  throw new NullPointerException();
    9963  }
    9964  bitField0_ |= 0x10000000;
    9965  defaultRestartAlgorithms_ = value;
    9966  onChanged();
    9967  return this;
    9968  }
    9973  bitField0_ = (bitField0_ & ~0x10000000);
    9974  defaultRestartAlgorithms_ = getDefaultInstance().getDefaultRestartAlgorithms();
    9975  onChanged();
    9976  return this;
    9977  }
    9982  com.google.protobuf.ByteString value) {
    9983  if (value == null) {
    9984  throw new NullPointerException();
    9985  }
    9986  bitField0_ |= 0x10000000;
    9987  defaultRestartAlgorithms_ = value;
    9988  onChanged();
    9989  return this;
    9990  }
    9991 
    9992  private int restartPeriod_ = 50;
    10001  public boolean hasRestartPeriod() {
    10002  return ((bitField0_ & 0x20000000) != 0);
    10003  }
    10012  public int getRestartPeriod() {
    10013  return restartPeriod_;
    10014  }
    10023  public Builder setRestartPeriod(int value) {
    10024  bitField0_ |= 0x20000000;
    10025  restartPeriod_ = value;
    10026  onChanged();
    10027  return this;
    10028  }
    10038  bitField0_ = (bitField0_ & ~0x20000000);
    10039  restartPeriod_ = 50;
    10040  onChanged();
    10041  return this;
    10042  }
    10043 
    10044  private int restartRunningWindowSize_ = 50;
    10052  public boolean hasRestartRunningWindowSize() {
    10053  return ((bitField0_ & 0x40000000) != 0);
    10054  }
    10063  return restartRunningWindowSize_;
    10064  }
    10073  bitField0_ |= 0x40000000;
    10074  restartRunningWindowSize_ = value;
    10075  onChanged();
    10076  return this;
    10077  }
    10086  bitField0_ = (bitField0_ & ~0x40000000);
    10087  restartRunningWindowSize_ = 50;
    10088  onChanged();
    10089  return this;
    10090  }
    10091 
    10092  private double restartDlAverageRatio_ = 1D;
    10101  public boolean hasRestartDlAverageRatio() {
    10102  return ((bitField0_ & 0x80000000) != 0);
    10103  }
    10112  public double getRestartDlAverageRatio() {
    10113  return restartDlAverageRatio_;
    10114  }
    10123  public Builder setRestartDlAverageRatio(double value) {
    10124  bitField0_ |= 0x80000000;
    10125  restartDlAverageRatio_ = value;
    10126  onChanged();
    10127  return this;
    10128  }
    10138  bitField0_ = (bitField0_ & ~0x80000000);
    10139  restartDlAverageRatio_ = 1D;
    10140  onChanged();
    10141  return this;
    10142  }
    10143 
    10144  private double restartLbdAverageRatio_ = 1D;
    10148  public boolean hasRestartLbdAverageRatio() {
    10149  return ((bitField1_ & 0x00000001) != 0);
    10150  }
    10154  public double getRestartLbdAverageRatio() {
    10155  return restartLbdAverageRatio_;
    10156  }
    10160  public Builder setRestartLbdAverageRatio(double value) {
    10161  bitField1_ |= 0x00000001;
    10162  restartLbdAverageRatio_ = value;
    10163  onChanged();
    10164  return this;
    10165  }
    10170  bitField1_ = (bitField1_ & ~0x00000001);
    10171  restartLbdAverageRatio_ = 1D;
    10172  onChanged();
    10173  return this;
    10174  }
    10175 
    10176  private boolean useBlockingRestart_ ;
    10186  public boolean hasUseBlockingRestart() {
    10187  return ((bitField1_ & 0x00000002) != 0);
    10188  }
    10198  public boolean getUseBlockingRestart() {
    10199  return useBlockingRestart_;
    10200  }
    10210  public Builder setUseBlockingRestart(boolean value) {
    10211  bitField1_ |= 0x00000002;
    10212  useBlockingRestart_ = value;
    10213  onChanged();
    10214  return this;
    10215  }
    10226  bitField1_ = (bitField1_ & ~0x00000002);
    10227  useBlockingRestart_ = false;
    10228  onChanged();
    10229  return this;
    10230  }
    10231 
    10232  private int blockingRestartWindowSize_ = 5000;
    10236  public boolean hasBlockingRestartWindowSize() {
    10237  return ((bitField1_ & 0x00000004) != 0);
    10238  }
    10243  return blockingRestartWindowSize_;
    10244  }
    10249  bitField1_ |= 0x00000004;
    10250  blockingRestartWindowSize_ = value;
    10251  onChanged();
    10252  return this;
    10253  }
    10258  bitField1_ = (bitField1_ & ~0x00000004);
    10259  blockingRestartWindowSize_ = 5000;
    10260  onChanged();
    10261  return this;
    10262  }
    10263 
    10264  private double blockingRestartMultiplier_ = 1.4D;
    10268  public boolean hasBlockingRestartMultiplier() {
    10269  return ((bitField1_ & 0x00000008) != 0);
    10270  }
    10275  return blockingRestartMultiplier_;
    10276  }
    10280  public Builder setBlockingRestartMultiplier(double value) {
    10281  bitField1_ |= 0x00000008;
    10282  blockingRestartMultiplier_ = value;
    10283  onChanged();
    10284  return this;
    10285  }
    10290  bitField1_ = (bitField1_ & ~0x00000008);
    10291  blockingRestartMultiplier_ = 1.4D;
    10292  onChanged();
    10293  return this;
    10294  }
    10295 
    10296  private int numConflictsBeforeStrategyChanges_ ;
    10307  return ((bitField1_ & 0x00000010) != 0);
    10308  }
    10319  return numConflictsBeforeStrategyChanges_;
    10320  }
    10331  bitField1_ |= 0x00000010;
    10332  numConflictsBeforeStrategyChanges_ = value;
    10333  onChanged();
    10334  return this;
    10335  }
    10346  bitField1_ = (bitField1_ & ~0x00000010);
    10347  numConflictsBeforeStrategyChanges_ = 0;
    10348  onChanged();
    10349  return this;
    10350  }
    10351 
    10352  private double strategyChangeIncreaseRatio_ ;
    10362  return ((bitField1_ & 0x00000020) != 0);
    10363  }
    10373  return strategyChangeIncreaseRatio_;
    10374  }
    10384  bitField1_ |= 0x00000020;
    10385  strategyChangeIncreaseRatio_ = value;
    10386  onChanged();
    10387  return this;
    10388  }
    10398  bitField1_ = (bitField1_ & ~0x00000020);
    10399  strategyChangeIncreaseRatio_ = 0D;
    10400  onChanged();
    10401  return this;
    10402  }
    10403 
    10404  private double maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    10414  public boolean hasMaxTimeInSeconds() {
    10415  return ((bitField1_ & 0x00000040) != 0);
    10416  }
    10426  public double getMaxTimeInSeconds() {
    10427  return maxTimeInSeconds_;
    10428  }
    10438  public Builder setMaxTimeInSeconds(double value) {
    10439  bitField1_ |= 0x00000040;
    10440  maxTimeInSeconds_ = value;
    10441  onChanged();
    10442  return this;
    10443  }
    10454  bitField1_ = (bitField1_ & ~0x00000040);
    10455  maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    10456  onChanged();
    10457  return this;
    10458  }
    10459 
    10460  private double maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    10472  public boolean hasMaxDeterministicTime() {
    10473  return ((bitField1_ & 0x00000080) != 0);
    10474  }
    10486  public double getMaxDeterministicTime() {
    10487  return maxDeterministicTime_;
    10488  }
    10500  public Builder setMaxDeterministicTime(double value) {
    10501  bitField1_ |= 0x00000080;
    10502  maxDeterministicTime_ = value;
    10503  onChanged();
    10504  return this;
    10505  }
    10518  bitField1_ = (bitField1_ & ~0x00000080);
    10519  maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    10520  onChanged();
    10521  return this;
    10522  }
    10523 
    10524  private long maxNumberOfConflicts_ = 9223372036854775807L;
    10537  public boolean hasMaxNumberOfConflicts() {
    10538  return ((bitField1_ & 0x00000100) != 0);
    10539  }
    10552  public long getMaxNumberOfConflicts() {
    10553  return maxNumberOfConflicts_;
    10554  }
    10567  public Builder setMaxNumberOfConflicts(long value) {
    10568  bitField1_ |= 0x00000100;
    10569  maxNumberOfConflicts_ = value;
    10570  onChanged();
    10571  return this;
    10572  }
    10586  bitField1_ = (bitField1_ & ~0x00000100);
    10587  maxNumberOfConflicts_ = 9223372036854775807L;
    10588  onChanged();
    10589  return this;
    10590  }
    10591 
    10592  private long maxMemoryInMb_ = 10000L;
    10603  public boolean hasMaxMemoryInMb() {
    10604  return ((bitField1_ & 0x00000200) != 0);
    10605  }
    10616  public long getMaxMemoryInMb() {
    10617  return maxMemoryInMb_;
    10618  }
    10629  public Builder setMaxMemoryInMb(long value) {
    10630  bitField1_ |= 0x00000200;
    10631  maxMemoryInMb_ = value;
    10632  onChanged();
    10633  return this;
    10634  }
    10646  bitField1_ = (bitField1_ & ~0x00000200);
    10647  maxMemoryInMb_ = 10000L;
    10648  onChanged();
    10649  return this;
    10650  }
    10651 
    10652  private boolean treatBinaryClausesSeparately_ = true;
    10663  return ((bitField1_ & 0x00000400) != 0);
    10664  }
    10675  return treatBinaryClausesSeparately_;
    10676  }
    10687  bitField1_ |= 0x00000400;
    10688  treatBinaryClausesSeparately_ = value;
    10689  onChanged();
    10690  return this;
    10691  }
    10702  bitField1_ = (bitField1_ & ~0x00000400);
    10703  treatBinaryClausesSeparately_ = true;
    10704  onChanged();
    10705  return this;
    10706  }
    10707 
    10708  private int randomSeed_ = 1;
    10721  public boolean hasRandomSeed() {
    10722  return ((bitField1_ & 0x00000800) != 0);
    10723  }
    10736  public int getRandomSeed() {
    10737  return randomSeed_;
    10738  }
    10751  public Builder setRandomSeed(int value) {
    10752  bitField1_ |= 0x00000800;
    10753  randomSeed_ = value;
    10754  onChanged();
    10755  return this;
    10756  }
    10770  bitField1_ = (bitField1_ & ~0x00000800);
    10771  randomSeed_ = 1;
    10772  onChanged();
    10773  return this;
    10774  }
    10775 
    10776  private boolean logSearchProgress_ ;
    10784  public boolean hasLogSearchProgress() {
    10785  return ((bitField1_ & 0x00001000) != 0);
    10786  }
    10794  public boolean getLogSearchProgress() {
    10795  return logSearchProgress_;
    10796  }
    10804  public Builder setLogSearchProgress(boolean value) {
    10805  bitField1_ |= 0x00001000;
    10806  logSearchProgress_ = value;
    10807  onChanged();
    10808  return this;
    10809  }
    10818  bitField1_ = (bitField1_ & ~0x00001000);
    10819  logSearchProgress_ = false;
    10820  onChanged();
    10821  return this;
    10822  }
    10823 
    10824  private boolean usePbResolution_ ;
    10835  public boolean hasUsePbResolution() {
    10836  return ((bitField1_ & 0x00002000) != 0);
    10837  }
    10848  public boolean getUsePbResolution() {
    10849  return usePbResolution_;
    10850  }
    10861  public Builder setUsePbResolution(boolean value) {
    10862  bitField1_ |= 0x00002000;
    10863  usePbResolution_ = value;
    10864  onChanged();
    10865  return this;
    10866  }
    10878  bitField1_ = (bitField1_ & ~0x00002000);
    10879  usePbResolution_ = false;
    10880  onChanged();
    10881  return this;
    10882  }
    10883 
    10884  private boolean minimizeReductionDuringPbResolution_ ;
    10896  return ((bitField1_ & 0x00004000) != 0);
    10897  }
    10909  return minimizeReductionDuringPbResolution_;
    10910  }
    10922  bitField1_ |= 0x00004000;
    10923  minimizeReductionDuringPbResolution_ = value;
    10924  onChanged();
    10925  return this;
    10926  }
    10938  bitField1_ = (bitField1_ & ~0x00004000);
    10939  minimizeReductionDuringPbResolution_ = false;
    10940  onChanged();
    10941  return this;
    10942  }
    10943 
    10944  private boolean countAssumptionLevelsInLbd_ = true;
    10960  return ((bitField1_ & 0x00008000) != 0);
    10961  }
    10977  return countAssumptionLevelsInLbd_;
    10978  }
    10993  public Builder setCountAssumptionLevelsInLbd(boolean value) {
    10994  bitField1_ |= 0x00008000;
    10995  countAssumptionLevelsInLbd_ = value;
    10996  onChanged();
    10997  return this;
    10998  }
    11014  bitField1_ = (bitField1_ & ~0x00008000);
    11015  countAssumptionLevelsInLbd_ = true;
    11016  onChanged();
    11017  return this;
    11018  }
    11019 
    11020  private int presolveBveThreshold_ = 500;
    11030  public boolean hasPresolveBveThreshold() {
    11031  return ((bitField1_ & 0x00010000) != 0);
    11032  }
    11043  return presolveBveThreshold_;
    11044  }
    11054  public Builder setPresolveBveThreshold(int value) {
    11055  bitField1_ |= 0x00010000;
    11056  presolveBveThreshold_ = value;
    11057  onChanged();
    11058  return this;
    11059  }
    11070  bitField1_ = (bitField1_ & ~0x00010000);
    11071  presolveBveThreshold_ = 500;
    11072  onChanged();
    11073  return this;
    11074  }
    11075 
    11076  private int presolveBveClauseWeight_ = 3;
    11085  public boolean hasPresolveBveClauseWeight() {
    11086  return ((bitField1_ & 0x00020000) != 0);
    11087  }
    11097  return presolveBveClauseWeight_;
    11098  }
    11108  bitField1_ |= 0x00020000;
    11109  presolveBveClauseWeight_ = value;
    11110  onChanged();
    11111  return this;
    11112  }
    11122  bitField1_ = (bitField1_ & ~0x00020000);
    11123  presolveBveClauseWeight_ = 3;
    11124  onChanged();
    11125  return this;
    11126  }
    11127 
    11128  private double presolveProbingDeterministicTimeLimit_ = 30D;
    11138  return ((bitField1_ & 0x00040000) != 0);
    11139  }
    11149  return presolveProbingDeterministicTimeLimit_;
    11150  }
    11160  bitField1_ |= 0x00040000;
    11161  presolveProbingDeterministicTimeLimit_ = value;
    11162  onChanged();
    11163  return this;
    11164  }
    11174  bitField1_ = (bitField1_ & ~0x00040000);
    11175  presolveProbingDeterministicTimeLimit_ = 30D;
    11176  onChanged();
    11177  return this;
    11178  }
    11179 
    11180  private boolean presolveBlockedClause_ = true;
    11189  public boolean hasPresolveBlockedClause() {
    11190  return ((bitField1_ & 0x00080000) != 0);
    11191  }
    11200  public boolean getPresolveBlockedClause() {
    11201  return presolveBlockedClause_;
    11202  }
    11211  public Builder setPresolveBlockedClause(boolean value) {
    11212  bitField1_ |= 0x00080000;
    11213  presolveBlockedClause_ = value;
    11214  onChanged();
    11215  return this;
    11216  }
    11226  bitField1_ = (bitField1_ & ~0x00080000);
    11227  presolveBlockedClause_ = true;
    11228  onChanged();
    11229  return this;
    11230  }
    11231 
    11232  private boolean presolveUseBva_ = true;
    11240  public boolean hasPresolveUseBva() {
    11241  return ((bitField1_ & 0x00100000) != 0);
    11242  }
    11250  public boolean getPresolveUseBva() {
    11251  return presolveUseBva_;
    11252  }
    11260  public Builder setPresolveUseBva(boolean value) {
    11261  bitField1_ |= 0x00100000;
    11262  presolveUseBva_ = value;
    11263  onChanged();
    11264  return this;
    11265  }
    11274  bitField1_ = (bitField1_ & ~0x00100000);
    11275  presolveUseBva_ = true;
    11276  onChanged();
    11277  return this;
    11278  }
    11279 
    11280  private int presolveBvaThreshold_ = 1;
    11291  public boolean hasPresolveBvaThreshold() {
    11292  return ((bitField1_ & 0x00200000) != 0);
    11293  }
    11305  return presolveBvaThreshold_;
    11306  }
    11317  public Builder setPresolveBvaThreshold(int value) {
    11318  bitField1_ |= 0x00200000;
    11319  presolveBvaThreshold_ = value;
    11320  onChanged();
    11321  return this;
    11322  }
    11334  bitField1_ = (bitField1_ & ~0x00200000);
    11335  presolveBvaThreshold_ = 1;
    11336  onChanged();
    11337  return this;
    11338  }
    11339 
    11340  private boolean useOptimizationHints_ = true;
    11351  public boolean hasUseOptimizationHints() {
    11352  return ((bitField1_ & 0x00400000) != 0);
    11353  }
    11364  public boolean getUseOptimizationHints() {
    11365  return useOptimizationHints_;
    11366  }
    11377  public Builder setUseOptimizationHints(boolean value) {
    11378  bitField1_ |= 0x00400000;
    11379  useOptimizationHints_ = value;
    11380  onChanged();
    11381  return this;
    11382  }
    11394  bitField1_ = (bitField1_ & ~0x00400000);
    11395  useOptimizationHints_ = true;
    11396  onChanged();
    11397  return this;
    11398  }
    11399 
    11400  private boolean minimizeCore_ = true;
    11408  public boolean hasMinimizeCore() {
    11409  return ((bitField1_ & 0x00800000) != 0);
    11410  }
    11418  public boolean getMinimizeCore() {
    11419  return minimizeCore_;
    11420  }
    11428  public Builder setMinimizeCore(boolean value) {
    11429  bitField1_ |= 0x00800000;
    11430  minimizeCore_ = value;
    11431  onChanged();
    11432  return this;
    11433  }
    11442  bitField1_ = (bitField1_ & ~0x00800000);
    11443  minimizeCore_ = true;
    11444  onChanged();
    11445  return this;
    11446  }
    11447 
    11448  private boolean findMultipleCores_ = true;
    11457  public boolean hasFindMultipleCores() {
    11458  return ((bitField1_ & 0x01000000) != 0);
    11459  }
    11468  public boolean getFindMultipleCores() {
    11469  return findMultipleCores_;
    11470  }
    11479  public Builder setFindMultipleCores(boolean value) {
    11480  bitField1_ |= 0x01000000;
    11481  findMultipleCores_ = value;
    11482  onChanged();
    11483  return this;
    11484  }
    11494  bitField1_ = (bitField1_ & ~0x01000000);
    11495  findMultipleCores_ = true;
    11496  onChanged();
    11497  return this;
    11498  }
    11499 
    11500  private boolean coverOptimization_ = true;
    11509  public boolean hasCoverOptimization() {
    11510  return ((bitField1_ & 0x02000000) != 0);
    11511  }
    11520  public boolean getCoverOptimization() {
    11521  return coverOptimization_;
    11522  }
    11531  public Builder setCoverOptimization(boolean value) {
    11532  bitField1_ |= 0x02000000;
    11533  coverOptimization_ = value;
    11534  onChanged();
    11535  return this;
    11536  }
    11546  bitField1_ = (bitField1_ & ~0x02000000);
    11547  coverOptimization_ = true;
    11548  onChanged();
    11549  return this;
    11550  }
    11551 
    11552  private int maxSatAssumptionOrder_ = 0;
    11556  public boolean hasMaxSatAssumptionOrder() {
    11557  return ((bitField1_ & 0x04000000) != 0);
    11558  }
    11563  @SuppressWarnings("deprecation")
    11566  }
    11571  if (value == null) {
    11572  throw new NullPointerException();
    11573  }
    11574  bitField1_ |= 0x04000000;
    11575  maxSatAssumptionOrder_ = value.getNumber();
    11576  onChanged();
    11577  return this;
    11578  }
    11583  bitField1_ = (bitField1_ & ~0x04000000);
    11584  maxSatAssumptionOrder_ = 0;
    11585  onChanged();
    11586  return this;
    11587  }
    11588 
    11589  private boolean maxSatReverseAssumptionOrder_ ;
    11599  return ((bitField1_ & 0x08000000) != 0);
    11600  }
    11610  return maxSatReverseAssumptionOrder_;
    11611  }
    11621  bitField1_ |= 0x08000000;
    11622  maxSatReverseAssumptionOrder_ = value;
    11623  onChanged();
    11624  return this;
    11625  }
    11635  bitField1_ = (bitField1_ & ~0x08000000);
    11636  maxSatReverseAssumptionOrder_ = false;
    11637  onChanged();
    11638  return this;
    11639  }
    11640 
    11641  private int maxSatStratification_ = 1;
    11645  public boolean hasMaxSatStratification() {
    11646  return ((bitField1_ & 0x10000000) != 0);
    11647  }
    11652  @SuppressWarnings("deprecation")
    11655  }
    11660  if (value == null) {
    11661  throw new NullPointerException();
    11662  }
    11663  bitField1_ |= 0x10000000;
    11664  maxSatStratification_ = value.getNumber();
    11665  onChanged();
    11666  return this;
    11667  }
    11672  bitField1_ = (bitField1_ & ~0x10000000);
    11673  maxSatStratification_ = 1;
    11674  onChanged();
    11675  return this;
    11676  }
    11677 
    11678  private boolean usePrecedencesInDisjunctiveConstraint_ = true;
    11694  return ((bitField1_ & 0x20000000) != 0);
    11695  }
    11711  return usePrecedencesInDisjunctiveConstraint_;
    11712  }
    11728  bitField1_ |= 0x20000000;
    11729  usePrecedencesInDisjunctiveConstraint_ = value;
    11730  onChanged();
    11731  return this;
    11732  }
    11748  bitField1_ = (bitField1_ & ~0x20000000);
    11749  usePrecedencesInDisjunctiveConstraint_ = true;
    11750  onChanged();
    11751  return this;
    11752  }
    11753 
    11754  private boolean useOverloadCheckerInCumulativeConstraint_ ;
    11768  return ((bitField1_ & 0x40000000) != 0);
    11769  }
    11783  return useOverloadCheckerInCumulativeConstraint_;
    11784  }
    11798  bitField1_ |= 0x40000000;
    11799  useOverloadCheckerInCumulativeConstraint_ = value;
    11800  onChanged();
    11801  return this;
    11802  }
    11816  bitField1_ = (bitField1_ & ~0x40000000);
    11817  useOverloadCheckerInCumulativeConstraint_ = false;
    11818  onChanged();
    11819  return this;
    11820  }
    11821 
    11822  private boolean useTimetableEdgeFindingInCumulativeConstraint_ ;
    11836  return ((bitField1_ & 0x80000000) != 0);
    11837  }
    11851  return useTimetableEdgeFindingInCumulativeConstraint_;
    11852  }
    11866  bitField1_ |= 0x80000000;
    11867  useTimetableEdgeFindingInCumulativeConstraint_ = value;
    11868  onChanged();
    11869  return this;
    11870  }
    11884  bitField1_ = (bitField1_ & ~0x80000000);
    11885  useTimetableEdgeFindingInCumulativeConstraint_ = false;
    11886  onChanged();
    11887  return this;
    11888  }
    11889 
    11890  private boolean useDisjunctiveConstraintInCumulativeConstraint_ = true;
    11906  return ((bitField2_ & 0x00000001) != 0);
    11907  }
    11923  return useDisjunctiveConstraintInCumulativeConstraint_;
    11924  }
    11940  bitField2_ |= 0x00000001;
    11941  useDisjunctiveConstraintInCumulativeConstraint_ = value;
    11942  onChanged();
    11943  return this;
    11944  }
    11960  bitField2_ = (bitField2_ & ~0x00000001);
    11961  useDisjunctiveConstraintInCumulativeConstraint_ = true;
    11962  onChanged();
    11963  return this;
    11964  }
    11965 
    11966  private int linearizationLevel_ = 1;
    11977  public boolean hasLinearizationLevel() {
    11978  return ((bitField2_ & 0x00000002) != 0);
    11979  }
    11990  public int getLinearizationLevel() {
    11991  return linearizationLevel_;
    11992  }
    12003  public Builder setLinearizationLevel(int value) {
    12004  bitField2_ |= 0x00000002;
    12005  linearizationLevel_ = value;
    12006  onChanged();
    12007  return this;
    12008  }
    12020  bitField2_ = (bitField2_ & ~0x00000002);
    12021  linearizationLevel_ = 1;
    12022  onChanged();
    12023  return this;
    12024  }
    12025 
    12026  private int booleanEncodingLevel_ = 1;
    12035  public boolean hasBooleanEncodingLevel() {
    12036  return ((bitField2_ & 0x00000004) != 0);
    12037  }
    12047  return booleanEncodingLevel_;
    12048  }
    12057  public Builder setBooleanEncodingLevel(int value) {
    12058  bitField2_ |= 0x00000004;
    12059  booleanEncodingLevel_ = value;
    12060  onChanged();
    12061  return this;
    12062  }
    12072  bitField2_ = (bitField2_ & ~0x00000004);
    12073  booleanEncodingLevel_ = 1;
    12074  onChanged();
    12075  return this;
    12076  }
    12077 
    12078  private int maxNumCuts_ = 1000;
    12087  public boolean hasMaxNumCuts() {
    12088  return ((bitField2_ & 0x00000008) != 0);
    12089  }
    12098  public int getMaxNumCuts() {
    12099  return maxNumCuts_;
    12100  }
    12109  public Builder setMaxNumCuts(int value) {
    12110  bitField2_ |= 0x00000008;
    12111  maxNumCuts_ = value;
    12112  onChanged();
    12113  return this;
    12114  }
    12124  bitField2_ = (bitField2_ & ~0x00000008);
    12125  maxNumCuts_ = 1000;
    12126  onChanged();
    12127  return this;
    12128  }
    12129 
    12130  private boolean onlyAddCutsAtLevelZero_ ;
    12139  public boolean hasOnlyAddCutsAtLevelZero() {
    12140  return ((bitField2_ & 0x00000010) != 0);
    12141  }
    12150  public boolean getOnlyAddCutsAtLevelZero() {
    12151  return onlyAddCutsAtLevelZero_;
    12152  }
    12161  public Builder setOnlyAddCutsAtLevelZero(boolean value) {
    12162  bitField2_ |= 0x00000010;
    12163  onlyAddCutsAtLevelZero_ = value;
    12164  onChanged();
    12165  return this;
    12166  }
    12176  bitField2_ = (bitField2_ & ~0x00000010);
    12177  onlyAddCutsAtLevelZero_ = false;
    12178  onChanged();
    12179  return this;
    12180  }
    12181 
    12182  private boolean addKnapsackCuts_ ;
    12192  public boolean hasAddKnapsackCuts() {
    12193  return ((bitField2_ & 0x00000020) != 0);
    12194  }
    12204  public boolean getAddKnapsackCuts() {
    12205  return addKnapsackCuts_;
    12206  }
    12216  public Builder setAddKnapsackCuts(boolean value) {
    12217  bitField2_ |= 0x00000020;
    12218  addKnapsackCuts_ = value;
    12219  onChanged();
    12220  return this;
    12221  }
    12232  bitField2_ = (bitField2_ & ~0x00000020);
    12233  addKnapsackCuts_ = false;
    12234  onChanged();
    12235  return this;
    12236  }
    12237 
    12238  private boolean addCgCuts_ ;
    12247  public boolean hasAddCgCuts() {
    12248  return ((bitField2_ & 0x00000040) != 0);
    12249  }
    12258  public boolean getAddCgCuts() {
    12259  return addCgCuts_;
    12260  }
    12269  public Builder setAddCgCuts(boolean value) {
    12270  bitField2_ |= 0x00000040;
    12271  addCgCuts_ = value;
    12272  onChanged();
    12273  return this;
    12274  }
    12284  bitField2_ = (bitField2_ & ~0x00000040);
    12285  addCgCuts_ = false;
    12286  onChanged();
    12287  return this;
    12288  }
    12289 
    12290  private boolean addMirCuts_ = true;
    12299  public boolean hasAddMirCuts() {
    12300  return ((bitField2_ & 0x00000080) != 0);
    12301  }
    12310  public boolean getAddMirCuts() {
    12311  return addMirCuts_;
    12312  }
    12321  public Builder setAddMirCuts(boolean value) {
    12322  bitField2_ |= 0x00000080;
    12323  addMirCuts_ = value;
    12324  onChanged();
    12325  return this;
    12326  }
    12336  bitField2_ = (bitField2_ & ~0x00000080);
    12337  addMirCuts_ = true;
    12338  onChanged();
    12339  return this;
    12340  }
    12341 
    12342  private boolean useMirRounding_ = true;
    12352  public boolean hasUseMirRounding() {
    12353  return ((bitField2_ & 0x00000100) != 0);
    12354  }
    12364  public boolean getUseMirRounding() {
    12365  return useMirRounding_;
    12366  }
    12376  public Builder setUseMirRounding(boolean value) {
    12377  bitField2_ |= 0x00000100;
    12378  useMirRounding_ = value;
    12379  onChanged();
    12380  return this;
    12381  }
    12392  bitField2_ = (bitField2_ & ~0x00000100);
    12393  useMirRounding_ = true;
    12394  onChanged();
    12395  return this;
    12396  }
    12397 
    12398  private int maxIntegerRoundingScaling_ = 600;
    12410  public boolean hasMaxIntegerRoundingScaling() {
    12411  return ((bitField2_ & 0x00000200) != 0);
    12412  }
    12425  return maxIntegerRoundingScaling_;
    12426  }
    12439  bitField2_ |= 0x00000200;
    12440  maxIntegerRoundingScaling_ = value;
    12441  onChanged();
    12442  return this;
    12443  }
    12456  bitField2_ = (bitField2_ & ~0x00000200);
    12457  maxIntegerRoundingScaling_ = 600;
    12458  onChanged();
    12459  return this;
    12460  }
    12461 
    12462  private boolean addLpConstraintsLazily_ = true;
    12473  public boolean hasAddLpConstraintsLazily() {
    12474  return ((bitField2_ & 0x00000400) != 0);
    12475  }
    12486  public boolean getAddLpConstraintsLazily() {
    12487  return addLpConstraintsLazily_;
    12488  }
    12499  public Builder setAddLpConstraintsLazily(boolean value) {
    12500  bitField2_ |= 0x00000400;
    12501  addLpConstraintsLazily_ = value;
    12502  onChanged();
    12503  return this;
    12504  }
    12516  bitField2_ = (bitField2_ & ~0x00000400);
    12517  addLpConstraintsLazily_ = true;
    12518  onChanged();
    12519  return this;
    12520  }
    12521 
    12522  private double minOrthogonalityForLpConstraints_ ;
    12535  return ((bitField2_ & 0x00000800) != 0);
    12536  }
    12549  return minOrthogonalityForLpConstraints_;
    12550  }
    12563  bitField2_ |= 0x00000800;
    12564  minOrthogonalityForLpConstraints_ = value;
    12565  onChanged();
    12566  return this;
    12567  }
    12580  bitField2_ = (bitField2_ & ~0x00000800);
    12581  minOrthogonalityForLpConstraints_ = 0D;
    12582  onChanged();
    12583  return this;
    12584  }
    12585 
    12586  private long maxInactiveCount_ = 1000L;
    12595  public boolean hasMaxInactiveCount() {
    12596  return ((bitField2_ & 0x00001000) != 0);
    12597  }
    12606  public long getMaxInactiveCount() {
    12607  return maxInactiveCount_;
    12608  }
    12617  public Builder setMaxInactiveCount(long value) {
    12618  bitField2_ |= 0x00001000;
    12619  maxInactiveCount_ = value;
    12620  onChanged();
    12621  return this;
    12622  }
    12632  bitField2_ = (bitField2_ & ~0x00001000);
    12633  maxInactiveCount_ = 1000L;
    12634  onChanged();
    12635  return this;
    12636  }
    12637 
    12638  private long constraintRemovalBatchSize_ = 100L;
    12648  return ((bitField2_ & 0x00002000) != 0);
    12649  }
    12659  return constraintRemovalBatchSize_;
    12660  }
    12670  bitField2_ |= 0x00002000;
    12671  constraintRemovalBatchSize_ = value;
    12672  onChanged();
    12673  return this;
    12674  }
    12684  bitField2_ = (bitField2_ & ~0x00002000);
    12685  constraintRemovalBatchSize_ = 100L;
    12686  onChanged();
    12687  return this;
    12688  }
    12689 
    12690  private int searchBranching_ = 0;
    12694  public boolean hasSearchBranching() {
    12695  return ((bitField2_ & 0x00004000) != 0);
    12696  }
    12701  @SuppressWarnings("deprecation")
    12703  return result == null ? com.google.ortools.sat.SatParameters.SearchBranching.AUTOMATIC_SEARCH : result;
    12704  }
    12709  if (value == null) {
    12710  throw new NullPointerException();
    12711  }
    12712  bitField2_ |= 0x00004000;
    12713  searchBranching_ = value.getNumber();
    12714  onChanged();
    12715  return this;
    12716  }
    12721  bitField2_ = (bitField2_ & ~0x00004000);
    12722  searchBranching_ = 0;
    12723  onChanged();
    12724  return this;
    12725  }
    12726 
    12727  private boolean exploitIntegerLpSolution_ = true;
    12738  public boolean hasExploitIntegerLpSolution() {
    12739  return ((bitField2_ & 0x00008000) != 0);
    12740  }
    12751  public boolean getExploitIntegerLpSolution() {
    12752  return exploitIntegerLpSolution_;
    12753  }
    12764  public Builder setExploitIntegerLpSolution(boolean value) {
    12765  bitField2_ |= 0x00008000;
    12766  exploitIntegerLpSolution_ = value;
    12767  onChanged();
    12768  return this;
    12769  }
    12781  bitField2_ = (bitField2_ & ~0x00008000);
    12782  exploitIntegerLpSolution_ = true;
    12783  onChanged();
    12784  return this;
    12785  }
    12786 
    12787  private boolean exploitAllLpSolution_ = true;
    12797  public boolean hasExploitAllLpSolution() {
    12798  return ((bitField2_ & 0x00010000) != 0);
    12799  }
    12809  public boolean getExploitAllLpSolution() {
    12810  return exploitAllLpSolution_;
    12811  }
    12821  public Builder setExploitAllLpSolution(boolean value) {
    12822  bitField2_ |= 0x00010000;
    12823  exploitAllLpSolution_ = value;
    12824  onChanged();
    12825  return this;
    12826  }
    12837  bitField2_ = (bitField2_ & ~0x00010000);
    12838  exploitAllLpSolution_ = true;
    12839  onChanged();
    12840  return this;
    12841  }
    12842 
    12843  private boolean exploitBestSolution_ ;
    12851  public boolean hasExploitBestSolution() {
    12852  return ((bitField2_ & 0x00020000) != 0);
    12853  }
    12861  public boolean getExploitBestSolution() {
    12862  return exploitBestSolution_;
    12863  }
    12871  public Builder setExploitBestSolution(boolean value) {
    12872  bitField2_ |= 0x00020000;
    12873  exploitBestSolution_ = value;
    12874  onChanged();
    12875  return this;
    12876  }
    12885  bitField2_ = (bitField2_ & ~0x00020000);
    12886  exploitBestSolution_ = false;
    12887  onChanged();
    12888  return this;
    12889  }
    12890 
    12891  private boolean exploitObjective_ = true;
    12900  public boolean hasExploitObjective() {
    12901  return ((bitField2_ & 0x00040000) != 0);
    12902  }
    12911  public boolean getExploitObjective() {
    12912  return exploitObjective_;
    12913  }
    12922  public Builder setExploitObjective(boolean value) {
    12923  bitField2_ |= 0x00040000;
    12924  exploitObjective_ = value;
    12925  onChanged();
    12926  return this;
    12927  }
    12937  bitField2_ = (bitField2_ & ~0x00040000);
    12938  exploitObjective_ = true;
    12939  onChanged();
    12940  return this;
    12941  }
    12942 
    12943  private long pseudoCostReliabilityThreshold_ = 100L;
    12953  return ((bitField2_ & 0x00080000) != 0);
    12954  }
    12964  return pseudoCostReliabilityThreshold_;
    12965  }
    12975  bitField2_ |= 0x00080000;
    12976  pseudoCostReliabilityThreshold_ = value;
    12977  onChanged();
    12978  return this;
    12979  }
    12989  bitField2_ = (bitField2_ & ~0x00080000);
    12990  pseudoCostReliabilityThreshold_ = 100L;
    12991  onChanged();
    12992  return this;
    12993  }
    12994 
    12995  private boolean optimizeWithCore_ ;
    13006  public boolean hasOptimizeWithCore() {
    13007  return ((bitField2_ & 0x00100000) != 0);
    13008  }
    13019  public boolean getOptimizeWithCore() {
    13020  return optimizeWithCore_;
    13021  }
    13032  public Builder setOptimizeWithCore(boolean value) {
    13033  bitField2_ |= 0x00100000;
    13034  optimizeWithCore_ = value;
    13035  onChanged();
    13036  return this;
    13037  }
    13049  bitField2_ = (bitField2_ & ~0x00100000);
    13050  optimizeWithCore_ = false;
    13051  onChanged();
    13052  return this;
    13053  }
    13054 
    13055  private int binarySearchNumConflicts_ = -1;
    13066  public boolean hasBinarySearchNumConflicts() {
    13067  return ((bitField2_ & 0x00200000) != 0);
    13068  }
    13080  return binarySearchNumConflicts_;
    13081  }
    13093  bitField2_ |= 0x00200000;
    13094  binarySearchNumConflicts_ = value;
    13095  onChanged();
    13096  return this;
    13097  }
    13109  bitField2_ = (bitField2_ & ~0x00200000);
    13110  binarySearchNumConflicts_ = -1;
    13111  onChanged();
    13112  return this;
    13113  }
    13114 
    13115  private boolean optimizeWithMaxHs_ ;
    13128  public boolean hasOptimizeWithMaxHs() {
    13129  return ((bitField2_ & 0x00400000) != 0);
    13130  }
    13143  public boolean getOptimizeWithMaxHs() {
    13144  return optimizeWithMaxHs_;
    13145  }
    13158  public Builder setOptimizeWithMaxHs(boolean value) {
    13159  bitField2_ |= 0x00400000;
    13160  optimizeWithMaxHs_ = value;
    13161  onChanged();
    13162  return this;
    13163  }
    13177  bitField2_ = (bitField2_ & ~0x00400000);
    13178  optimizeWithMaxHs_ = false;
    13179  onChanged();
    13180  return this;
    13181  }
    13182 
    13183  private boolean cpModelPresolve_ = true;
    13191  public boolean hasCpModelPresolve() {
    13192  return ((bitField2_ & 0x00800000) != 0);
    13193  }
    13201  public boolean getCpModelPresolve() {
    13202  return cpModelPresolve_;
    13203  }
    13211  public Builder setCpModelPresolve(boolean value) {
    13212  bitField2_ |= 0x00800000;
    13213  cpModelPresolve_ = value;
    13214  onChanged();
    13215  return this;
    13216  }
    13225  bitField2_ = (bitField2_ & ~0x00800000);
    13226  cpModelPresolve_ = true;
    13227  onChanged();
    13228  return this;
    13229  }
    13230 
    13231  private int cpModelProbingLevel_ = 2;
    13239  public boolean hasCpModelProbingLevel() {
    13240  return ((bitField2_ & 0x01000000) != 0);
    13241  }
    13249  public int getCpModelProbingLevel() {
    13250  return cpModelProbingLevel_;
    13251  }
    13259  public Builder setCpModelProbingLevel(int value) {
    13260  bitField2_ |= 0x01000000;
    13261  cpModelProbingLevel_ = value;
    13262  onChanged();
    13263  return this;
    13264  }
    13273  bitField2_ = (bitField2_ & ~0x01000000);
    13274  cpModelProbingLevel_ = 2;
    13275  onChanged();
    13276  return this;
    13277  }
    13278 
    13279  private boolean cpModelUseSatPresolve_ = true;
    13287  public boolean hasCpModelUseSatPresolve() {
    13288  return ((bitField2_ & 0x02000000) != 0);
    13289  }
    13297  public boolean getCpModelUseSatPresolve() {
    13298  return cpModelUseSatPresolve_;
    13299  }
    13307  public Builder setCpModelUseSatPresolve(boolean value) {
    13308  bitField2_ |= 0x02000000;
    13309  cpModelUseSatPresolve_ = value;
    13310  onChanged();
    13311  return this;
    13312  }
    13321  bitField2_ = (bitField2_ & ~0x02000000);
    13322  cpModelUseSatPresolve_ = true;
    13323  onChanged();
    13324  return this;
    13325  }
    13326 
    13327  private boolean enumerateAllSolutions_ ;
    13340  public boolean hasEnumerateAllSolutions() {
    13341  return ((bitField2_ & 0x04000000) != 0);
    13342  }
    13355  public boolean getEnumerateAllSolutions() {
    13356  return enumerateAllSolutions_;
    13357  }
    13370  public Builder setEnumerateAllSolutions(boolean value) {
    13371  bitField2_ |= 0x04000000;
    13372  enumerateAllSolutions_ = value;
    13373  onChanged();
    13374  return this;
    13375  }
    13389  bitField2_ = (bitField2_ & ~0x04000000);
    13390  enumerateAllSolutions_ = false;
    13391  onChanged();
    13392  return this;
    13393  }
    13394 
    13395  private boolean fillTightenedDomainsInResponse_ ;
    13408  return ((bitField2_ & 0x08000000) != 0);
    13409  }
    13422  return fillTightenedDomainsInResponse_;
    13423  }
    13436  bitField2_ |= 0x08000000;
    13437  fillTightenedDomainsInResponse_ = value;
    13438  onChanged();
    13439  return this;
    13440  }
    13453  bitField2_ = (bitField2_ & ~0x08000000);
    13454  fillTightenedDomainsInResponse_ = false;
    13455  onChanged();
    13456  return this;
    13457  }
    13458 
    13459  private boolean instantiateAllVariables_ = true;
    13468  public boolean hasInstantiateAllVariables() {
    13469  return ((bitField2_ & 0x10000000) != 0);
    13470  }
    13479  public boolean getInstantiateAllVariables() {
    13480  return instantiateAllVariables_;
    13481  }
    13490  public Builder setInstantiateAllVariables(boolean value) {
    13491  bitField2_ |= 0x10000000;
    13492  instantiateAllVariables_ = value;
    13493  onChanged();
    13494  return this;
    13495  }
    13505  bitField2_ = (bitField2_ & ~0x10000000);
    13506  instantiateAllVariables_ = true;
    13507  onChanged();
    13508  return this;
    13509  }
    13510 
    13511  private boolean autoDetectGreaterThanAtLeastOneOf_ = true;
    13523  return ((bitField2_ & 0x20000000) != 0);
    13524  }
    13536  return autoDetectGreaterThanAtLeastOneOf_;
    13537  }
    13549  bitField2_ |= 0x20000000;
    13550  autoDetectGreaterThanAtLeastOneOf_ = value;
    13551  onChanged();
    13552  return this;
    13553  }
    13565  bitField2_ = (bitField2_ & ~0x20000000);
    13566  autoDetectGreaterThanAtLeastOneOf_ = true;
    13567  onChanged();
    13568  return this;
    13569  }
    13570 
    13571  private boolean stopAfterFirstSolution_ ;
    13579  public boolean hasStopAfterFirstSolution() {
    13580  return ((bitField2_ & 0x40000000) != 0);
    13581  }
    13589  public boolean getStopAfterFirstSolution() {
    13590  return stopAfterFirstSolution_;
    13591  }
    13599  public Builder setStopAfterFirstSolution(boolean value) {
    13600  bitField2_ |= 0x40000000;
    13601  stopAfterFirstSolution_ = value;
    13602  onChanged();
    13603  return this;
    13604  }
    13613  bitField2_ = (bitField2_ & ~0x40000000);
    13614  stopAfterFirstSolution_ = false;
    13615  onChanged();
    13616  return this;
    13617  }
    13618 
    13619  private int numSearchWorkers_ = 1;
    13628  public boolean hasNumSearchWorkers() {
    13629  return ((bitField2_ & 0x80000000) != 0);
    13630  }
    13639  public int getNumSearchWorkers() {
    13640  return numSearchWorkers_;
    13641  }
    13650  public Builder setNumSearchWorkers(int value) {
    13651  bitField2_ |= 0x80000000;
    13652  numSearchWorkers_ = value;
    13653  onChanged();
    13654  return this;
    13655  }
    13665  bitField2_ = (bitField2_ & ~0x80000000);
    13666  numSearchWorkers_ = 1;
    13667  onChanged();
    13668  return this;
    13669  }
    13670 
    13671  private boolean interleaveSearch_ ;
    13682  public boolean hasInterleaveSearch() {
    13683  return ((bitField3_ & 0x00000001) != 0);
    13684  }
    13695  public boolean getInterleaveSearch() {
    13696  return interleaveSearch_;
    13697  }
    13708  public Builder setInterleaveSearch(boolean value) {
    13709  bitField3_ |= 0x00000001;
    13710  interleaveSearch_ = value;
    13711  onChanged();
    13712  return this;
    13713  }
    13725  bitField3_ = (bitField3_ & ~0x00000001);
    13726  interleaveSearch_ = false;
    13727  onChanged();
    13728  return this;
    13729  }
    13730 
    13731  private boolean deterministicParallelSearch_ ;
    13742  return ((bitField3_ & 0x00000002) != 0);
    13743  }
    13754  return deterministicParallelSearch_;
    13755  }
    13765  public Builder setDeterministicParallelSearch(boolean value) {
    13766  bitField3_ |= 0x00000002;
    13767  deterministicParallelSearch_ = value;
    13768  onChanged();
    13769  return this;
    13770  }
    13781  bitField3_ = (bitField3_ & ~0x00000002);
    13782  deterministicParallelSearch_ = false;
    13783  onChanged();
    13784  return this;
    13785  }
    13786 
    13787  private boolean shareObjectiveBounds_ = true;
    13795  public boolean hasShareObjectiveBounds() {
    13796  return ((bitField3_ & 0x00000004) != 0);
    13797  }
    13805  public boolean getShareObjectiveBounds() {
    13806  return shareObjectiveBounds_;
    13807  }
    13815  public Builder setShareObjectiveBounds(boolean value) {
    13816  bitField3_ |= 0x00000004;
    13817  shareObjectiveBounds_ = value;
    13818  onChanged();
    13819  return this;
    13820  }
    13829  bitField3_ = (bitField3_ & ~0x00000004);
    13830  shareObjectiveBounds_ = true;
    13831  onChanged();
    13832  return this;
    13833  }
    13834 
    13835  private boolean shareLevelZeroBounds_ = true;
    13843  public boolean hasShareLevelZeroBounds() {
    13844  return ((bitField3_ & 0x00000008) != 0);
    13845  }
    13853  public boolean getShareLevelZeroBounds() {
    13854  return shareLevelZeroBounds_;
    13855  }
    13863  public Builder setShareLevelZeroBounds(boolean value) {
    13864  bitField3_ |= 0x00000008;
    13865  shareLevelZeroBounds_ = value;
    13866  onChanged();
    13867  return this;
    13868  }
    13877  bitField3_ = (bitField3_ & ~0x00000008);
    13878  shareLevelZeroBounds_ = true;
    13879  onChanged();
    13880  return this;
    13881  }
    13882 
    13883  private boolean useLnsOnly_ ;
    13891  public boolean hasUseLnsOnly() {
    13892  return ((bitField3_ & 0x00000010) != 0);
    13893  }
    13901  public boolean getUseLnsOnly() {
    13902  return useLnsOnly_;
    13903  }
    13911  public Builder setUseLnsOnly(boolean value) {
    13912  bitField3_ |= 0x00000010;
    13913  useLnsOnly_ = value;
    13914  onChanged();
    13915  return this;
    13916  }
    13925  bitField3_ = (bitField3_ & ~0x00000010);
    13926  useLnsOnly_ = false;
    13927  onChanged();
    13928  return this;
    13929  }
    13930 
    13931  private boolean lnsFocusOnDecisionVariables_ ;
    13936  return ((bitField3_ & 0x00000020) != 0);
    13937  }
    13942  return lnsFocusOnDecisionVariables_;
    13943  }
    13947  public Builder setLnsFocusOnDecisionVariables(boolean value) {
    13948  bitField3_ |= 0x00000020;
    13949  lnsFocusOnDecisionVariables_ = value;
    13950  onChanged();
    13951  return this;
    13952  }
    13957  bitField3_ = (bitField3_ & ~0x00000020);
    13958  lnsFocusOnDecisionVariables_ = false;
    13959  onChanged();
    13960  return this;
    13961  }
    13962 
    13963  private boolean useRinsLns_ = true;
    13971  public boolean hasUseRinsLns() {
    13972  return ((bitField3_ & 0x00000040) != 0);
    13973  }
    13981  public boolean getUseRinsLns() {
    13982  return useRinsLns_;
    13983  }
    13991  public Builder setUseRinsLns(boolean value) {
    13992  bitField3_ |= 0x00000040;
    13993  useRinsLns_ = value;
    13994  onChanged();
    13995  return this;
    13996  }
    14005  bitField3_ = (bitField3_ & ~0x00000040);
    14006  useRinsLns_ = true;
    14007  onChanged();
    14008  return this;
    14009  }
    14010 
    14011  private boolean randomizeSearch_ ;
    14019  public boolean hasRandomizeSearch() {
    14020  return ((bitField3_ & 0x00000080) != 0);
    14021  }
    14029  public boolean getRandomizeSearch() {
    14030  return randomizeSearch_;
    14031  }
    14039  public Builder setRandomizeSearch(boolean value) {
    14040  bitField3_ |= 0x00000080;
    14041  randomizeSearch_ = value;
    14042  onChanged();
    14043  return this;
    14044  }
    14053  bitField3_ = (bitField3_ & ~0x00000080);
    14054  randomizeSearch_ = false;
    14055  onChanged();
    14056  return this;
    14057  }
    14058 
    14059  private long searchRandomizationTolerance_ ;
    14074  return ((bitField3_ & 0x00000100) != 0);
    14075  }
    14090  return searchRandomizationTolerance_;
    14091  }
    14106  bitField3_ |= 0x00000100;
    14107  searchRandomizationTolerance_ = value;
    14108  onChanged();
    14109  return this;
    14110  }
    14125  bitField3_ = (bitField3_ & ~0x00000100);
    14126  searchRandomizationTolerance_ = 0L;
    14127  onChanged();
    14128  return this;
    14129  }
    14130 
    14131  private boolean useOptionalVariables_ = true;
    14141  public boolean hasUseOptionalVariables() {
    14142  return ((bitField3_ & 0x00000200) != 0);
    14143  }
    14153  public boolean getUseOptionalVariables() {
    14154  return useOptionalVariables_;
    14155  }
    14165  public Builder setUseOptionalVariables(boolean value) {
    14166  bitField3_ |= 0x00000200;
    14167  useOptionalVariables_ = value;
    14168  onChanged();
    14169  return this;
    14170  }
    14181  bitField3_ = (bitField3_ & ~0x00000200);
    14182  useOptionalVariables_ = true;
    14183  onChanged();
    14184  return this;
    14185  }
    14186 
    14187  private boolean useExactLpReason_ = true;
    14198  public boolean hasUseExactLpReason() {
    14199  return ((bitField3_ & 0x00000400) != 0);
    14200  }
    14211  public boolean getUseExactLpReason() {
    14212  return useExactLpReason_;
    14213  }
    14224  public Builder setUseExactLpReason(boolean value) {
    14225  bitField3_ |= 0x00000400;
    14226  useExactLpReason_ = value;
    14227  onChanged();
    14228  return this;
    14229  }
    14241  bitField3_ = (bitField3_ & ~0x00000400);
    14242  useExactLpReason_ = true;
    14243  onChanged();
    14244  return this;
    14245  }
    14246 
    14247  private boolean useCombinedNoOverlap_ ;
    14257  public boolean hasUseCombinedNoOverlap() {
    14258  return ((bitField3_ & 0x00000800) != 0);
    14259  }
    14269  public boolean getUseCombinedNoOverlap() {
    14270  return useCombinedNoOverlap_;
    14271  }
    14281  public Builder setUseCombinedNoOverlap(boolean value) {
    14282  bitField3_ |= 0x00000800;
    14283  useCombinedNoOverlap_ = value;
    14284  onChanged();
    14285  return this;
    14286  }
    14297  bitField3_ = (bitField3_ & ~0x00000800);
    14298  useCombinedNoOverlap_ = false;
    14299  onChanged();
    14300  return this;
    14301  }
    14302 
    14303  private double mipMaxBound_ = 10000000D;
    14313  public boolean hasMipMaxBound() {
    14314  return ((bitField3_ & 0x00001000) != 0);
    14315  }
    14325  public double getMipMaxBound() {
    14326  return mipMaxBound_;
    14327  }
    14337  public Builder setMipMaxBound(double value) {
    14338  bitField3_ |= 0x00001000;
    14339  mipMaxBound_ = value;
    14340  onChanged();
    14341  return this;
    14342  }
    14353  bitField3_ = (bitField3_ & ~0x00001000);
    14354  mipMaxBound_ = 10000000D;
    14355  onChanged();
    14356  return this;
    14357  }
    14358 
    14359  private double mipVarScaling_ = 1D;
    14369  public boolean hasMipVarScaling() {
    14370  return ((bitField3_ & 0x00002000) != 0);
    14371  }
    14381  public double getMipVarScaling() {
    14382  return mipVarScaling_;
    14383  }
    14393  public Builder setMipVarScaling(double value) {
    14394  bitField3_ |= 0x00002000;
    14395  mipVarScaling_ = value;
    14396  onChanged();
    14397  return this;
    14398  }
    14409  bitField3_ = (bitField3_ & ~0x00002000);
    14410  mipVarScaling_ = 1D;
    14411  onChanged();
    14412  return this;
    14413  }
    14414 
    14415  private double mipWantedPrecision_ = 1e-06D;
    14431  public boolean hasMipWantedPrecision() {
    14432  return ((bitField3_ & 0x00004000) != 0);
    14433  }
    14449  public double getMipWantedPrecision() {
    14450  return mipWantedPrecision_;
    14451  }
    14467  public Builder setMipWantedPrecision(double value) {
    14468  bitField3_ |= 0x00004000;
    14469  mipWantedPrecision_ = value;
    14470  onChanged();
    14471  return this;
    14472  }
    14489  bitField3_ = (bitField3_ & ~0x00004000);
    14490  mipWantedPrecision_ = 1e-06D;
    14491  onChanged();
    14492  return this;
    14493  }
    14494 
    14495  private int mipMaxActivityExponent_ = 53;
    14509  public boolean hasMipMaxActivityExponent() {
    14510  return ((bitField3_ & 0x00008000) != 0);
    14511  }
    14526  return mipMaxActivityExponent_;
    14527  }
    14542  bitField3_ |= 0x00008000;
    14543  mipMaxActivityExponent_ = value;
    14544  onChanged();
    14545  return this;
    14546  }
    14561  bitField3_ = (bitField3_ & ~0x00008000);
    14562  mipMaxActivityExponent_ = 53;
    14563  onChanged();
    14564  return this;
    14565  }
    14566 
    14567  private double mipCheckPrecision_ = 0.0001D;
    14578  public boolean hasMipCheckPrecision() {
    14579  return ((bitField3_ & 0x00010000) != 0);
    14580  }
    14591  public double getMipCheckPrecision() {
    14592  return mipCheckPrecision_;
    14593  }
    14604  public Builder setMipCheckPrecision(double value) {
    14605  bitField3_ |= 0x00010000;
    14606  mipCheckPrecision_ = value;
    14607  onChanged();
    14608  return this;
    14609  }
    14621  bitField3_ = (bitField3_ & ~0x00010000);
    14622  mipCheckPrecision_ = 0.0001D;
    14623  onChanged();
    14624  return this;
    14625  }
    14626 
    14627  private boolean catchSigintSignal_ = true;
    14637  public boolean hasCatchSigintSignal() {
    14638  return ((bitField3_ & 0x00020000) != 0);
    14639  }
    14649  public boolean getCatchSigintSignal() {
    14650  return catchSigintSignal_;
    14651  }
    14661  public Builder setCatchSigintSignal(boolean value) {
    14662  bitField3_ |= 0x00020000;
    14663  catchSigintSignal_ = value;
    14664  onChanged();
    14665  return this;
    14666  }
    14677  bitField3_ = (bitField3_ & ~0x00020000);
    14678  catchSigintSignal_ = true;
    14679  onChanged();
    14680  return this;
    14681  }
    14682  @java.lang.Override
    14684  final com.google.protobuf.UnknownFieldSet unknownFields) {
    14685  return super.setUnknownFields(unknownFields);
    14686  }
    14687 
    14688  @java.lang.Override
    14690  final com.google.protobuf.UnknownFieldSet unknownFields) {
    14691  return super.mergeUnknownFields(unknownFields);
    14692  }
    14693 
    14694 
    14695  // @@protoc_insertion_point(builder_scope:operations_research.sat.SatParameters)
    14696  }
    14697 
    14698  // @@protoc_insertion_point(class_scope:operations_research.sat.SatParameters)
    14699  private static final com.google.ortools.sat.SatParameters DEFAULT_INSTANCE;
    14700  static {
    14701  DEFAULT_INSTANCE = new com.google.ortools.sat.SatParameters();
    14702  }
    14703 
    14705  return DEFAULT_INSTANCE;
    14706  }
    14707 
    14708  @java.lang.Deprecated public static final com.google.protobuf.Parser<SatParameters>
    14709  PARSER = new com.google.protobuf.AbstractParser<SatParameters>() {
    14710  @java.lang.Override
    14711  public SatParameters parsePartialFrom(
    14712  com.google.protobuf.CodedInputStream input,
    14713  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    14714  throws com.google.protobuf.InvalidProtocolBufferException {
    14715  return new SatParameters(input, extensionRegistry);
    14716  }
    14717  };
    14718 
    14719  public static com.google.protobuf.Parser<SatParameters> parser() {
    14720  return PARSER;
    14721  }
    14722 
    14723  @java.lang.Override
    14724  public com.google.protobuf.Parser<SatParameters> getParserForType() {
    14725  return PARSER;
    14726  }
    14727 
    14728  @java.lang.Override
    14730  return DEFAULT_INSTANCE;
    14731  }
    14732 
    14733 }
    14734 
    - -
    Builder clearGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    - +Go to the documentation of this file.
    1 // Generated by the protocol buffer compiler. DO NOT EDIT!
    2 // source: ortools/sat/sat_parameters.proto
    3 
    4 package com.google.ortools.sat;
    5 
    15 public final class SatParameters extends
    16  com.google.protobuf.GeneratedMessageV3 implements
    17  // @@protoc_insertion_point(message_implements:operations_research.sat.SatParameters)
    19 private static final long serialVersionUID = 0L;
    20  // Use SatParameters.newBuilder() to construct.
    21  private SatParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    22  super(builder);
    23  }
    24  private SatParameters() {
    25  preferredVariableOrder_ = 0;
    26  initialPolarity_ = 1;
    27  usePhaseSaving_ = true;
    28  minimizationAlgorithm_ = 2;
    29  binaryMinimizationAlgorithm_ = 1;
    30  subsumptionDuringConflictAnalysis_ = true;
    31  clauseCleanupPeriod_ = 10000;
    32  clauseCleanupTarget_ = 10000;
    33  clauseCleanupProtection_ = 0;
    34  clauseCleanupLbdBound_ = 5;
    35  clauseCleanupOrdering_ = 0;
    36  pbCleanupIncrement_ = 200;
    37  pbCleanupRatio_ = 0.5D;
    38  minimizeWithPropagationRestartPeriod_ = 10;
    39  minimizeWithPropagationNumDecisions_ = 1000;
    40  variableActivityDecay_ = 0.8D;
    41  maxVariableActivityValue_ = 1e+100D;
    42  glucoseMaxDecay_ = 0.95D;
    43  glucoseDecayIncrement_ = 0.01D;
    44  glucoseDecayIncrementPeriod_ = 5000;
    45  clauseActivityDecay_ = 0.999D;
    46  maxClauseActivityValue_ = 1e+20D;
    47  restartAlgorithms_ = java.util.Collections.emptyList();
    48  defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
    49  restartPeriod_ = 50;
    50  restartRunningWindowSize_ = 50;
    51  restartDlAverageRatio_ = 1D;
    52  restartLbdAverageRatio_ = 1D;
    53  blockingRestartWindowSize_ = 5000;
    54  blockingRestartMultiplier_ = 1.4D;
    55  maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    56  maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    57  maxNumberOfConflicts_ = 9223372036854775807L;
    58  maxMemoryInMb_ = 10000L;
    59  treatBinaryClausesSeparately_ = true;
    60  randomSeed_ = 1;
    61  countAssumptionLevelsInLbd_ = true;
    62  presolveBveThreshold_ = 500;
    63  presolveBveClauseWeight_ = 3;
    64  presolveProbingDeterministicTimeLimit_ = 30D;
    65  presolveBlockedClause_ = true;
    66  presolveUseBva_ = true;
    67  presolveBvaThreshold_ = 1;
    68  useOptimizationHints_ = true;
    69  minimizeCore_ = true;
    70  findMultipleCores_ = true;
    71  coverOptimization_ = true;
    72  maxSatAssumptionOrder_ = 0;
    73  maxSatStratification_ = 1;
    74  usePrecedencesInDisjunctiveConstraint_ = true;
    75  useDisjunctiveConstraintInCumulativeConstraint_ = true;
    76  linearizationLevel_ = 1;
    77  booleanEncodingLevel_ = 1;
    78  maxNumCuts_ = 5000;
    79  addMirCuts_ = true;
    80  useMirRounding_ = true;
    81  maxIntegerRoundingScaling_ = 600;
    82  addLpConstraintsLazily_ = true;
    83  maxInactiveCount_ = 1000L;
    84  constraintRemovalBatchSize_ = 100L;
    85  searchBranching_ = 0;
    86  exploitIntegerLpSolution_ = true;
    87  exploitAllLpSolution_ = true;
    88  exploitObjective_ = true;
    89  pseudoCostReliabilityThreshold_ = 100L;
    90  binarySearchNumConflicts_ = -1;
    91  cpModelPresolve_ = true;
    92  cpModelProbingLevel_ = 2;
    93  cpModelUseSatPresolve_ = true;
    94  instantiateAllVariables_ = true;
    95  autoDetectGreaterThanAtLeastOneOf_ = true;
    96  numSearchWorkers_ = 1;
    97  shareObjectiveBounds_ = true;
    98  shareLevelZeroBounds_ = true;
    99  useRinsLns_ = true;
    100  useOptionalVariables_ = true;
    101  useExactLpReason_ = true;
    102  mipMaxBound_ = 10000000D;
    103  mipVarScaling_ = 1D;
    104  mipWantedPrecision_ = 1e-06D;
    105  mipMaxActivityExponent_ = 53;
    106  mipCheckPrecision_ = 0.0001D;
    107  catchSigintSignal_ = true;
    108  }
    109 
    110  @java.lang.Override
    111  @SuppressWarnings({"unused"})
    112  protected java.lang.Object newInstance(
    113  UnusedPrivateParameter unused) {
    114  return new SatParameters();
    115  }
    116 
    117  @java.lang.Override
    118  public final com.google.protobuf.UnknownFieldSet
    120  return this.unknownFields;
    121  }
    122  private SatParameters(
    123  com.google.protobuf.CodedInputStream input,
    124  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    125  throws com.google.protobuf.InvalidProtocolBufferException {
    126  this();
    127  if (extensionRegistry == null) {
    128  throw new java.lang.NullPointerException();
    129  }
    130  int mutable_bitField0_ = 0;
    131  int mutable_bitField1_ = 0;
    132  int mutable_bitField2_ = 0;
    133  int mutable_bitField3_ = 0;
    134  com.google.protobuf.UnknownFieldSet.Builder unknownFields =
    135  com.google.protobuf.UnknownFieldSet.newBuilder();
    136  try {
    137  boolean done = false;
    138  while (!done) {
    139  int tag = input.readTag();
    140  switch (tag) {
    141  case 0:
    142  done = true;
    143  break;
    144  case 8: {
    145  int rawValue = input.readEnum();
    146  @SuppressWarnings("deprecation")
    147  com.google.ortools.sat.SatParameters.VariableOrder value = com.google.ortools.sat.SatParameters.VariableOrder.valueOf(rawValue);
    148  if (value == null) {
    149  unknownFields.mergeVarintField(1, rawValue);
    150  } else {
    151  bitField0_ |= 0x00000001;
    152  preferredVariableOrder_ = rawValue;
    153  }
    154  break;
    155  }
    156  case 16: {
    157  int rawValue = input.readEnum();
    158  @SuppressWarnings("deprecation")
    159  com.google.ortools.sat.SatParameters.Polarity value = com.google.ortools.sat.SatParameters.Polarity.valueOf(rawValue);
    160  if (value == null) {
    161  unknownFields.mergeVarintField(2, rawValue);
    162  } else {
    163  bitField0_ |= 0x00000002;
    164  initialPolarity_ = rawValue;
    165  }
    166  break;
    167  }
    168  case 32: {
    169  int rawValue = input.readEnum();
    170  @SuppressWarnings("deprecation")
    171  com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm value = com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.valueOf(rawValue);
    172  if (value == null) {
    173  unknownFields.mergeVarintField(4, rawValue);
    174  } else {
    175  bitField0_ |= 0x00000100;
    176  minimizationAlgorithm_ = rawValue;
    177  }
    178  break;
    179  }
    180  case 88: {
    181  bitField0_ |= 0x00000800;
    182  clauseCleanupPeriod_ = input.readInt32();
    183  break;
    184  }
    185  case 104: {
    186  bitField0_ |= 0x00001000;
    187  clauseCleanupTarget_ = input.readInt32();
    188  break;
    189  }
    190  case 121: {
    191  bitField0_ |= 0x00100000;
    192  variableActivityDecay_ = input.readDouble();
    193  break;
    194  }
    195  case 129: {
    196  bitField0_ |= 0x00200000;
    197  maxVariableActivityValue_ = input.readDouble();
    198  break;
    199  }
    200  case 137: {
    201  bitField0_ |= 0x02000000;
    202  clauseActivityDecay_ = input.readDouble();
    203  break;
    204  }
    205  case 145: {
    206  bitField0_ |= 0x04000000;
    207  maxClauseActivityValue_ = input.readDouble();
    208  break;
    209  }
    210  case 177: {
    211  bitField0_ |= 0x00400000;
    212  glucoseMaxDecay_ = input.readDouble();
    213  break;
    214  }
    215  case 185: {
    216  bitField0_ |= 0x00800000;
    217  glucoseDecayIncrement_ = input.readDouble();
    218  break;
    219  }
    220  case 192: {
    221  bitField0_ |= 0x01000000;
    222  glucoseDecayIncrementPeriod_ = input.readInt32();
    223  break;
    224  }
    225  case 240: {
    226  bitField0_ |= 0x10000000;
    227  restartPeriod_ = input.readInt32();
    228  break;
    229  }
    230  case 248: {
    231  bitField1_ |= 0x00000400;
    232  randomSeed_ = input.readInt32();
    233  break;
    234  }
    235  case 257: {
    236  bitField0_ |= 0x00000010;
    237  randomBranchesRatio_ = input.readDouble();
    238  break;
    239  }
    240  case 264: {
    241  bitField1_ |= 0x00000200;
    242  treatBinaryClausesSeparately_ = input.readBool();
    243  break;
    244  }
    245  case 272: {
    246  int rawValue = input.readEnum();
    247  @SuppressWarnings("deprecation")
    248  com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm value = com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm.valueOf(rawValue);
    249  if (value == null) {
    250  unknownFields.mergeVarintField(34, rawValue);
    251  } else {
    252  bitField0_ |= 0x00000200;
    253  binaryMinimizationAlgorithm_ = rawValue;
    254  }
    255  break;
    256  }
    257  case 280: {
    258  bitField1_ |= 0x00200000;
    259  useOptimizationHints_ = input.readBool();
    260  break;
    261  }
    262  case 289: {
    263  bitField1_ |= 0x00000020;
    264  maxTimeInSeconds_ = input.readDouble();
    265  break;
    266  }
    267  case 296: {
    268  bitField1_ |= 0x00000080;
    269  maxNumberOfConflicts_ = input.readInt64();
    270  break;
    271  }
    272  case 320: {
    273  bitField1_ |= 0x00000100;
    274  maxMemoryInMb_ = input.readInt64();
    275  break;
    276  }
    277  case 328: {
    278  bitField1_ |= 0x00000800;
    279  logSearchProgress_ = input.readBool();
    280  break;
    281  }
    282  case 344: {
    283  bitField1_ |= 0x00001000;
    284  usePbResolution_ = input.readBool();
    285  break;
    286  }
    287  case 352: {
    288  bitField0_ |= 0x00000004;
    289  usePhaseSaving_ = input.readBool();
    290  break;
    291  }
    292  case 361: {
    293  bitField0_ |= 0x00000008;
    294  randomPolarityRatio_ = input.readDouble();
    295  break;
    296  }
    297  case 368: {
    298  bitField0_ |= 0x00010000;
    299  pbCleanupIncrement_ = input.readInt32();
    300  break;
    301  }
    302  case 377: {
    303  bitField0_ |= 0x00020000;
    304  pbCleanupRatio_ = input.readDouble();
    305  break;
    306  }
    307  case 384: {
    308  bitField1_ |= 0x00002000;
    309  minimizeReductionDuringPbResolution_ = input.readBool();
    310  break;
    311  }
    312  case 392: {
    313  bitField1_ |= 0x00004000;
    314  countAssumptionLevelsInLbd_ = input.readBool();
    315  break;
    316  }
    317  case 400: {
    318  bitField1_ |= 0x00400000;
    319  minimizeCore_ = input.readBool();
    320  break;
    321  }
    322  case 408: {
    323  int rawValue = input.readEnum();
    324  @SuppressWarnings("deprecation")
    325  com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder value = com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder.valueOf(rawValue);
    326  if (value == null) {
    327  unknownFields.mergeVarintField(51, rawValue);
    328  } else {
    329  bitField1_ |= 0x02000000;
    330  maxSatAssumptionOrder_ = rawValue;
    331  }
    332  break;
    333  }
    334  case 416: {
    335  bitField1_ |= 0x04000000;
    336  maxSatReverseAssumptionOrder_ = input.readBool();
    337  break;
    338  }
    339  case 424: {
    340  int rawValue = input.readEnum();
    341  @SuppressWarnings("deprecation")
    342  com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm value = com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm.valueOf(rawValue);
    343  if (value == null) {
    344  unknownFields.mergeVarintField(53, rawValue);
    345  } else {
    346  bitField1_ |= 0x08000000;
    347  maxSatStratification_ = rawValue;
    348  }
    349  break;
    350  }
    351  case 432: {
    352  bitField1_ |= 0x00008000;
    353  presolveBveThreshold_ = input.readInt32();
    354  break;
    355  }
    356  case 440: {
    357  bitField1_ |= 0x00010000;
    358  presolveBveClauseWeight_ = input.readInt32();
    359  break;
    360  }
    361  case 448: {
    362  bitField0_ |= 0x00000400;
    363  subsumptionDuringConflictAnalysis_ = input.readBool();
    364  break;
    365  }
    366  case 457: {
    367  bitField1_ |= 0x00020000;
    368  presolveProbingDeterministicTimeLimit_ = input.readDouble();
    369  break;
    370  }
    371  case 464: {
    372  int rawValue = input.readEnum();
    373  @SuppressWarnings("deprecation")
    374  com.google.ortools.sat.SatParameters.ClauseProtection value = com.google.ortools.sat.SatParameters.ClauseProtection.valueOf(rawValue);
    375  if (value == null) {
    376  unknownFields.mergeVarintField(58, rawValue);
    377  } else {
    378  bitField0_ |= 0x00002000;
    379  clauseCleanupProtection_ = rawValue;
    380  }
    381  break;
    382  }
    383  case 472: {
    384  bitField0_ |= 0x00004000;
    385  clauseCleanupLbdBound_ = input.readInt32();
    386  break;
    387  }
    388  case 480: {
    389  int rawValue = input.readEnum();
    390  @SuppressWarnings("deprecation")
    391  com.google.ortools.sat.SatParameters.ClauseOrdering value = com.google.ortools.sat.SatParameters.ClauseOrdering.valueOf(rawValue);
    392  if (value == null) {
    393  unknownFields.mergeVarintField(60, rawValue);
    394  } else {
    395  bitField0_ |= 0x00008000;
    396  clauseCleanupOrdering_ = rawValue;
    397  }
    398  break;
    399  }
    400  case 488: {
    401  int rawValue = input.readEnum();
    402  @SuppressWarnings("deprecation")
    403  com.google.ortools.sat.SatParameters.RestartAlgorithm value = com.google.ortools.sat.SatParameters.RestartAlgorithm.valueOf(rawValue);
    404  if (value == null) {
    405  unknownFields.mergeVarintField(61, rawValue);
    406  } else {
    407  if (!((mutable_bitField0_ & 0x08000000) != 0)) {
    408  restartAlgorithms_ = new java.util.ArrayList<java.lang.Integer>();
    409  mutable_bitField0_ |= 0x08000000;
    410  }
    411  restartAlgorithms_.add(rawValue);
    412  }
    413  break;
    414  }
    415  case 490: {
    416  int length = input.readRawVarint32();
    417  int oldLimit = input.pushLimit(length);
    418  while(input.getBytesUntilLimit() > 0) {
    419  int rawValue = input.readEnum();
    420  @SuppressWarnings("deprecation")
    421  com.google.ortools.sat.SatParameters.RestartAlgorithm value = com.google.ortools.sat.SatParameters.RestartAlgorithm.valueOf(rawValue);
    422  if (value == null) {
    423  unknownFields.mergeVarintField(61, rawValue);
    424  } else {
    425  if (!((mutable_bitField0_ & 0x08000000) != 0)) {
    426  restartAlgorithms_ = new java.util.ArrayList<java.lang.Integer>();
    427  mutable_bitField0_ |= 0x08000000;
    428  }
    429  restartAlgorithms_.add(rawValue);
    430  }
    431  }
    432  input.popLimit(oldLimit);
    433  break;
    434  }
    435  case 496: {
    436  bitField0_ |= 0x20000000;
    437  restartRunningWindowSize_ = input.readInt32();
    438  break;
    439  }
    440  case 505: {
    441  bitField0_ |= 0x40000000;
    442  restartDlAverageRatio_ = input.readDouble();
    443  break;
    444  }
    445  case 512: {
    446  bitField1_ |= 0x00000001;
    447  useBlockingRestart_ = input.readBool();
    448  break;
    449  }
    450  case 520: {
    451  bitField1_ |= 0x00000002;
    452  blockingRestartWindowSize_ = input.readInt32();
    453  break;
    454  }
    455  case 529: {
    456  bitField1_ |= 0x00000004;
    457  blockingRestartMultiplier_ = input.readDouble();
    458  break;
    459  }
    460  case 537: {
    461  bitField1_ |= 0x00000040;
    462  maxDeterministicTime_ = input.readDouble();
    463  break;
    464  }
    465  case 544: {
    466  bitField1_ |= 0x00000008;
    467  numConflictsBeforeStrategyChanges_ = input.readInt32();
    468  break;
    469  }
    470  case 553: {
    471  bitField1_ |= 0x00000010;
    472  strategyChangeIncreaseRatio_ = input.readDouble();
    473  break;
    474  }
    475  case 562: {
    476  com.google.protobuf.ByteString bs = input.readBytes();
    477  bitField0_ |= 0x08000000;
    478  defaultRestartAlgorithms_ = bs;
    479  break;
    480  }
    481  case 569: {
    482  bitField0_ |= 0x80000000;
    483  restartLbdAverageRatio_ = input.readDouble();
    484  break;
    485  }
    486  case 576: {
    487  bitField1_ |= 0x00080000;
    488  presolveUseBva_ = input.readBool();
    489  break;
    490  }
    491  case 584: {
    492  bitField1_ |= 0x00100000;
    493  presolveBvaThreshold_ = input.readInt32();
    494  break;
    495  }
    496  case 592: {
    497  bitField1_ |= 0x10000000;
    498  usePrecedencesInDisjunctiveConstraint_ = input.readBool();
    499  break;
    500  }
    501  case 600: {
    502  bitField0_ |= 0x00000020;
    503  useErwaHeuristic_ = input.readBool();
    504  break;
    505  }
    506  case 609: {
    507  bitField0_ |= 0x00000040;
    508  initialVariablesActivity_ = input.readDouble();
    509  break;
    510  }
    511  case 616: {
    512  bitField0_ |= 0x00000080;
    513  alsoBumpVariablesInConflictReasons_ = input.readBool();
    514  break;
    515  }
    516  case 624: {
    517  bitField1_ |= 0x20000000;
    518  useOverloadCheckerInCumulativeConstraint_ = input.readBool();
    519  break;
    520  }
    521  case 632: {
    522  bitField1_ |= 0x40000000;
    523  useTimetableEdgeFindingInCumulativeConstraint_ = input.readBool();
    524  break;
    525  }
    526  case 640: {
    527  bitField1_ |= 0x80000000;
    528  useDisjunctiveConstraintInCumulativeConstraint_ = input.readBool();
    529  break;
    530  }
    531  case 656: {
    532  int rawValue = input.readEnum();
    533  @SuppressWarnings("deprecation")
    534  com.google.ortools.sat.SatParameters.SearchBranching value = com.google.ortools.sat.SatParameters.SearchBranching.valueOf(rawValue);
    535  if (value == null) {
    536  unknownFields.mergeVarintField(82, rawValue);
    537  } else {
    538  bitField2_ |= 0x00002000;
    539  searchBranching_ = rawValue;
    540  }
    541  break;
    542  }
    543  case 664: {
    544  bitField2_ |= 0x00080000;
    545  optimizeWithCore_ = input.readBool();
    546  break;
    547  }
    548  case 672: {
    549  bitField1_ |= 0x00800000;
    550  findMultipleCores_ = input.readBool();
    551  break;
    552  }
    553  case 680: {
    554  bitField2_ |= 0x00200000;
    555  optimizeWithMaxHs_ = input.readBool();
    556  break;
    557  }
    558  case 688: {
    559  bitField2_ |= 0x00400000;
    560  cpModelPresolve_ = input.readBool();
    561  break;
    562  }
    563  case 696: {
    564  bitField2_ |= 0x02000000;
    565  enumerateAllSolutions_ = input.readBool();
    566  break;
    567  }
    568  case 704: {
    569  bitField1_ |= 0x00040000;
    570  presolveBlockedClause_ = input.readBool();
    571  break;
    572  }
    573  case 712: {
    574  bitField1_ |= 0x01000000;
    575  coverOptimization_ = input.readBool();
    576  break;
    577  }
    578  case 720: {
    579  bitField2_ |= 0x00000001;
    580  linearizationLevel_ = input.readInt32();
    581  break;
    582  }
    583  case 728: {
    584  bitField2_ |= 0x00000004;
    585  maxNumCuts_ = input.readInt32();
    586  break;
    587  }
    588  case 736: {
    589  bitField2_ |= 0x00000008;
    590  onlyAddCutsAtLevelZero_ = input.readBool();
    591  break;
    592  }
    593  case 744: {
    594  bitField2_ |= 0x01000000;
    595  cpModelUseSatPresolve_ = input.readBool();
    596  break;
    597  }
    598  case 752: {
    599  bitField2_ |= 0x00004000;
    600  exploitIntegerLpSolution_ = input.readBool();
    601  break;
    602  }
    603  case 760: {
    604  bitField2_ |= 0x10000000;
    605  autoDetectGreaterThanAtLeastOneOf_ = input.readBool();
    606  break;
    607  }
    608  case 768: {
    609  bitField0_ |= 0x00040000;
    610  minimizeWithPropagationRestartPeriod_ = input.readInt32();
    611  break;
    612  }
    613  case 776: {
    614  bitField0_ |= 0x00080000;
    615  minimizeWithPropagationNumDecisions_ = input.readInt32();
    616  break;
    617  }
    618  case 784: {
    619  bitField2_ |= 0x20000000;
    620  stopAfterFirstSolution_ = input.readBool();
    621  break;
    622  }
    623  case 792: {
    624  bitField2_ |= 0x00100000;
    625  binarySearchNumConflicts_ = input.readInt32();
    626  break;
    627  }
    628  case 800: {
    629  bitField2_ |= 0x40000000;
    630  numSearchWorkers_ = input.readInt32();
    631  break;
    632  }
    633  case 808: {
    634  bitField3_ |= 0x00000008;
    635  useLnsOnly_ = input.readBool();
    636  break;
    637  }
    638  case 824: {
    639  bitField3_ |= 0x00000040;
    640  randomizeSearch_ = input.readBool();
    641  break;
    642  }
    643  case 832: {
    644  bitField3_ |= 0x00000080;
    645  searchRandomizationTolerance_ = input.readInt64();
    646  break;
    647  }
    648  case 840: {
    649  bitField3_ |= 0x00000010;
    650  lnsFocusOnDecisionVariables_ = input.readBool();
    651  break;
    652  }
    653  case 848: {
    654  bitField2_ |= 0x08000000;
    655  instantiateAllVariables_ = input.readBool();
    656  break;
    657  }
    658  case 856: {
    659  bitField2_ |= 0x00000002;
    660  booleanEncodingLevel_ = input.readInt32();
    661  break;
    662  }
    663  case 864: {
    664  bitField3_ |= 0x00000100;
    665  useOptionalVariables_ = input.readBool();
    666  break;
    667  }
    668  case 872: {
    669  bitField3_ |= 0x00000200;
    670  useExactLpReason_ = input.readBool();
    671  break;
    672  }
    673  case 880: {
    674  bitField2_ |= 0x00800000;
    675  cpModelProbingLevel_ = input.readInt32();
    676  break;
    677  }
    678  case 888: {
    679  bitField2_ |= 0x00000010;
    680  addKnapsackCuts_ = input.readBool();
    681  break;
    682  }
    683  case 896: {
    684  bitField2_ |= 0x00000200;
    685  addLpConstraintsLazily_ = input.readBool();
    686  break;
    687  }
    688  case 904: {
    689  bitField3_ |= 0x00000002;
    690  shareObjectiveBounds_ = input.readBool();
    691  break;
    692  }
    693  case 912: {
    694  bitField3_ |= 0x00000004;
    695  shareLevelZeroBounds_ = input.readBool();
    696  break;
    697  }
    698  case 921: {
    699  bitField2_ |= 0x00000400;
    700  minOrthogonalityForLpConstraints_ = input.readDouble();
    701  break;
    702  }
    703  case 928: {
    704  bitField2_ |= 0x00008000;
    705  exploitAllLpSolution_ = input.readBool();
    706  break;
    707  }
    708  case 936: {
    709  bitField2_ |= 0x00000020;
    710  addCgCuts_ = input.readBool();
    711  break;
    712  }
    713  case 944: {
    714  bitField2_ |= 0x00000080;
    715  useMirRounding_ = input.readBool();
    716  break;
    717  }
    718  case 952: {
    719  bitField2_ |= 0x00000100;
    720  maxIntegerRoundingScaling_ = input.readInt32();
    721  break;
    722  }
    723  case 960: {
    724  bitField2_ |= 0x00000040;
    725  addMirCuts_ = input.readBool();
    726  break;
    727  }
    728  case 968: {
    729  bitField2_ |= 0x00000800;
    730  maxInactiveCount_ = input.readInt64();
    731  break;
    732  }
    733  case 976: {
    734  bitField2_ |= 0x00001000;
    735  constraintRemovalBatchSize_ = input.readInt64();
    736  break;
    737  }
    738  case 984: {
    739  bitField2_ |= 0x00040000;
    740  pseudoCostReliabilityThreshold_ = input.readInt64();
    741  break;
    742  }
    743  case 993: {
    744  bitField3_ |= 0x00000800;
    745  mipMaxBound_ = input.readDouble();
    746  break;
    747  }
    748  case 1001: {
    749  bitField3_ |= 0x00001000;
    750  mipVarScaling_ = input.readDouble();
    751  break;
    752  }
    753  case 1009: {
    754  bitField3_ |= 0x00002000;
    755  mipWantedPrecision_ = input.readDouble();
    756  break;
    757  }
    758  case 1016: {
    759  bitField3_ |= 0x00004000;
    760  mipMaxActivityExponent_ = input.readInt32();
    761  break;
    762  }
    763  case 1025: {
    764  bitField3_ |= 0x00008000;
    765  mipCheckPrecision_ = input.readDouble();
    766  break;
    767  }
    768  case 1032: {
    769  bitField3_ |= 0x00000020;
    770  useRinsLns_ = input.readBool();
    771  break;
    772  }
    773  case 1040: {
    774  bitField2_ |= 0x00010000;
    775  exploitBestSolution_ = input.readBool();
    776  break;
    777  }
    778  case 1048: {
    779  bitField2_ |= 0x00020000;
    780  exploitObjective_ = input.readBool();
    781  break;
    782  }
    783  case 1056: {
    784  bitField2_ |= 0x04000000;
    785  fillTightenedDomainsInResponse_ = input.readBool();
    786  break;
    787  }
    788  case 1064: {
    789  bitField3_ |= 0x00000400;
    790  useCombinedNoOverlap_ = input.readBool();
    791  break;
    792  }
    793  case 1072: {
    794  bitField3_ |= 0x00000001;
    795  deterministicParallelSearch_ = input.readBool();
    796  break;
    797  }
    798  case 1080: {
    799  bitField3_ |= 0x00010000;
    800  catchSigintSignal_ = input.readBool();
    801  break;
    802  }
    803  case 1088: {
    804  bitField2_ |= 0x80000000;
    805  interleaveSearch_ = input.readBool();
    806  break;
    807  }
    808  default: {
    809  if (!parseUnknownField(
    810  input, unknownFields, extensionRegistry, tag)) {
    811  done = true;
    812  }
    813  break;
    814  }
    815  }
    816  }
    817  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    818  throw e.setUnfinishedMessage(this);
    819  } catch (java.io.IOException e) {
    820  throw new com.google.protobuf.InvalidProtocolBufferException(
    821  e).setUnfinishedMessage(this);
    822  } finally {
    823  if (((mutable_bitField0_ & 0x08000000) != 0)) {
    824  restartAlgorithms_ = java.util.Collections.unmodifiableList(restartAlgorithms_);
    825  }
    826  this.unknownFields = unknownFields.build();
    827  makeExtensionsImmutable();
    828  }
    829  }
    830  public static final com.google.protobuf.Descriptors.Descriptor
    832  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
    833  }
    834 
    835  @java.lang.Override
    836  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    838  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_fieldAccessorTable
    839  .ensureFieldAccessorsInitialized(
    841  }
    842 
    851  public enum VariableOrder
    852  implements com.google.protobuf.ProtocolMessageEnum {
    869  ;
    870 
    878  public static final int IN_ORDER_VALUE = 0;
    882  public static final int IN_REVERSE_ORDER_VALUE = 1;
    886  public static final int IN_RANDOM_ORDER_VALUE = 2;
    887 
    888 
    889  public final int getNumber() {
    890  return value;
    891  }
    892 
    896  @java.lang.Deprecated
    897  public static VariableOrder valueOf(int value) {
    898  return forNumber(value);
    899  }
    900 
    901  public static VariableOrder forNumber(int value) {
    902  switch (value) {
    903  case 0: return IN_ORDER;
    904  case 1: return IN_REVERSE_ORDER;
    905  case 2: return IN_RANDOM_ORDER;
    906  default: return null;
    907  }
    908  }
    909 
    910  public static com.google.protobuf.Internal.EnumLiteMap<VariableOrder>
    912  return internalValueMap;
    913  }
    914  private static final com.google.protobuf.Internal.EnumLiteMap<
    915  VariableOrder> internalValueMap =
    916  new com.google.protobuf.Internal.EnumLiteMap<VariableOrder>() {
    917  public VariableOrder findValueByNumber(int number) {
    918  return VariableOrder.forNumber(number);
    919  }
    920  };
    921 
    922  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    924  return getDescriptor().getValues().get(ordinal());
    925  }
    926  public final com.google.protobuf.Descriptors.EnumDescriptor
    928  return getDescriptor();
    929  }
    930  public static final com.google.protobuf.Descriptors.EnumDescriptor
    932  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(0);
    933  }
    934 
    935  private static final VariableOrder[] VALUES = values();
    936 
    937  public static VariableOrder valueOf(
    938  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    939  if (desc.getType() != getDescriptor()) {
    940  throw new java.lang.IllegalArgumentException(
    941  "EnumValueDescriptor is not for this type.");
    942  }
    943  return VALUES[desc.getIndex()];
    944  }
    945 
    946  private final int value;
    947 
    948  private VariableOrder(int value) {
    949  this.value = value;
    950  }
    951 
    952  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.VariableOrder)
    953  }
    954 
    966  public enum Polarity
    967  implements com.google.protobuf.ProtocolMessageEnum {
    999  ;
    1000 
    1004  public static final int POLARITY_TRUE_VALUE = 0;
    1008  public static final int POLARITY_FALSE_VALUE = 1;
    1012  public static final int POLARITY_RANDOM_VALUE = 2;
    1023  public static final int POLARITY_WEIGHTED_SIGN_VALUE = 3;
    1031  public static final int POLARITY_REVERSE_WEIGHTED_SIGN_VALUE = 4;
    1032 
    1033 
    1034  public final int getNumber() {
    1035  return value;
    1036  }
    1037 
    1041  @java.lang.Deprecated
    1042  public static Polarity valueOf(int value) {
    1043  return forNumber(value);
    1044  }
    1045 
    1046  public static Polarity forNumber(int value) {
    1047  switch (value) {
    1048  case 0: return POLARITY_TRUE;
    1049  case 1: return POLARITY_FALSE;
    1050  case 2: return POLARITY_RANDOM;
    1051  case 3: return POLARITY_WEIGHTED_SIGN;
    1052  case 4: return POLARITY_REVERSE_WEIGHTED_SIGN;
    1053  default: return null;
    1054  }
    1055  }
    1056 
    1057  public static com.google.protobuf.Internal.EnumLiteMap<Polarity>
    1059  return internalValueMap;
    1060  }
    1061  private static final com.google.protobuf.Internal.EnumLiteMap<
    1062  Polarity> internalValueMap =
    1063  new com.google.protobuf.Internal.EnumLiteMap<Polarity>() {
    1064  public Polarity findValueByNumber(int number) {
    1065  return Polarity.forNumber(number);
    1066  }
    1067  };
    1068 
    1069  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1071  return getDescriptor().getValues().get(ordinal());
    1072  }
    1073  public final com.google.protobuf.Descriptors.EnumDescriptor
    1075  return getDescriptor();
    1076  }
    1077  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1079  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(1);
    1080  }
    1081 
    1082  private static final Polarity[] VALUES = values();
    1083 
    1084  public static Polarity valueOf(
    1085  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1086  if (desc.getType() != getDescriptor()) {
    1087  throw new java.lang.IllegalArgumentException(
    1088  "EnumValueDescriptor is not for this type.");
    1089  }
    1090  return VALUES[desc.getIndex()];
    1091  }
    1092 
    1093  private final int value;
    1094 
    1095  private Polarity(int value) {
    1096  this.value = value;
    1097  }
    1098 
    1099  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.Polarity)
    1100  }
    1101 
    1110  implements com.google.protobuf.ProtocolMessageEnum {
    1114  NONE(0),
    1127  ;
    1128 
    1132  public static final int NONE_VALUE = 0;
    1136  public static final int SIMPLE_VALUE = 1;
    1140  public static final int RECURSIVE_VALUE = 2;
    1144  public static final int EXPERIMENTAL_VALUE = 3;
    1145 
    1146 
    1147  public final int getNumber() {
    1148  return value;
    1149  }
    1150 
    1154  @java.lang.Deprecated
    1155  public static ConflictMinimizationAlgorithm valueOf(int value) {
    1156  return forNumber(value);
    1157  }
    1158 
    1159  public static ConflictMinimizationAlgorithm forNumber(int value) {
    1160  switch (value) {
    1161  case 0: return NONE;
    1162  case 1: return SIMPLE;
    1163  case 2: return RECURSIVE;
    1164  case 3: return EXPERIMENTAL;
    1165  default: return null;
    1166  }
    1167  }
    1168 
    1169  public static com.google.protobuf.Internal.EnumLiteMap<ConflictMinimizationAlgorithm>
    1171  return internalValueMap;
    1172  }
    1173  private static final com.google.protobuf.Internal.EnumLiteMap<
    1174  ConflictMinimizationAlgorithm> internalValueMap =
    1175  new com.google.protobuf.Internal.EnumLiteMap<ConflictMinimizationAlgorithm>() {
    1176  public ConflictMinimizationAlgorithm findValueByNumber(int number) {
    1178  }
    1179  };
    1180 
    1181  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1183  return getDescriptor().getValues().get(ordinal());
    1184  }
    1185  public final com.google.protobuf.Descriptors.EnumDescriptor
    1187  return getDescriptor();
    1188  }
    1189  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1191  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(2);
    1192  }
    1193 
    1194  private static final ConflictMinimizationAlgorithm[] VALUES = values();
    1195 
    1197  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1198  if (desc.getType() != getDescriptor()) {
    1199  throw new java.lang.IllegalArgumentException(
    1200  "EnumValueDescriptor is not for this type.");
    1201  }
    1202  return VALUES[desc.getIndex()];
    1203  }
    1204 
    1205  private final int value;
    1206 
    1207  private ConflictMinimizationAlgorithm(int value) {
    1208  this.value = value;
    1209  }
    1210 
    1211  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ConflictMinimizationAlgorithm)
    1212  }
    1213 
    1223  implements com.google.protobuf.ProtocolMessageEnum {
    1244  ;
    1245 
    1249  public static final int NO_BINARY_MINIMIZATION_VALUE = 0;
    1253  public static final int BINARY_MINIMIZATION_FIRST_VALUE = 1;
    1257  public static final int BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION_VALUE = 4;
    1261  public static final int BINARY_MINIMIZATION_WITH_REACHABILITY_VALUE = 2;
    1265  public static final int EXPERIMENTAL_BINARY_MINIMIZATION_VALUE = 3;
    1266 
    1267 
    1268  public final int getNumber() {
    1269  return value;
    1270  }
    1271 
    1275  @java.lang.Deprecated
    1276  public static BinaryMinizationAlgorithm valueOf(int value) {
    1277  return forNumber(value);
    1278  }
    1279 
    1280  public static BinaryMinizationAlgorithm forNumber(int value) {
    1281  switch (value) {
    1282  case 0: return NO_BINARY_MINIMIZATION;
    1283  case 1: return BINARY_MINIMIZATION_FIRST;
    1284  case 4: return BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION;
    1285  case 2: return BINARY_MINIMIZATION_WITH_REACHABILITY;
    1286  case 3: return EXPERIMENTAL_BINARY_MINIMIZATION;
    1287  default: return null;
    1288  }
    1289  }
    1290 
    1291  public static com.google.protobuf.Internal.EnumLiteMap<BinaryMinizationAlgorithm>
    1293  return internalValueMap;
    1294  }
    1295  private static final com.google.protobuf.Internal.EnumLiteMap<
    1296  BinaryMinizationAlgorithm> internalValueMap =
    1297  new com.google.protobuf.Internal.EnumLiteMap<BinaryMinizationAlgorithm>() {
    1298  public BinaryMinizationAlgorithm findValueByNumber(int number) {
    1299  return BinaryMinizationAlgorithm.forNumber(number);
    1300  }
    1301  };
    1302 
    1303  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1305  return getDescriptor().getValues().get(ordinal());
    1306  }
    1307  public final com.google.protobuf.Descriptors.EnumDescriptor
    1309  return getDescriptor();
    1310  }
    1311  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1313  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(3);
    1314  }
    1315 
    1316  private static final BinaryMinizationAlgorithm[] VALUES = values();
    1317 
    1319  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1320  if (desc.getType() != getDescriptor()) {
    1321  throw new java.lang.IllegalArgumentException(
    1322  "EnumValueDescriptor is not for this type.");
    1323  }
    1324  return VALUES[desc.getIndex()];
    1325  }
    1326 
    1327  private final int value;
    1328 
    1329  private BinaryMinizationAlgorithm(int value) {
    1330  this.value = value;
    1331  }
    1332 
    1333  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.BinaryMinizationAlgorithm)
    1334  }
    1335 
    1345  public enum ClauseProtection
    1346  implements com.google.protobuf.ProtocolMessageEnum {
    1371  ;
    1372 
    1380  public static final int PROTECTION_NONE_VALUE = 0;
    1388  public static final int PROTECTION_ALWAYS_VALUE = 1;
    1396  public static final int PROTECTION_LBD_VALUE = 2;
    1397 
    1398 
    1399  public final int getNumber() {
    1400  return value;
    1401  }
    1402 
    1406  @java.lang.Deprecated
    1407  public static ClauseProtection valueOf(int value) {
    1408  return forNumber(value);
    1409  }
    1410 
    1411  public static ClauseProtection forNumber(int value) {
    1412  switch (value) {
    1413  case 0: return PROTECTION_NONE;
    1414  case 1: return PROTECTION_ALWAYS;
    1415  case 2: return PROTECTION_LBD;
    1416  default: return null;
    1417  }
    1418  }
    1419 
    1420  public static com.google.protobuf.Internal.EnumLiteMap<ClauseProtection>
    1422  return internalValueMap;
    1423  }
    1424  private static final com.google.protobuf.Internal.EnumLiteMap<
    1425  ClauseProtection> internalValueMap =
    1426  new com.google.protobuf.Internal.EnumLiteMap<ClauseProtection>() {
    1427  public ClauseProtection findValueByNumber(int number) {
    1428  return ClauseProtection.forNumber(number);
    1429  }
    1430  };
    1431 
    1432  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1434  return getDescriptor().getValues().get(ordinal());
    1435  }
    1436  public final com.google.protobuf.Descriptors.EnumDescriptor
    1438  return getDescriptor();
    1439  }
    1440  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1442  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(4);
    1443  }
    1444 
    1445  private static final ClauseProtection[] VALUES = values();
    1446 
    1447  public static ClauseProtection valueOf(
    1448  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1449  if (desc.getType() != getDescriptor()) {
    1450  throw new java.lang.IllegalArgumentException(
    1451  "EnumValueDescriptor is not for this type.");
    1452  }
    1453  return VALUES[desc.getIndex()];
    1454  }
    1455 
    1456  private final int value;
    1457 
    1458  private ClauseProtection(int value) {
    1459  this.value = value;
    1460  }
    1461 
    1462  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ClauseProtection)
    1463  }
    1464 
    1473  public enum ClauseOrdering
    1474  implements com.google.protobuf.ProtocolMessageEnum {
    1491  ;
    1492 
    1500  public static final int CLAUSE_ACTIVITY_VALUE = 0;
    1508  public static final int CLAUSE_LBD_VALUE = 1;
    1509 
    1510 
    1511  public final int getNumber() {
    1512  return value;
    1513  }
    1514 
    1518  @java.lang.Deprecated
    1519  public static ClauseOrdering valueOf(int value) {
    1520  return forNumber(value);
    1521  }
    1522 
    1523  public static ClauseOrdering forNumber(int value) {
    1524  switch (value) {
    1525  case 0: return CLAUSE_ACTIVITY;
    1526  case 1: return CLAUSE_LBD;
    1527  default: return null;
    1528  }
    1529  }
    1530 
    1531  public static com.google.protobuf.Internal.EnumLiteMap<ClauseOrdering>
    1533  return internalValueMap;
    1534  }
    1535  private static final com.google.protobuf.Internal.EnumLiteMap<
    1536  ClauseOrdering> internalValueMap =
    1537  new com.google.protobuf.Internal.EnumLiteMap<ClauseOrdering>() {
    1538  public ClauseOrdering findValueByNumber(int number) {
    1539  return ClauseOrdering.forNumber(number);
    1540  }
    1541  };
    1542 
    1543  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1545  return getDescriptor().getValues().get(ordinal());
    1546  }
    1547  public final com.google.protobuf.Descriptors.EnumDescriptor
    1549  return getDescriptor();
    1550  }
    1551  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1553  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(5);
    1554  }
    1555 
    1556  private static final ClauseOrdering[] VALUES = values();
    1557 
    1558  public static ClauseOrdering valueOf(
    1559  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1560  if (desc.getType() != getDescriptor()) {
    1561  throw new java.lang.IllegalArgumentException(
    1562  "EnumValueDescriptor is not for this type.");
    1563  }
    1564  return VALUES[desc.getIndex()];
    1565  }
    1566 
    1567  private final int value;
    1568 
    1569  private ClauseOrdering(int value) {
    1570  this.value = value;
    1571  }
    1572 
    1573  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ClauseOrdering)
    1574  }
    1575 
    1587  public enum RestartAlgorithm
    1588  implements com.google.protobuf.ProtocolMessageEnum {
    1625  ;
    1626 
    1630  public static final int NO_RESTART_VALUE = 0;
    1638  public static final int LUBY_RESTART_VALUE = 1;
    1646  public static final int DL_MOVING_AVERAGE_RESTART_VALUE = 2;
    1654  public static final int LBD_MOVING_AVERAGE_RESTART_VALUE = 3;
    1662  public static final int FIXED_RESTART_VALUE = 4;
    1663 
    1664 
    1665  public final int getNumber() {
    1666  return value;
    1667  }
    1668 
    1672  @java.lang.Deprecated
    1673  public static RestartAlgorithm valueOf(int value) {
    1674  return forNumber(value);
    1675  }
    1676 
    1677  public static RestartAlgorithm forNumber(int value) {
    1678  switch (value) {
    1679  case 0: return NO_RESTART;
    1680  case 1: return LUBY_RESTART;
    1681  case 2: return DL_MOVING_AVERAGE_RESTART;
    1682  case 3: return LBD_MOVING_AVERAGE_RESTART;
    1683  case 4: return FIXED_RESTART;
    1684  default: return null;
    1685  }
    1686  }
    1687 
    1688  public static com.google.protobuf.Internal.EnumLiteMap<RestartAlgorithm>
    1690  return internalValueMap;
    1691  }
    1692  private static final com.google.protobuf.Internal.EnumLiteMap<
    1693  RestartAlgorithm> internalValueMap =
    1694  new com.google.protobuf.Internal.EnumLiteMap<RestartAlgorithm>() {
    1695  public RestartAlgorithm findValueByNumber(int number) {
    1696  return RestartAlgorithm.forNumber(number);
    1697  }
    1698  };
    1699 
    1700  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1702  return getDescriptor().getValues().get(ordinal());
    1703  }
    1704  public final com.google.protobuf.Descriptors.EnumDescriptor
    1706  return getDescriptor();
    1707  }
    1708  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1710  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(6);
    1711  }
    1712 
    1713  private static final RestartAlgorithm[] VALUES = values();
    1714 
    1715  public static RestartAlgorithm valueOf(
    1716  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1717  if (desc.getType() != getDescriptor()) {
    1718  throw new java.lang.IllegalArgumentException(
    1719  "EnumValueDescriptor is not for this type.");
    1720  }
    1721  return VALUES[desc.getIndex()];
    1722  }
    1723 
    1724  private final int value;
    1725 
    1726  private RestartAlgorithm(int value) {
    1727  this.value = value;
    1728  }
    1729 
    1730  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.RestartAlgorithm)
    1731  }
    1732 
    1741  implements com.google.protobuf.ProtocolMessageEnum {
    1754  ;
    1755 
    1759  public static final int DEFAULT_ASSUMPTION_ORDER_VALUE = 0;
    1763  public static final int ORDER_ASSUMPTION_BY_DEPTH_VALUE = 1;
    1767  public static final int ORDER_ASSUMPTION_BY_WEIGHT_VALUE = 2;
    1768 
    1769 
    1770  public final int getNumber() {
    1771  return value;
    1772  }
    1773 
    1777  @java.lang.Deprecated
    1778  public static MaxSatAssumptionOrder valueOf(int value) {
    1779  return forNumber(value);
    1780  }
    1781 
    1782  public static MaxSatAssumptionOrder forNumber(int value) {
    1783  switch (value) {
    1784  case 0: return DEFAULT_ASSUMPTION_ORDER;
    1785  case 1: return ORDER_ASSUMPTION_BY_DEPTH;
    1786  case 2: return ORDER_ASSUMPTION_BY_WEIGHT;
    1787  default: return null;
    1788  }
    1789  }
    1790 
    1791  public static com.google.protobuf.Internal.EnumLiteMap<MaxSatAssumptionOrder>
    1793  return internalValueMap;
    1794  }
    1795  private static final com.google.protobuf.Internal.EnumLiteMap<
    1796  MaxSatAssumptionOrder> internalValueMap =
    1797  new com.google.protobuf.Internal.EnumLiteMap<MaxSatAssumptionOrder>() {
    1798  public MaxSatAssumptionOrder findValueByNumber(int number) {
    1799  return MaxSatAssumptionOrder.forNumber(number);
    1800  }
    1801  };
    1802 
    1803  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1805  return getDescriptor().getValues().get(ordinal());
    1806  }
    1807  public final com.google.protobuf.Descriptors.EnumDescriptor
    1809  return getDescriptor();
    1810  }
    1811  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1813  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(7);
    1814  }
    1815 
    1816  private static final MaxSatAssumptionOrder[] VALUES = values();
    1817 
    1819  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1820  if (desc.getType() != getDescriptor()) {
    1821  throw new java.lang.IllegalArgumentException(
    1822  "EnumValueDescriptor is not for this type.");
    1823  }
    1824  return VALUES[desc.getIndex()];
    1825  }
    1826 
    1827  private final int value;
    1828 
    1829  private MaxSatAssumptionOrder(int value) {
    1830  this.value = value;
    1831  }
    1832 
    1833  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.MaxSatAssumptionOrder)
    1834  }
    1835 
    1844  implements com.google.protobuf.ProtocolMessageEnum {
    1873  ;
    1874 
    1882  public static final int STRATIFICATION_NONE_VALUE = 0;
    1891  public static final int STRATIFICATION_DESCENT_VALUE = 1;
    1902  public static final int STRATIFICATION_ASCENT_VALUE = 2;
    1903 
    1904 
    1905  public final int getNumber() {
    1906  return value;
    1907  }
    1908 
    1912  @java.lang.Deprecated
    1913  public static MaxSatStratificationAlgorithm valueOf(int value) {
    1914  return forNumber(value);
    1915  }
    1916 
    1917  public static MaxSatStratificationAlgorithm forNumber(int value) {
    1918  switch (value) {
    1919  case 0: return STRATIFICATION_NONE;
    1920  case 1: return STRATIFICATION_DESCENT;
    1921  case 2: return STRATIFICATION_ASCENT;
    1922  default: return null;
    1923  }
    1924  }
    1925 
    1926  public static com.google.protobuf.Internal.EnumLiteMap<MaxSatStratificationAlgorithm>
    1928  return internalValueMap;
    1929  }
    1930  private static final com.google.protobuf.Internal.EnumLiteMap<
    1931  MaxSatStratificationAlgorithm> internalValueMap =
    1932  new com.google.protobuf.Internal.EnumLiteMap<MaxSatStratificationAlgorithm>() {
    1933  public MaxSatStratificationAlgorithm findValueByNumber(int number) {
    1935  }
    1936  };
    1937 
    1938  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    1940  return getDescriptor().getValues().get(ordinal());
    1941  }
    1942  public final com.google.protobuf.Descriptors.EnumDescriptor
    1944  return getDescriptor();
    1945  }
    1946  public static final com.google.protobuf.Descriptors.EnumDescriptor
    1948  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(8);
    1949  }
    1950 
    1951  private static final MaxSatStratificationAlgorithm[] VALUES = values();
    1952 
    1954  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    1955  if (desc.getType() != getDescriptor()) {
    1956  throw new java.lang.IllegalArgumentException(
    1957  "EnumValueDescriptor is not for this type.");
    1958  }
    1959  return VALUES[desc.getIndex()];
    1960  }
    1961 
    1962  private final int value;
    1963 
    1964  private MaxSatStratificationAlgorithm(int value) {
    1965  this.value = value;
    1966  }
    1967 
    1968  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.MaxSatStratificationAlgorithm)
    1969  }
    1970 
    1978  public enum SearchBranching
    1979  implements com.google.protobuf.ProtocolMessageEnum {
    2047  ;
    2048 
    2057  public static final int AUTOMATIC_SEARCH_VALUE = 0;
    2067  public static final int FIXED_SEARCH_VALUE = 1;
    2075  public static final int PORTFOLIO_SEARCH_VALUE = 2;
    2085  public static final int LP_SEARCH_VALUE = 3;
    2095  public static final int PSEUDO_COST_SEARCH_VALUE = 4;
    2105  public static final int PORTFOLIO_WITH_QUICK_RESTART_SEARCH_VALUE = 5;
    2115  public static final int HINT_SEARCH_VALUE = 6;
    2116 
    2117 
    2118  public final int getNumber() {
    2119  return value;
    2120  }
    2121 
    2125  @java.lang.Deprecated
    2126  public static SearchBranching valueOf(int value) {
    2127  return forNumber(value);
    2128  }
    2129 
    2130  public static SearchBranching forNumber(int value) {
    2131  switch (value) {
    2132  case 0: return AUTOMATIC_SEARCH;
    2133  case 1: return FIXED_SEARCH;
    2134  case 2: return PORTFOLIO_SEARCH;
    2135  case 3: return LP_SEARCH;
    2136  case 4: return PSEUDO_COST_SEARCH;
    2137  case 5: return PORTFOLIO_WITH_QUICK_RESTART_SEARCH;
    2138  case 6: return HINT_SEARCH;
    2139  default: return null;
    2140  }
    2141  }
    2142 
    2143  public static com.google.protobuf.Internal.EnumLiteMap<SearchBranching>
    2145  return internalValueMap;
    2146  }
    2147  private static final com.google.protobuf.Internal.EnumLiteMap<
    2148  SearchBranching> internalValueMap =
    2149  new com.google.protobuf.Internal.EnumLiteMap<SearchBranching>() {
    2150  public SearchBranching findValueByNumber(int number) {
    2151  return SearchBranching.forNumber(number);
    2152  }
    2153  };
    2154 
    2155  public final com.google.protobuf.Descriptors.EnumValueDescriptor
    2157  return getDescriptor().getValues().get(ordinal());
    2158  }
    2159  public final com.google.protobuf.Descriptors.EnumDescriptor
    2161  return getDescriptor();
    2162  }
    2163  public static final com.google.protobuf.Descriptors.EnumDescriptor
    2165  return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(9);
    2166  }
    2167 
    2168  private static final SearchBranching[] VALUES = values();
    2169 
    2170  public static SearchBranching valueOf(
    2171  com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
    2172  if (desc.getType() != getDescriptor()) {
    2173  throw new java.lang.IllegalArgumentException(
    2174  "EnumValueDescriptor is not for this type.");
    2175  }
    2176  return VALUES[desc.getIndex()];
    2177  }
    2178 
    2179  private final int value;
    2180 
    2181  private SearchBranching(int value) {
    2182  this.value = value;
    2183  }
    2184 
    2185  // @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.SearchBranching)
    2186  }
    2187 
    2188  private int bitField0_;
    2189  private int bitField1_;
    2190  private int bitField2_;
    2191  private int bitField3_;
    2192  public static final int PREFERRED_VARIABLE_ORDER_FIELD_NUMBER = 1;
    2193  private int preferredVariableOrder_;
    2197  public boolean hasPreferredVariableOrder() {
    2198  return ((bitField0_ & 0x00000001) != 0);
    2199  }
    2204  @SuppressWarnings("deprecation")
    2206  return result == null ? com.google.ortools.sat.SatParameters.VariableOrder.IN_ORDER : result;
    2207  }
    2208 
    2209  public static final int INITIAL_POLARITY_FIELD_NUMBER = 2;
    2210  private int initialPolarity_;
    2214  public boolean hasInitialPolarity() {
    2215  return ((bitField0_ & 0x00000002) != 0);
    2216  }
    2221  @SuppressWarnings("deprecation")
    2223  return result == null ? com.google.ortools.sat.SatParameters.Polarity.POLARITY_FALSE : result;
    2224  }
    2225 
    2226  public static final int USE_PHASE_SAVING_FIELD_NUMBER = 44;
    2227  private boolean usePhaseSaving_;
    2241  public boolean hasUsePhaseSaving() {
    2242  return ((bitField0_ & 0x00000004) != 0);
    2243  }
    2257  public boolean getUsePhaseSaving() {
    2258  return usePhaseSaving_;
    2259  }
    2260 
    2261  public static final int RANDOM_POLARITY_RATIO_FIELD_NUMBER = 45;
    2262  private double randomPolarityRatio_;
    2274  public boolean hasRandomPolarityRatio() {
    2275  return ((bitField0_ & 0x00000008) != 0);
    2276  }
    2288  public double getRandomPolarityRatio() {
    2289  return randomPolarityRatio_;
    2290  }
    2291 
    2292  public static final int RANDOM_BRANCHES_RATIO_FIELD_NUMBER = 32;
    2293  private double randomBranchesRatio_;
    2303  public boolean hasRandomBranchesRatio() {
    2304  return ((bitField0_ & 0x00000010) != 0);
    2305  }
    2315  public double getRandomBranchesRatio() {
    2316  return randomBranchesRatio_;
    2317  }
    2318 
    2319  public static final int USE_ERWA_HEURISTIC_FIELD_NUMBER = 75;
    2320  private boolean useErwaHeuristic_;
    2330  public boolean hasUseErwaHeuristic() {
    2331  return ((bitField0_ & 0x00000020) != 0);
    2332  }
    2342  public boolean getUseErwaHeuristic() {
    2343  return useErwaHeuristic_;
    2344  }
    2345 
    2346  public static final int INITIAL_VARIABLES_ACTIVITY_FIELD_NUMBER = 76;
    2347  private double initialVariablesActivity_;
    2360  public boolean hasInitialVariablesActivity() {
    2361  return ((bitField0_ & 0x00000040) != 0);
    2362  }
    2376  return initialVariablesActivity_;
    2377  }
    2378 
    2380  private boolean alsoBumpVariablesInConflictReasons_;
    2392  return ((bitField0_ & 0x00000080) != 0);
    2393  }
    2405  return alsoBumpVariablesInConflictReasons_;
    2406  }
    2407 
    2408  public static final int MINIMIZATION_ALGORITHM_FIELD_NUMBER = 4;
    2409  private int minimizationAlgorithm_;
    2413  public boolean hasMinimizationAlgorithm() {
    2414  return ((bitField0_ & 0x00000100) != 0);
    2415  }
    2420  @SuppressWarnings("deprecation")
    2422  return result == null ? com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.RECURSIVE : result;
    2423  }
    2424 
    2425  public static final int BINARY_MINIMIZATION_ALGORITHM_FIELD_NUMBER = 34;
    2426  private int binaryMinimizationAlgorithm_;
    2431  return ((bitField0_ & 0x00000200) != 0);
    2432  }
    2437  @SuppressWarnings("deprecation")
    2440  }
    2441 
    2443  private boolean subsumptionDuringConflictAnalysis_;
    2455  return ((bitField0_ & 0x00000400) != 0);
    2456  }
    2468  return subsumptionDuringConflictAnalysis_;
    2469  }
    2470 
    2471  public static final int CLAUSE_CLEANUP_PERIOD_FIELD_NUMBER = 11;
    2472  private int clauseCleanupPeriod_;
    2480  public boolean hasClauseCleanupPeriod() {
    2481  return ((bitField0_ & 0x00000800) != 0);
    2482  }
    2490  public int getClauseCleanupPeriod() {
    2491  return clauseCleanupPeriod_;
    2492  }
    2493 
    2494  public static final int CLAUSE_CLEANUP_TARGET_FIELD_NUMBER = 13;
    2495  private int clauseCleanupTarget_;
    2504  public boolean hasClauseCleanupTarget() {
    2505  return ((bitField0_ & 0x00001000) != 0);
    2506  }
    2515  public int getClauseCleanupTarget() {
    2516  return clauseCleanupTarget_;
    2517  }
    2518 
    2519  public static final int CLAUSE_CLEANUP_PROTECTION_FIELD_NUMBER = 58;
    2520  private int clauseCleanupProtection_;
    2524  public boolean hasClauseCleanupProtection() {
    2525  return ((bitField0_ & 0x00002000) != 0);
    2526  }
    2531  @SuppressWarnings("deprecation")
    2533  return result == null ? com.google.ortools.sat.SatParameters.ClauseProtection.PROTECTION_NONE : result;
    2534  }
    2535 
    2536  public static final int CLAUSE_CLEANUP_LBD_BOUND_FIELD_NUMBER = 59;
    2537  private int clauseCleanupLbdBound_;
    2546  public boolean hasClauseCleanupLbdBound() {
    2547  return ((bitField0_ & 0x00004000) != 0);
    2548  }
    2558  return clauseCleanupLbdBound_;
    2559  }
    2560 
    2561  public static final int CLAUSE_CLEANUP_ORDERING_FIELD_NUMBER = 60;
    2562  private int clauseCleanupOrdering_;
    2566  public boolean hasClauseCleanupOrdering() {
    2567  return ((bitField0_ & 0x00008000) != 0);
    2568  }
    2573  @SuppressWarnings("deprecation")
    2575  return result == null ? com.google.ortools.sat.SatParameters.ClauseOrdering.CLAUSE_ACTIVITY : result;
    2576  }
    2577 
    2578  public static final int PB_CLEANUP_INCREMENT_FIELD_NUMBER = 46;
    2579  private int pbCleanupIncrement_;
    2587  public boolean hasPbCleanupIncrement() {
    2588  return ((bitField0_ & 0x00010000) != 0);
    2589  }
    2597  public int getPbCleanupIncrement() {
    2598  return pbCleanupIncrement_;
    2599  }
    2600 
    2601  public static final int PB_CLEANUP_RATIO_FIELD_NUMBER = 47;
    2602  private double pbCleanupRatio_;
    2606  public boolean hasPbCleanupRatio() {
    2607  return ((bitField0_ & 0x00020000) != 0);
    2608  }
    2612  public double getPbCleanupRatio() {
    2613  return pbCleanupRatio_;
    2614  }
    2615 
    2617  private int minimizeWithPropagationRestartPeriod_;
    2636  return ((bitField0_ & 0x00040000) != 0);
    2637  }
    2656  return minimizeWithPropagationRestartPeriod_;
    2657  }
    2658 
    2660  private int minimizeWithPropagationNumDecisions_;
    2665  return ((bitField0_ & 0x00080000) != 0);
    2666  }
    2671  return minimizeWithPropagationNumDecisions_;
    2672  }
    2673 
    2674  public static final int VARIABLE_ACTIVITY_DECAY_FIELD_NUMBER = 15;
    2675  private double variableActivityDecay_;
    2689  public boolean hasVariableActivityDecay() {
    2690  return ((bitField0_ & 0x00100000) != 0);
    2691  }
    2705  public double getVariableActivityDecay() {
    2706  return variableActivityDecay_;
    2707  }
    2708 
    2709  public static final int MAX_VARIABLE_ACTIVITY_VALUE_FIELD_NUMBER = 16;
    2710  private double maxVariableActivityValue_;
    2714  public boolean hasMaxVariableActivityValue() {
    2715  return ((bitField0_ & 0x00200000) != 0);
    2716  }
    2721  return maxVariableActivityValue_;
    2722  }
    2723 
    2724  public static final int GLUCOSE_MAX_DECAY_FIELD_NUMBER = 22;
    2725  private double glucoseMaxDecay_;
    2736  public boolean hasGlucoseMaxDecay() {
    2737  return ((bitField0_ & 0x00400000) != 0);
    2738  }
    2749  public double getGlucoseMaxDecay() {
    2750  return glucoseMaxDecay_;
    2751  }
    2752 
    2753  public static final int GLUCOSE_DECAY_INCREMENT_FIELD_NUMBER = 23;
    2754  private double glucoseDecayIncrement_;
    2758  public boolean hasGlucoseDecayIncrement() {
    2759  return ((bitField0_ & 0x00800000) != 0);
    2760  }
    2764  public double getGlucoseDecayIncrement() {
    2765  return glucoseDecayIncrement_;
    2766  }
    2767 
    2768  public static final int GLUCOSE_DECAY_INCREMENT_PERIOD_FIELD_NUMBER = 24;
    2769  private int glucoseDecayIncrementPeriod_;
    2774  return ((bitField0_ & 0x01000000) != 0);
    2775  }
    2780  return glucoseDecayIncrementPeriod_;
    2781  }
    2782 
    2783  public static final int CLAUSE_ACTIVITY_DECAY_FIELD_NUMBER = 17;
    2784  private double clauseActivityDecay_;
    2792  public boolean hasClauseActivityDecay() {
    2793  return ((bitField0_ & 0x02000000) != 0);
    2794  }
    2802  public double getClauseActivityDecay() {
    2803  return clauseActivityDecay_;
    2804  }
    2805 
    2806  public static final int MAX_CLAUSE_ACTIVITY_VALUE_FIELD_NUMBER = 18;
    2807  private double maxClauseActivityValue_;
    2811  public boolean hasMaxClauseActivityValue() {
    2812  return ((bitField0_ & 0x04000000) != 0);
    2813  }
    2817  public double getMaxClauseActivityValue() {
    2818  return maxClauseActivityValue_;
    2819  }
    2820 
    2821  public static final int RESTART_ALGORITHMS_FIELD_NUMBER = 61;
    2822  private java.util.List<java.lang.Integer> restartAlgorithms_;
    2823  private static final com.google.protobuf.Internal.ListAdapter.Converter<
    2824  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm> restartAlgorithms_converter_ =
    2825  new com.google.protobuf.Internal.ListAdapter.Converter<
    2826  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>() {
    2827  public com.google.ortools.sat.SatParameters.RestartAlgorithm convert(java.lang.Integer from) {
    2828  @SuppressWarnings("deprecation")
    2830  return result == null ? com.google.ortools.sat.SatParameters.RestartAlgorithm.NO_RESTART : result;
    2831  }
    2832  };
    2848  return new com.google.protobuf.Internal.ListAdapter<
    2849  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>(restartAlgorithms_, restartAlgorithms_converter_);
    2850  }
    2866  return restartAlgorithms_.size();
    2867  }
    2883  return restartAlgorithms_converter_.convert(restartAlgorithms_.get(index));
    2884  }
    2885 
    2886  public static final int DEFAULT_RESTART_ALGORITHMS_FIELD_NUMBER = 70;
    2887  private volatile java.lang.Object defaultRestartAlgorithms_;
    2891  public boolean hasDefaultRestartAlgorithms() {
    2892  return ((bitField0_ & 0x08000000) != 0);
    2893  }
    2897  public java.lang.String getDefaultRestartAlgorithms() {
    2898  java.lang.Object ref = defaultRestartAlgorithms_;
    2899  if (ref instanceof java.lang.String) {
    2900  return (java.lang.String) ref;
    2901  } else {
    2902  com.google.protobuf.ByteString bs =
    2903  (com.google.protobuf.ByteString) ref;
    2904  java.lang.String s = bs.toStringUtf8();
    2905  if (bs.isValidUtf8()) {
    2906  defaultRestartAlgorithms_ = s;
    2907  }
    2908  return s;
    2909  }
    2910  }
    2914  public com.google.protobuf.ByteString
    2916  java.lang.Object ref = defaultRestartAlgorithms_;
    2917  if (ref instanceof java.lang.String) {
    2918  com.google.protobuf.ByteString b =
    2919  com.google.protobuf.ByteString.copyFromUtf8(
    2920  (java.lang.String) ref);
    2921  defaultRestartAlgorithms_ = b;
    2922  return b;
    2923  } else {
    2924  return (com.google.protobuf.ByteString) ref;
    2925  }
    2926  }
    2927 
    2928  public static final int RESTART_PERIOD_FIELD_NUMBER = 30;
    2929  private int restartPeriod_;
    2938  public boolean hasRestartPeriod() {
    2939  return ((bitField0_ & 0x10000000) != 0);
    2940  }
    2949  public int getRestartPeriod() {
    2950  return restartPeriod_;
    2951  }
    2952 
    2953  public static final int RESTART_RUNNING_WINDOW_SIZE_FIELD_NUMBER = 62;
    2954  private int restartRunningWindowSize_;
    2962  public boolean hasRestartRunningWindowSize() {
    2963  return ((bitField0_ & 0x20000000) != 0);
    2964  }
    2973  return restartRunningWindowSize_;
    2974  }
    2975 
    2976  public static final int RESTART_DL_AVERAGE_RATIO_FIELD_NUMBER = 63;
    2977  private double restartDlAverageRatio_;
    2986  public boolean hasRestartDlAverageRatio() {
    2987  return ((bitField0_ & 0x40000000) != 0);
    2988  }
    2997  public double getRestartDlAverageRatio() {
    2998  return restartDlAverageRatio_;
    2999  }
    3000 
    3001  public static final int RESTART_LBD_AVERAGE_RATIO_FIELD_NUMBER = 71;
    3002  private double restartLbdAverageRatio_;
    3006  public boolean hasRestartLbdAverageRatio() {
    3007  return ((bitField0_ & 0x80000000) != 0);
    3008  }
    3012  public double getRestartLbdAverageRatio() {
    3013  return restartLbdAverageRatio_;
    3014  }
    3015 
    3016  public static final int USE_BLOCKING_RESTART_FIELD_NUMBER = 64;
    3017  private boolean useBlockingRestart_;
    3027  public boolean hasUseBlockingRestart() {
    3028  return ((bitField1_ & 0x00000001) != 0);
    3029  }
    3039  public boolean getUseBlockingRestart() {
    3040  return useBlockingRestart_;
    3041  }
    3042 
    3043  public static final int BLOCKING_RESTART_WINDOW_SIZE_FIELD_NUMBER = 65;
    3044  private int blockingRestartWindowSize_;
    3048  public boolean hasBlockingRestartWindowSize() {
    3049  return ((bitField1_ & 0x00000002) != 0);
    3050  }
    3055  return blockingRestartWindowSize_;
    3056  }
    3057 
    3058  public static final int BLOCKING_RESTART_MULTIPLIER_FIELD_NUMBER = 66;
    3059  private double blockingRestartMultiplier_;
    3063  public boolean hasBlockingRestartMultiplier() {
    3064  return ((bitField1_ & 0x00000004) != 0);
    3065  }
    3070  return blockingRestartMultiplier_;
    3071  }
    3072 
    3074  private int numConflictsBeforeStrategyChanges_;
    3085  return ((bitField1_ & 0x00000008) != 0);
    3086  }
    3097  return numConflictsBeforeStrategyChanges_;
    3098  }
    3099 
    3100  public static final int STRATEGY_CHANGE_INCREASE_RATIO_FIELD_NUMBER = 69;
    3101  private double strategyChangeIncreaseRatio_;
    3111  return ((bitField1_ & 0x00000010) != 0);
    3112  }
    3122  return strategyChangeIncreaseRatio_;
    3123  }
    3124 
    3125  public static final int MAX_TIME_IN_SECONDS_FIELD_NUMBER = 36;
    3126  private double maxTimeInSeconds_;
    3136  public boolean hasMaxTimeInSeconds() {
    3137  return ((bitField1_ & 0x00000020) != 0);
    3138  }
    3148  public double getMaxTimeInSeconds() {
    3149  return maxTimeInSeconds_;
    3150  }
    3151 
    3152  public static final int MAX_DETERMINISTIC_TIME_FIELD_NUMBER = 67;
    3153  private double maxDeterministicTime_;
    3165  public boolean hasMaxDeterministicTime() {
    3166  return ((bitField1_ & 0x00000040) != 0);
    3167  }
    3179  public double getMaxDeterministicTime() {
    3180  return maxDeterministicTime_;
    3181  }
    3182 
    3183  public static final int MAX_NUMBER_OF_CONFLICTS_FIELD_NUMBER = 37;
    3184  private long maxNumberOfConflicts_;
    3197  public boolean hasMaxNumberOfConflicts() {
    3198  return ((bitField1_ & 0x00000080) != 0);
    3199  }
    3212  public long getMaxNumberOfConflicts() {
    3213  return maxNumberOfConflicts_;
    3214  }
    3215 
    3216  public static final int MAX_MEMORY_IN_MB_FIELD_NUMBER = 40;
    3217  private long maxMemoryInMb_;
    3228  public boolean hasMaxMemoryInMb() {
    3229  return ((bitField1_ & 0x00000100) != 0);
    3230  }
    3241  public long getMaxMemoryInMb() {
    3242  return maxMemoryInMb_;
    3243  }
    3244 
    3245  public static final int TREAT_BINARY_CLAUSES_SEPARATELY_FIELD_NUMBER = 33;
    3246  private boolean treatBinaryClausesSeparately_;
    3257  return ((bitField1_ & 0x00000200) != 0);
    3258  }
    3269  return treatBinaryClausesSeparately_;
    3270  }
    3271 
    3272  public static final int RANDOM_SEED_FIELD_NUMBER = 31;
    3273  private int randomSeed_;
    3286  public boolean hasRandomSeed() {
    3287  return ((bitField1_ & 0x00000400) != 0);
    3288  }
    3301  public int getRandomSeed() {
    3302  return randomSeed_;
    3303  }
    3304 
    3305  public static final int LOG_SEARCH_PROGRESS_FIELD_NUMBER = 41;
    3306  private boolean logSearchProgress_;
    3314  public boolean hasLogSearchProgress() {
    3315  return ((bitField1_ & 0x00000800) != 0);
    3316  }
    3324  public boolean getLogSearchProgress() {
    3325  return logSearchProgress_;
    3326  }
    3327 
    3328  public static final int USE_PB_RESOLUTION_FIELD_NUMBER = 43;
    3329  private boolean usePbResolution_;
    3340  public boolean hasUsePbResolution() {
    3341  return ((bitField1_ & 0x00001000) != 0);
    3342  }
    3353  public boolean getUsePbResolution() {
    3354  return usePbResolution_;
    3355  }
    3356 
    3358  private boolean minimizeReductionDuringPbResolution_;
    3370  return ((bitField1_ & 0x00002000) != 0);
    3371  }
    3383  return minimizeReductionDuringPbResolution_;
    3384  }
    3385 
    3386  public static final int COUNT_ASSUMPTION_LEVELS_IN_LBD_FIELD_NUMBER = 49;
    3387  private boolean countAssumptionLevelsInLbd_;
    3403  return ((bitField1_ & 0x00004000) != 0);
    3404  }
    3420  return countAssumptionLevelsInLbd_;
    3421  }
    3422 
    3423  public static final int PRESOLVE_BVE_THRESHOLD_FIELD_NUMBER = 54;
    3424  private int presolveBveThreshold_;
    3434  public boolean hasPresolveBveThreshold() {
    3435  return ((bitField1_ & 0x00008000) != 0);
    3436  }
    3447  return presolveBveThreshold_;
    3448  }
    3449 
    3450  public static final int PRESOLVE_BVE_CLAUSE_WEIGHT_FIELD_NUMBER = 55;
    3451  private int presolveBveClauseWeight_;
    3460  public boolean hasPresolveBveClauseWeight() {
    3461  return ((bitField1_ & 0x00010000) != 0);
    3462  }
    3472  return presolveBveClauseWeight_;
    3473  }
    3474 
    3476  private double presolveProbingDeterministicTimeLimit_;
    3486  return ((bitField1_ & 0x00020000) != 0);
    3487  }
    3497  return presolveProbingDeterministicTimeLimit_;
    3498  }
    3499 
    3500  public static final int PRESOLVE_BLOCKED_CLAUSE_FIELD_NUMBER = 88;
    3501  private boolean presolveBlockedClause_;
    3510  public boolean hasPresolveBlockedClause() {
    3511  return ((bitField1_ & 0x00040000) != 0);
    3512  }
    3521  public boolean getPresolveBlockedClause() {
    3522  return presolveBlockedClause_;
    3523  }
    3524 
    3525  public static final int PRESOLVE_USE_BVA_FIELD_NUMBER = 72;
    3526  private boolean presolveUseBva_;
    3534  public boolean hasPresolveUseBva() {
    3535  return ((bitField1_ & 0x00080000) != 0);
    3536  }
    3544  public boolean getPresolveUseBva() {
    3545  return presolveUseBva_;
    3546  }
    3547 
    3548  public static final int PRESOLVE_BVA_THRESHOLD_FIELD_NUMBER = 73;
    3549  private int presolveBvaThreshold_;
    3560  public boolean hasPresolveBvaThreshold() {
    3561  return ((bitField1_ & 0x00100000) != 0);
    3562  }
    3574  return presolveBvaThreshold_;
    3575  }
    3576 
    3577  public static final int USE_OPTIMIZATION_HINTS_FIELD_NUMBER = 35;
    3578  private boolean useOptimizationHints_;
    3589  public boolean hasUseOptimizationHints() {
    3590  return ((bitField1_ & 0x00200000) != 0);
    3591  }
    3602  public boolean getUseOptimizationHints() {
    3603  return useOptimizationHints_;
    3604  }
    3605 
    3606  public static final int MINIMIZE_CORE_FIELD_NUMBER = 50;
    3607  private boolean minimizeCore_;
    3615  public boolean hasMinimizeCore() {
    3616  return ((bitField1_ & 0x00400000) != 0);
    3617  }
    3625  public boolean getMinimizeCore() {
    3626  return minimizeCore_;
    3627  }
    3628 
    3629  public static final int FIND_MULTIPLE_CORES_FIELD_NUMBER = 84;
    3630  private boolean findMultipleCores_;
    3639  public boolean hasFindMultipleCores() {
    3640  return ((bitField1_ & 0x00800000) != 0);
    3641  }
    3650  public boolean getFindMultipleCores() {
    3651  return findMultipleCores_;
    3652  }
    3653 
    3654  public static final int COVER_OPTIMIZATION_FIELD_NUMBER = 89;
    3655  private boolean coverOptimization_;
    3664  public boolean hasCoverOptimization() {
    3665  return ((bitField1_ & 0x01000000) != 0);
    3666  }
    3675  public boolean getCoverOptimization() {
    3676  return coverOptimization_;
    3677  }
    3678 
    3679  public static final int MAX_SAT_ASSUMPTION_ORDER_FIELD_NUMBER = 51;
    3680  private int maxSatAssumptionOrder_;
    3684  public boolean hasMaxSatAssumptionOrder() {
    3685  return ((bitField1_ & 0x02000000) != 0);
    3686  }
    3691  @SuppressWarnings("deprecation")
    3694  }
    3695 
    3697  private boolean maxSatReverseAssumptionOrder_;
    3707  return ((bitField1_ & 0x04000000) != 0);
    3708  }
    3718  return maxSatReverseAssumptionOrder_;
    3719  }
    3720 
    3721  public static final int MAX_SAT_STRATIFICATION_FIELD_NUMBER = 53;
    3722  private int maxSatStratification_;
    3726  public boolean hasMaxSatStratification() {
    3727  return ((bitField1_ & 0x08000000) != 0);
    3728  }
    3733  @SuppressWarnings("deprecation")
    3736  }
    3737 
    3739  private boolean usePrecedencesInDisjunctiveConstraint_;
    3755  return ((bitField1_ & 0x10000000) != 0);
    3756  }
    3772  return usePrecedencesInDisjunctiveConstraint_;
    3773  }
    3774 
    3776  private boolean useOverloadCheckerInCumulativeConstraint_;
    3790  return ((bitField1_ & 0x20000000) != 0);
    3791  }
    3805  return useOverloadCheckerInCumulativeConstraint_;
    3806  }
    3807 
    3809  private boolean useTimetableEdgeFindingInCumulativeConstraint_;
    3823  return ((bitField1_ & 0x40000000) != 0);
    3824  }
    3838  return useTimetableEdgeFindingInCumulativeConstraint_;
    3839  }
    3840 
    3842  private boolean useDisjunctiveConstraintInCumulativeConstraint_;
    3858  return ((bitField1_ & 0x80000000) != 0);
    3859  }
    3875  return useDisjunctiveConstraintInCumulativeConstraint_;
    3876  }
    3877 
    3878  public static final int LINEARIZATION_LEVEL_FIELD_NUMBER = 90;
    3879  private int linearizationLevel_;
    3890  public boolean hasLinearizationLevel() {
    3891  return ((bitField2_ & 0x00000001) != 0);
    3892  }
    3903  public int getLinearizationLevel() {
    3904  return linearizationLevel_;
    3905  }
    3906 
    3907  public static final int BOOLEAN_ENCODING_LEVEL_FIELD_NUMBER = 107;
    3908  private int booleanEncodingLevel_;
    3917  public boolean hasBooleanEncodingLevel() {
    3918  return ((bitField2_ & 0x00000002) != 0);
    3919  }
    3929  return booleanEncodingLevel_;
    3930  }
    3931 
    3932  public static final int MAX_NUM_CUTS_FIELD_NUMBER = 91;
    3933  private int maxNumCuts_;
    3944  public boolean hasMaxNumCuts() {
    3945  return ((bitField2_ & 0x00000004) != 0);
    3946  }
    3957  public int getMaxNumCuts() {
    3958  return maxNumCuts_;
    3959  }
    3960 
    3961  public static final int ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER = 92;
    3962  private boolean onlyAddCutsAtLevelZero_;
    3971  public boolean hasOnlyAddCutsAtLevelZero() {
    3972  return ((bitField2_ & 0x00000008) != 0);
    3973  }
    3982  public boolean getOnlyAddCutsAtLevelZero() {
    3983  return onlyAddCutsAtLevelZero_;
    3984  }
    3985 
    3986  public static final int ADD_KNAPSACK_CUTS_FIELD_NUMBER = 111;
    3987  private boolean addKnapsackCuts_;
    3997  public boolean hasAddKnapsackCuts() {
    3998  return ((bitField2_ & 0x00000010) != 0);
    3999  }
    4009  public boolean getAddKnapsackCuts() {
    4010  return addKnapsackCuts_;
    4011  }
    4012 
    4013  public static final int ADD_CG_CUTS_FIELD_NUMBER = 117;
    4014  private boolean addCgCuts_;
    4023  public boolean hasAddCgCuts() {
    4024  return ((bitField2_ & 0x00000020) != 0);
    4025  }
    4034  public boolean getAddCgCuts() {
    4035  return addCgCuts_;
    4036  }
    4037 
    4038  public static final int ADD_MIR_CUTS_FIELD_NUMBER = 120;
    4039  private boolean addMirCuts_;
    4048  public boolean hasAddMirCuts() {
    4049  return ((bitField2_ & 0x00000040) != 0);
    4050  }
    4059  public boolean getAddMirCuts() {
    4060  return addMirCuts_;
    4061  }
    4062 
    4063  public static final int USE_MIR_ROUNDING_FIELD_NUMBER = 118;
    4064  private boolean useMirRounding_;
    4074  public boolean hasUseMirRounding() {
    4075  return ((bitField2_ & 0x00000080) != 0);
    4076  }
    4086  public boolean getUseMirRounding() {
    4087  return useMirRounding_;
    4088  }
    4089 
    4090  public static final int MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER = 119;
    4091  private int maxIntegerRoundingScaling_;
    4103  public boolean hasMaxIntegerRoundingScaling() {
    4104  return ((bitField2_ & 0x00000100) != 0);
    4105  }
    4118  return maxIntegerRoundingScaling_;
    4119  }
    4120 
    4121  public static final int ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER = 112;
    4122  private boolean addLpConstraintsLazily_;
    4133  public boolean hasAddLpConstraintsLazily() {
    4134  return ((bitField2_ & 0x00000200) != 0);
    4135  }
    4146  public boolean getAddLpConstraintsLazily() {
    4147  return addLpConstraintsLazily_;
    4148  }
    4149 
    4151  private double minOrthogonalityForLpConstraints_;
    4164  return ((bitField2_ & 0x00000400) != 0);
    4165  }
    4178  return minOrthogonalityForLpConstraints_;
    4179  }
    4180 
    4181  public static final int MAX_INACTIVE_COUNT_FIELD_NUMBER = 121;
    4182  private long maxInactiveCount_;
    4191  public boolean hasMaxInactiveCount() {
    4192  return ((bitField2_ & 0x00000800) != 0);
    4193  }
    4202  public long getMaxInactiveCount() {
    4203  return maxInactiveCount_;
    4204  }
    4205 
    4206  public static final int CONSTRAINT_REMOVAL_BATCH_SIZE_FIELD_NUMBER = 122;
    4207  private long constraintRemovalBatchSize_;
    4217  return ((bitField2_ & 0x00001000) != 0);
    4218  }
    4228  return constraintRemovalBatchSize_;
    4229  }
    4230 
    4231  public static final int SEARCH_BRANCHING_FIELD_NUMBER = 82;
    4232  private int searchBranching_;
    4236  public boolean hasSearchBranching() {
    4237  return ((bitField2_ & 0x00002000) != 0);
    4238  }
    4243  @SuppressWarnings("deprecation")
    4245  return result == null ? com.google.ortools.sat.SatParameters.SearchBranching.AUTOMATIC_SEARCH : result;
    4246  }
    4247 
    4248  public static final int EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER = 94;
    4249  private boolean exploitIntegerLpSolution_;
    4260  public boolean hasExploitIntegerLpSolution() {
    4261  return ((bitField2_ & 0x00004000) != 0);
    4262  }
    4273  public boolean getExploitIntegerLpSolution() {
    4274  return exploitIntegerLpSolution_;
    4275  }
    4276 
    4277  public static final int EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER = 116;
    4278  private boolean exploitAllLpSolution_;
    4288  public boolean hasExploitAllLpSolution() {
    4289  return ((bitField2_ & 0x00008000) != 0);
    4290  }
    4300  public boolean getExploitAllLpSolution() {
    4301  return exploitAllLpSolution_;
    4302  }
    4303 
    4304  public static final int EXPLOIT_BEST_SOLUTION_FIELD_NUMBER = 130;
    4305  private boolean exploitBestSolution_;
    4313  public boolean hasExploitBestSolution() {
    4314  return ((bitField2_ & 0x00010000) != 0);
    4315  }
    4323  public boolean getExploitBestSolution() {
    4324  return exploitBestSolution_;
    4325  }
    4326 
    4327  public static final int EXPLOIT_OBJECTIVE_FIELD_NUMBER = 131;
    4328  private boolean exploitObjective_;
    4337  public boolean hasExploitObjective() {
    4338  return ((bitField2_ & 0x00020000) != 0);
    4339  }
    4348  public boolean getExploitObjective() {
    4349  return exploitObjective_;
    4350  }
    4351 
    4352  public static final int PSEUDO_COST_RELIABILITY_THRESHOLD_FIELD_NUMBER = 123;
    4353  private long pseudoCostReliabilityThreshold_;
    4363  return ((bitField2_ & 0x00040000) != 0);
    4364  }
    4374  return pseudoCostReliabilityThreshold_;
    4375  }
    4376 
    4377  public static final int OPTIMIZE_WITH_CORE_FIELD_NUMBER = 83;
    4378  private boolean optimizeWithCore_;
    4389  public boolean hasOptimizeWithCore() {
    4390  return ((bitField2_ & 0x00080000) != 0);
    4391  }
    4402  public boolean getOptimizeWithCore() {
    4403  return optimizeWithCore_;
    4404  }
    4405 
    4406  public static final int BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER = 99;
    4407  private int binarySearchNumConflicts_;
    4418  public boolean hasBinarySearchNumConflicts() {
    4419  return ((bitField2_ & 0x00100000) != 0);
    4420  }
    4432  return binarySearchNumConflicts_;
    4433  }
    4434 
    4435  public static final int OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER = 85;
    4436  private boolean optimizeWithMaxHs_;
    4449  public boolean hasOptimizeWithMaxHs() {
    4450  return ((bitField2_ & 0x00200000) != 0);
    4451  }
    4464  public boolean getOptimizeWithMaxHs() {
    4465  return optimizeWithMaxHs_;
    4466  }
    4467 
    4468  public static final int CP_MODEL_PRESOLVE_FIELD_NUMBER = 86;
    4469  private boolean cpModelPresolve_;
    4477  public boolean hasCpModelPresolve() {
    4478  return ((bitField2_ & 0x00400000) != 0);
    4479  }
    4487  public boolean getCpModelPresolve() {
    4488  return cpModelPresolve_;
    4489  }
    4490 
    4491  public static final int CP_MODEL_PROBING_LEVEL_FIELD_NUMBER = 110;
    4492  private int cpModelProbingLevel_;
    4500  public boolean hasCpModelProbingLevel() {
    4501  return ((bitField2_ & 0x00800000) != 0);
    4502  }
    4510  public int getCpModelProbingLevel() {
    4511  return cpModelProbingLevel_;
    4512  }
    4513 
    4514  public static final int CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER = 93;
    4515  private boolean cpModelUseSatPresolve_;
    4523  public boolean hasCpModelUseSatPresolve() {
    4524  return ((bitField2_ & 0x01000000) != 0);
    4525  }
    4533  public boolean getCpModelUseSatPresolve() {
    4534  return cpModelUseSatPresolve_;
    4535  }
    4536 
    4537  public static final int ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER = 87;
    4538  private boolean enumerateAllSolutions_;
    4551  public boolean hasEnumerateAllSolutions() {
    4552  return ((bitField2_ & 0x02000000) != 0);
    4553  }
    4566  public boolean getEnumerateAllSolutions() {
    4567  return enumerateAllSolutions_;
    4568  }
    4569 
    4571  private boolean fillTightenedDomainsInResponse_;
    4584  return ((bitField2_ & 0x04000000) != 0);
    4585  }
    4598  return fillTightenedDomainsInResponse_;
    4599  }
    4600 
    4601  public static final int INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER = 106;
    4602  private boolean instantiateAllVariables_;
    4611  public boolean hasInstantiateAllVariables() {
    4612  return ((bitField2_ & 0x08000000) != 0);
    4613  }
    4622  public boolean getInstantiateAllVariables() {
    4623  return instantiateAllVariables_;
    4624  }
    4625 
    4627  private boolean autoDetectGreaterThanAtLeastOneOf_;
    4639  return ((bitField2_ & 0x10000000) != 0);
    4640  }
    4652  return autoDetectGreaterThanAtLeastOneOf_;
    4653  }
    4654 
    4655  public static final int STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER = 98;
    4656  private boolean stopAfterFirstSolution_;
    4664  public boolean hasStopAfterFirstSolution() {
    4665  return ((bitField2_ & 0x20000000) != 0);
    4666  }
    4674  public boolean getStopAfterFirstSolution() {
    4675  return stopAfterFirstSolution_;
    4676  }
    4677 
    4678  public static final int NUM_SEARCH_WORKERS_FIELD_NUMBER = 100;
    4679  private int numSearchWorkers_;
    4688  public boolean hasNumSearchWorkers() {
    4689  return ((bitField2_ & 0x40000000) != 0);
    4690  }
    4699  public int getNumSearchWorkers() {
    4700  return numSearchWorkers_;
    4701  }
    4702 
    4703  public static final int INTERLEAVE_SEARCH_FIELD_NUMBER = 136;
    4704  private boolean interleaveSearch_;
    4715  public boolean hasInterleaveSearch() {
    4716  return ((bitField2_ & 0x80000000) != 0);
    4717  }
    4728  public boolean getInterleaveSearch() {
    4729  return interleaveSearch_;
    4730  }
    4731 
    4732  public static final int DETERMINISTIC_PARALLEL_SEARCH_FIELD_NUMBER = 134;
    4733  private boolean deterministicParallelSearch_;
    4744  return ((bitField3_ & 0x00000001) != 0);
    4745  }
    4756  return deterministicParallelSearch_;
    4757  }
    4758 
    4759  public static final int SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER = 113;
    4760  private boolean shareObjectiveBounds_;
    4768  public boolean hasShareObjectiveBounds() {
    4769  return ((bitField3_ & 0x00000002) != 0);
    4770  }
    4778  public boolean getShareObjectiveBounds() {
    4779  return shareObjectiveBounds_;
    4780  }
    4781 
    4782  public static final int SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER = 114;
    4783  private boolean shareLevelZeroBounds_;
    4791  public boolean hasShareLevelZeroBounds() {
    4792  return ((bitField3_ & 0x00000004) != 0);
    4793  }
    4801  public boolean getShareLevelZeroBounds() {
    4802  return shareLevelZeroBounds_;
    4803  }
    4804 
    4805  public static final int USE_LNS_ONLY_FIELD_NUMBER = 101;
    4806  private boolean useLnsOnly_;
    4814  public boolean hasUseLnsOnly() {
    4815  return ((bitField3_ & 0x00000008) != 0);
    4816  }
    4824  public boolean getUseLnsOnly() {
    4825  return useLnsOnly_;
    4826  }
    4827 
    4828  public static final int LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER = 105;
    4829  private boolean lnsFocusOnDecisionVariables_;
    4834  return ((bitField3_ & 0x00000010) != 0);
    4835  }
    4840  return lnsFocusOnDecisionVariables_;
    4841  }
    4842 
    4843  public static final int USE_RINS_LNS_FIELD_NUMBER = 129;
    4844  private boolean useRinsLns_;
    4852  public boolean hasUseRinsLns() {
    4853  return ((bitField3_ & 0x00000020) != 0);
    4854  }
    4862  public boolean getUseRinsLns() {
    4863  return useRinsLns_;
    4864  }
    4865 
    4866  public static final int RANDOMIZE_SEARCH_FIELD_NUMBER = 103;
    4867  private boolean randomizeSearch_;
    4875  public boolean hasRandomizeSearch() {
    4876  return ((bitField3_ & 0x00000040) != 0);
    4877  }
    4885  public boolean getRandomizeSearch() {
    4886  return randomizeSearch_;
    4887  }
    4888 
    4889  public static final int SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER = 104;
    4890  private long searchRandomizationTolerance_;
    4905  return ((bitField3_ & 0x00000080) != 0);
    4906  }
    4921  return searchRandomizationTolerance_;
    4922  }
    4923 
    4924  public static final int USE_OPTIONAL_VARIABLES_FIELD_NUMBER = 108;
    4925  private boolean useOptionalVariables_;
    4935  public boolean hasUseOptionalVariables() {
    4936  return ((bitField3_ & 0x00000100) != 0);
    4937  }
    4947  public boolean getUseOptionalVariables() {
    4948  return useOptionalVariables_;
    4949  }
    4950 
    4951  public static final int USE_EXACT_LP_REASON_FIELD_NUMBER = 109;
    4952  private boolean useExactLpReason_;
    4963  public boolean hasUseExactLpReason() {
    4964  return ((bitField3_ & 0x00000200) != 0);
    4965  }
    4976  public boolean getUseExactLpReason() {
    4977  return useExactLpReason_;
    4978  }
    4979 
    4980  public static final int USE_COMBINED_NO_OVERLAP_FIELD_NUMBER = 133;
    4981  private boolean useCombinedNoOverlap_;
    4991  public boolean hasUseCombinedNoOverlap() {
    4992  return ((bitField3_ & 0x00000400) != 0);
    4993  }
    5003  public boolean getUseCombinedNoOverlap() {
    5004  return useCombinedNoOverlap_;
    5005  }
    5006 
    5007  public static final int MIP_MAX_BOUND_FIELD_NUMBER = 124;
    5008  private double mipMaxBound_;
    5018  public boolean hasMipMaxBound() {
    5019  return ((bitField3_ & 0x00000800) != 0);
    5020  }
    5030  public double getMipMaxBound() {
    5031  return mipMaxBound_;
    5032  }
    5033 
    5034  public static final int MIP_VAR_SCALING_FIELD_NUMBER = 125;
    5035  private double mipVarScaling_;
    5045  public boolean hasMipVarScaling() {
    5046  return ((bitField3_ & 0x00001000) != 0);
    5047  }
    5057  public double getMipVarScaling() {
    5058  return mipVarScaling_;
    5059  }
    5060 
    5061  public static final int MIP_WANTED_PRECISION_FIELD_NUMBER = 126;
    5062  private double mipWantedPrecision_;
    5078  public boolean hasMipWantedPrecision() {
    5079  return ((bitField3_ & 0x00002000) != 0);
    5080  }
    5096  public double getMipWantedPrecision() {
    5097  return mipWantedPrecision_;
    5098  }
    5099 
    5100  public static final int MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER = 127;
    5101  private int mipMaxActivityExponent_;
    5115  public boolean hasMipMaxActivityExponent() {
    5116  return ((bitField3_ & 0x00004000) != 0);
    5117  }
    5132  return mipMaxActivityExponent_;
    5133  }
    5134 
    5135  public static final int MIP_CHECK_PRECISION_FIELD_NUMBER = 128;
    5136  private double mipCheckPrecision_;
    5147  public boolean hasMipCheckPrecision() {
    5148  return ((bitField3_ & 0x00008000) != 0);
    5149  }
    5160  public double getMipCheckPrecision() {
    5161  return mipCheckPrecision_;
    5162  }
    5163 
    5164  public static final int CATCH_SIGINT_SIGNAL_FIELD_NUMBER = 135;
    5165  private boolean catchSigintSignal_;
    5175  public boolean hasCatchSigintSignal() {
    5176  return ((bitField3_ & 0x00010000) != 0);
    5177  }
    5187  public boolean getCatchSigintSignal() {
    5188  return catchSigintSignal_;
    5189  }
    5190 
    5191  private byte memoizedIsInitialized = -1;
    5192  @java.lang.Override
    5193  public final boolean isInitialized() {
    5194  byte isInitialized = memoizedIsInitialized;
    5195  if (isInitialized == 1) return true;
    5196  if (isInitialized == 0) return false;
    5197 
    5198  memoizedIsInitialized = 1;
    5199  return true;
    5200  }
    5201 
    5202  @java.lang.Override
    5203  public void writeTo(com.google.protobuf.CodedOutputStream output)
    5204  throws java.io.IOException {
    5205  if (((bitField0_ & 0x00000001) != 0)) {
    5206  output.writeEnum(1, preferredVariableOrder_);
    5207  }
    5208  if (((bitField0_ & 0x00000002) != 0)) {
    5209  output.writeEnum(2, initialPolarity_);
    5210  }
    5211  if (((bitField0_ & 0x00000100) != 0)) {
    5212  output.writeEnum(4, minimizationAlgorithm_);
    5213  }
    5214  if (((bitField0_ & 0x00000800) != 0)) {
    5215  output.writeInt32(11, clauseCleanupPeriod_);
    5216  }
    5217  if (((bitField0_ & 0x00001000) != 0)) {
    5218  output.writeInt32(13, clauseCleanupTarget_);
    5219  }
    5220  if (((bitField0_ & 0x00100000) != 0)) {
    5221  output.writeDouble(15, variableActivityDecay_);
    5222  }
    5223  if (((bitField0_ & 0x00200000) != 0)) {
    5224  output.writeDouble(16, maxVariableActivityValue_);
    5225  }
    5226  if (((bitField0_ & 0x02000000) != 0)) {
    5227  output.writeDouble(17, clauseActivityDecay_);
    5228  }
    5229  if (((bitField0_ & 0x04000000) != 0)) {
    5230  output.writeDouble(18, maxClauseActivityValue_);
    5231  }
    5232  if (((bitField0_ & 0x00400000) != 0)) {
    5233  output.writeDouble(22, glucoseMaxDecay_);
    5234  }
    5235  if (((bitField0_ & 0x00800000) != 0)) {
    5236  output.writeDouble(23, glucoseDecayIncrement_);
    5237  }
    5238  if (((bitField0_ & 0x01000000) != 0)) {
    5239  output.writeInt32(24, glucoseDecayIncrementPeriod_);
    5240  }
    5241  if (((bitField0_ & 0x10000000) != 0)) {
    5242  output.writeInt32(30, restartPeriod_);
    5243  }
    5244  if (((bitField1_ & 0x00000400) != 0)) {
    5245  output.writeInt32(31, randomSeed_);
    5246  }
    5247  if (((bitField0_ & 0x00000010) != 0)) {
    5248  output.writeDouble(32, randomBranchesRatio_);
    5249  }
    5250  if (((bitField1_ & 0x00000200) != 0)) {
    5251  output.writeBool(33, treatBinaryClausesSeparately_);
    5252  }
    5253  if (((bitField0_ & 0x00000200) != 0)) {
    5254  output.writeEnum(34, binaryMinimizationAlgorithm_);
    5255  }
    5256  if (((bitField1_ & 0x00200000) != 0)) {
    5257  output.writeBool(35, useOptimizationHints_);
    5258  }
    5259  if (((bitField1_ & 0x00000020) != 0)) {
    5260  output.writeDouble(36, maxTimeInSeconds_);
    5261  }
    5262  if (((bitField1_ & 0x00000080) != 0)) {
    5263  output.writeInt64(37, maxNumberOfConflicts_);
    5264  }
    5265  if (((bitField1_ & 0x00000100) != 0)) {
    5266  output.writeInt64(40, maxMemoryInMb_);
    5267  }
    5268  if (((bitField1_ & 0x00000800) != 0)) {
    5269  output.writeBool(41, logSearchProgress_);
    5270  }
    5271  if (((bitField1_ & 0x00001000) != 0)) {
    5272  output.writeBool(43, usePbResolution_);
    5273  }
    5274  if (((bitField0_ & 0x00000004) != 0)) {
    5275  output.writeBool(44, usePhaseSaving_);
    5276  }
    5277  if (((bitField0_ & 0x00000008) != 0)) {
    5278  output.writeDouble(45, randomPolarityRatio_);
    5279  }
    5280  if (((bitField0_ & 0x00010000) != 0)) {
    5281  output.writeInt32(46, pbCleanupIncrement_);
    5282  }
    5283  if (((bitField0_ & 0x00020000) != 0)) {
    5284  output.writeDouble(47, pbCleanupRatio_);
    5285  }
    5286  if (((bitField1_ & 0x00002000) != 0)) {
    5287  output.writeBool(48, minimizeReductionDuringPbResolution_);
    5288  }
    5289  if (((bitField1_ & 0x00004000) != 0)) {
    5290  output.writeBool(49, countAssumptionLevelsInLbd_);
    5291  }
    5292  if (((bitField1_ & 0x00400000) != 0)) {
    5293  output.writeBool(50, minimizeCore_);
    5294  }
    5295  if (((bitField1_ & 0x02000000) != 0)) {
    5296  output.writeEnum(51, maxSatAssumptionOrder_);
    5297  }
    5298  if (((bitField1_ & 0x04000000) != 0)) {
    5299  output.writeBool(52, maxSatReverseAssumptionOrder_);
    5300  }
    5301  if (((bitField1_ & 0x08000000) != 0)) {
    5302  output.writeEnum(53, maxSatStratification_);
    5303  }
    5304  if (((bitField1_ & 0x00008000) != 0)) {
    5305  output.writeInt32(54, presolveBveThreshold_);
    5306  }
    5307  if (((bitField1_ & 0x00010000) != 0)) {
    5308  output.writeInt32(55, presolveBveClauseWeight_);
    5309  }
    5310  if (((bitField0_ & 0x00000400) != 0)) {
    5311  output.writeBool(56, subsumptionDuringConflictAnalysis_);
    5312  }
    5313  if (((bitField1_ & 0x00020000) != 0)) {
    5314  output.writeDouble(57, presolveProbingDeterministicTimeLimit_);
    5315  }
    5316  if (((bitField0_ & 0x00002000) != 0)) {
    5317  output.writeEnum(58, clauseCleanupProtection_);
    5318  }
    5319  if (((bitField0_ & 0x00004000) != 0)) {
    5320  output.writeInt32(59, clauseCleanupLbdBound_);
    5321  }
    5322  if (((bitField0_ & 0x00008000) != 0)) {
    5323  output.writeEnum(60, clauseCleanupOrdering_);
    5324  }
    5325  for (int i = 0; i < restartAlgorithms_.size(); i++) {
    5326  output.writeEnum(61, restartAlgorithms_.get(i));
    5327  }
    5328  if (((bitField0_ & 0x20000000) != 0)) {
    5329  output.writeInt32(62, restartRunningWindowSize_);
    5330  }
    5331  if (((bitField0_ & 0x40000000) != 0)) {
    5332  output.writeDouble(63, restartDlAverageRatio_);
    5333  }
    5334  if (((bitField1_ & 0x00000001) != 0)) {
    5335  output.writeBool(64, useBlockingRestart_);
    5336  }
    5337  if (((bitField1_ & 0x00000002) != 0)) {
    5338  output.writeInt32(65, blockingRestartWindowSize_);
    5339  }
    5340  if (((bitField1_ & 0x00000004) != 0)) {
    5341  output.writeDouble(66, blockingRestartMultiplier_);
    5342  }
    5343  if (((bitField1_ & 0x00000040) != 0)) {
    5344  output.writeDouble(67, maxDeterministicTime_);
    5345  }
    5346  if (((bitField1_ & 0x00000008) != 0)) {
    5347  output.writeInt32(68, numConflictsBeforeStrategyChanges_);
    5348  }
    5349  if (((bitField1_ & 0x00000010) != 0)) {
    5350  output.writeDouble(69, strategyChangeIncreaseRatio_);
    5351  }
    5352  if (((bitField0_ & 0x08000000) != 0)) {
    5353  com.google.protobuf.GeneratedMessageV3.writeString(output, 70, defaultRestartAlgorithms_);
    5354  }
    5355  if (((bitField0_ & 0x80000000) != 0)) {
    5356  output.writeDouble(71, restartLbdAverageRatio_);
    5357  }
    5358  if (((bitField1_ & 0x00080000) != 0)) {
    5359  output.writeBool(72, presolveUseBva_);
    5360  }
    5361  if (((bitField1_ & 0x00100000) != 0)) {
    5362  output.writeInt32(73, presolveBvaThreshold_);
    5363  }
    5364  if (((bitField1_ & 0x10000000) != 0)) {
    5365  output.writeBool(74, usePrecedencesInDisjunctiveConstraint_);
    5366  }
    5367  if (((bitField0_ & 0x00000020) != 0)) {
    5368  output.writeBool(75, useErwaHeuristic_);
    5369  }
    5370  if (((bitField0_ & 0x00000040) != 0)) {
    5371  output.writeDouble(76, initialVariablesActivity_);
    5372  }
    5373  if (((bitField0_ & 0x00000080) != 0)) {
    5374  output.writeBool(77, alsoBumpVariablesInConflictReasons_);
    5375  }
    5376  if (((bitField1_ & 0x20000000) != 0)) {
    5377  output.writeBool(78, useOverloadCheckerInCumulativeConstraint_);
    5378  }
    5379  if (((bitField1_ & 0x40000000) != 0)) {
    5380  output.writeBool(79, useTimetableEdgeFindingInCumulativeConstraint_);
    5381  }
    5382  if (((bitField1_ & 0x80000000) != 0)) {
    5383  output.writeBool(80, useDisjunctiveConstraintInCumulativeConstraint_);
    5384  }
    5385  if (((bitField2_ & 0x00002000) != 0)) {
    5386  output.writeEnum(82, searchBranching_);
    5387  }
    5388  if (((bitField2_ & 0x00080000) != 0)) {
    5389  output.writeBool(83, optimizeWithCore_);
    5390  }
    5391  if (((bitField1_ & 0x00800000) != 0)) {
    5392  output.writeBool(84, findMultipleCores_);
    5393  }
    5394  if (((bitField2_ & 0x00200000) != 0)) {
    5395  output.writeBool(85, optimizeWithMaxHs_);
    5396  }
    5397  if (((bitField2_ & 0x00400000) != 0)) {
    5398  output.writeBool(86, cpModelPresolve_);
    5399  }
    5400  if (((bitField2_ & 0x02000000) != 0)) {
    5401  output.writeBool(87, enumerateAllSolutions_);
    5402  }
    5403  if (((bitField1_ & 0x00040000) != 0)) {
    5404  output.writeBool(88, presolveBlockedClause_);
    5405  }
    5406  if (((bitField1_ & 0x01000000) != 0)) {
    5407  output.writeBool(89, coverOptimization_);
    5408  }
    5409  if (((bitField2_ & 0x00000001) != 0)) {
    5410  output.writeInt32(90, linearizationLevel_);
    5411  }
    5412  if (((bitField2_ & 0x00000004) != 0)) {
    5413  output.writeInt32(91, maxNumCuts_);
    5414  }
    5415  if (((bitField2_ & 0x00000008) != 0)) {
    5416  output.writeBool(92, onlyAddCutsAtLevelZero_);
    5417  }
    5418  if (((bitField2_ & 0x01000000) != 0)) {
    5419  output.writeBool(93, cpModelUseSatPresolve_);
    5420  }
    5421  if (((bitField2_ & 0x00004000) != 0)) {
    5422  output.writeBool(94, exploitIntegerLpSolution_);
    5423  }
    5424  if (((bitField2_ & 0x10000000) != 0)) {
    5425  output.writeBool(95, autoDetectGreaterThanAtLeastOneOf_);
    5426  }
    5427  if (((bitField0_ & 0x00040000) != 0)) {
    5428  output.writeInt32(96, minimizeWithPropagationRestartPeriod_);
    5429  }
    5430  if (((bitField0_ & 0x00080000) != 0)) {
    5431  output.writeInt32(97, minimizeWithPropagationNumDecisions_);
    5432  }
    5433  if (((bitField2_ & 0x20000000) != 0)) {
    5434  output.writeBool(98, stopAfterFirstSolution_);
    5435  }
    5436  if (((bitField2_ & 0x00100000) != 0)) {
    5437  output.writeInt32(99, binarySearchNumConflicts_);
    5438  }
    5439  if (((bitField2_ & 0x40000000) != 0)) {
    5440  output.writeInt32(100, numSearchWorkers_);
    5441  }
    5442  if (((bitField3_ & 0x00000008) != 0)) {
    5443  output.writeBool(101, useLnsOnly_);
    5444  }
    5445  if (((bitField3_ & 0x00000040) != 0)) {
    5446  output.writeBool(103, randomizeSearch_);
    5447  }
    5448  if (((bitField3_ & 0x00000080) != 0)) {
    5449  output.writeInt64(104, searchRandomizationTolerance_);
    5450  }
    5451  if (((bitField3_ & 0x00000010) != 0)) {
    5452  output.writeBool(105, lnsFocusOnDecisionVariables_);
    5453  }
    5454  if (((bitField2_ & 0x08000000) != 0)) {
    5455  output.writeBool(106, instantiateAllVariables_);
    5456  }
    5457  if (((bitField2_ & 0x00000002) != 0)) {
    5458  output.writeInt32(107, booleanEncodingLevel_);
    5459  }
    5460  if (((bitField3_ & 0x00000100) != 0)) {
    5461  output.writeBool(108, useOptionalVariables_);
    5462  }
    5463  if (((bitField3_ & 0x00000200) != 0)) {
    5464  output.writeBool(109, useExactLpReason_);
    5465  }
    5466  if (((bitField2_ & 0x00800000) != 0)) {
    5467  output.writeInt32(110, cpModelProbingLevel_);
    5468  }
    5469  if (((bitField2_ & 0x00000010) != 0)) {
    5470  output.writeBool(111, addKnapsackCuts_);
    5471  }
    5472  if (((bitField2_ & 0x00000200) != 0)) {
    5473  output.writeBool(112, addLpConstraintsLazily_);
    5474  }
    5475  if (((bitField3_ & 0x00000002) != 0)) {
    5476  output.writeBool(113, shareObjectiveBounds_);
    5477  }
    5478  if (((bitField3_ & 0x00000004) != 0)) {
    5479  output.writeBool(114, shareLevelZeroBounds_);
    5480  }
    5481  if (((bitField2_ & 0x00000400) != 0)) {
    5482  output.writeDouble(115, minOrthogonalityForLpConstraints_);
    5483  }
    5484  if (((bitField2_ & 0x00008000) != 0)) {
    5485  output.writeBool(116, exploitAllLpSolution_);
    5486  }
    5487  if (((bitField2_ & 0x00000020) != 0)) {
    5488  output.writeBool(117, addCgCuts_);
    5489  }
    5490  if (((bitField2_ & 0x00000080) != 0)) {
    5491  output.writeBool(118, useMirRounding_);
    5492  }
    5493  if (((bitField2_ & 0x00000100) != 0)) {
    5494  output.writeInt32(119, maxIntegerRoundingScaling_);
    5495  }
    5496  if (((bitField2_ & 0x00000040) != 0)) {
    5497  output.writeBool(120, addMirCuts_);
    5498  }
    5499  if (((bitField2_ & 0x00000800) != 0)) {
    5500  output.writeInt64(121, maxInactiveCount_);
    5501  }
    5502  if (((bitField2_ & 0x00001000) != 0)) {
    5503  output.writeInt64(122, constraintRemovalBatchSize_);
    5504  }
    5505  if (((bitField2_ & 0x00040000) != 0)) {
    5506  output.writeInt64(123, pseudoCostReliabilityThreshold_);
    5507  }
    5508  if (((bitField3_ & 0x00000800) != 0)) {
    5509  output.writeDouble(124, mipMaxBound_);
    5510  }
    5511  if (((bitField3_ & 0x00001000) != 0)) {
    5512  output.writeDouble(125, mipVarScaling_);
    5513  }
    5514  if (((bitField3_ & 0x00002000) != 0)) {
    5515  output.writeDouble(126, mipWantedPrecision_);
    5516  }
    5517  if (((bitField3_ & 0x00004000) != 0)) {
    5518  output.writeInt32(127, mipMaxActivityExponent_);
    5519  }
    5520  if (((bitField3_ & 0x00008000) != 0)) {
    5521  output.writeDouble(128, mipCheckPrecision_);
    5522  }
    5523  if (((bitField3_ & 0x00000020) != 0)) {
    5524  output.writeBool(129, useRinsLns_);
    5525  }
    5526  if (((bitField2_ & 0x00010000) != 0)) {
    5527  output.writeBool(130, exploitBestSolution_);
    5528  }
    5529  if (((bitField2_ & 0x00020000) != 0)) {
    5530  output.writeBool(131, exploitObjective_);
    5531  }
    5532  if (((bitField2_ & 0x04000000) != 0)) {
    5533  output.writeBool(132, fillTightenedDomainsInResponse_);
    5534  }
    5535  if (((bitField3_ & 0x00000400) != 0)) {
    5536  output.writeBool(133, useCombinedNoOverlap_);
    5537  }
    5538  if (((bitField3_ & 0x00000001) != 0)) {
    5539  output.writeBool(134, deterministicParallelSearch_);
    5540  }
    5541  if (((bitField3_ & 0x00010000) != 0)) {
    5542  output.writeBool(135, catchSigintSignal_);
    5543  }
    5544  if (((bitField2_ & 0x80000000) != 0)) {
    5545  output.writeBool(136, interleaveSearch_);
    5546  }
    5547  unknownFields.writeTo(output);
    5548  }
    5549 
    5550  @java.lang.Override
    5551  public int getSerializedSize() {
    5552  int size = memoizedSize;
    5553  if (size != -1) return size;
    5554 
    5555  size = 0;
    5556  if (((bitField0_ & 0x00000001) != 0)) {
    5557  size += com.google.protobuf.CodedOutputStream
    5558  .computeEnumSize(1, preferredVariableOrder_);
    5559  }
    5560  if (((bitField0_ & 0x00000002) != 0)) {
    5561  size += com.google.protobuf.CodedOutputStream
    5562  .computeEnumSize(2, initialPolarity_);
    5563  }
    5564  if (((bitField0_ & 0x00000100) != 0)) {
    5565  size += com.google.protobuf.CodedOutputStream
    5566  .computeEnumSize(4, minimizationAlgorithm_);
    5567  }
    5568  if (((bitField0_ & 0x00000800) != 0)) {
    5569  size += com.google.protobuf.CodedOutputStream
    5570  .computeInt32Size(11, clauseCleanupPeriod_);
    5571  }
    5572  if (((bitField0_ & 0x00001000) != 0)) {
    5573  size += com.google.protobuf.CodedOutputStream
    5574  .computeInt32Size(13, clauseCleanupTarget_);
    5575  }
    5576  if (((bitField0_ & 0x00100000) != 0)) {
    5577  size += com.google.protobuf.CodedOutputStream
    5578  .computeDoubleSize(15, variableActivityDecay_);
    5579  }
    5580  if (((bitField0_ & 0x00200000) != 0)) {
    5581  size += com.google.protobuf.CodedOutputStream
    5582  .computeDoubleSize(16, maxVariableActivityValue_);
    5583  }
    5584  if (((bitField0_ & 0x02000000) != 0)) {
    5585  size += com.google.protobuf.CodedOutputStream
    5586  .computeDoubleSize(17, clauseActivityDecay_);
    5587  }
    5588  if (((bitField0_ & 0x04000000) != 0)) {
    5589  size += com.google.protobuf.CodedOutputStream
    5590  .computeDoubleSize(18, maxClauseActivityValue_);
    5591  }
    5592  if (((bitField0_ & 0x00400000) != 0)) {
    5593  size += com.google.protobuf.CodedOutputStream
    5594  .computeDoubleSize(22, glucoseMaxDecay_);
    5595  }
    5596  if (((bitField0_ & 0x00800000) != 0)) {
    5597  size += com.google.protobuf.CodedOutputStream
    5598  .computeDoubleSize(23, glucoseDecayIncrement_);
    5599  }
    5600  if (((bitField0_ & 0x01000000) != 0)) {
    5601  size += com.google.protobuf.CodedOutputStream
    5602  .computeInt32Size(24, glucoseDecayIncrementPeriod_);
    5603  }
    5604  if (((bitField0_ & 0x10000000) != 0)) {
    5605  size += com.google.protobuf.CodedOutputStream
    5606  .computeInt32Size(30, restartPeriod_);
    5607  }
    5608  if (((bitField1_ & 0x00000400) != 0)) {
    5609  size += com.google.protobuf.CodedOutputStream
    5610  .computeInt32Size(31, randomSeed_);
    5611  }
    5612  if (((bitField0_ & 0x00000010) != 0)) {
    5613  size += com.google.protobuf.CodedOutputStream
    5614  .computeDoubleSize(32, randomBranchesRatio_);
    5615  }
    5616  if (((bitField1_ & 0x00000200) != 0)) {
    5617  size += com.google.protobuf.CodedOutputStream
    5618  .computeBoolSize(33, treatBinaryClausesSeparately_);
    5619  }
    5620  if (((bitField0_ & 0x00000200) != 0)) {
    5621  size += com.google.protobuf.CodedOutputStream
    5622  .computeEnumSize(34, binaryMinimizationAlgorithm_);
    5623  }
    5624  if (((bitField1_ & 0x00200000) != 0)) {
    5625  size += com.google.protobuf.CodedOutputStream
    5626  .computeBoolSize(35, useOptimizationHints_);
    5627  }
    5628  if (((bitField1_ & 0x00000020) != 0)) {
    5629  size += com.google.protobuf.CodedOutputStream
    5630  .computeDoubleSize(36, maxTimeInSeconds_);
    5631  }
    5632  if (((bitField1_ & 0x00000080) != 0)) {
    5633  size += com.google.protobuf.CodedOutputStream
    5634  .computeInt64Size(37, maxNumberOfConflicts_);
    5635  }
    5636  if (((bitField1_ & 0x00000100) != 0)) {
    5637  size += com.google.protobuf.CodedOutputStream
    5638  .computeInt64Size(40, maxMemoryInMb_);
    5639  }
    5640  if (((bitField1_ & 0x00000800) != 0)) {
    5641  size += com.google.protobuf.CodedOutputStream
    5642  .computeBoolSize(41, logSearchProgress_);
    5643  }
    5644  if (((bitField1_ & 0x00001000) != 0)) {
    5645  size += com.google.protobuf.CodedOutputStream
    5646  .computeBoolSize(43, usePbResolution_);
    5647  }
    5648  if (((bitField0_ & 0x00000004) != 0)) {
    5649  size += com.google.protobuf.CodedOutputStream
    5650  .computeBoolSize(44, usePhaseSaving_);
    5651  }
    5652  if (((bitField0_ & 0x00000008) != 0)) {
    5653  size += com.google.protobuf.CodedOutputStream
    5654  .computeDoubleSize(45, randomPolarityRatio_);
    5655  }
    5656  if (((bitField0_ & 0x00010000) != 0)) {
    5657  size += com.google.protobuf.CodedOutputStream
    5658  .computeInt32Size(46, pbCleanupIncrement_);
    5659  }
    5660  if (((bitField0_ & 0x00020000) != 0)) {
    5661  size += com.google.protobuf.CodedOutputStream
    5662  .computeDoubleSize(47, pbCleanupRatio_);
    5663  }
    5664  if (((bitField1_ & 0x00002000) != 0)) {
    5665  size += com.google.protobuf.CodedOutputStream
    5666  .computeBoolSize(48, minimizeReductionDuringPbResolution_);
    5667  }
    5668  if (((bitField1_ & 0x00004000) != 0)) {
    5669  size += com.google.protobuf.CodedOutputStream
    5670  .computeBoolSize(49, countAssumptionLevelsInLbd_);
    5671  }
    5672  if (((bitField1_ & 0x00400000) != 0)) {
    5673  size += com.google.protobuf.CodedOutputStream
    5674  .computeBoolSize(50, minimizeCore_);
    5675  }
    5676  if (((bitField1_ & 0x02000000) != 0)) {
    5677  size += com.google.protobuf.CodedOutputStream
    5678  .computeEnumSize(51, maxSatAssumptionOrder_);
    5679  }
    5680  if (((bitField1_ & 0x04000000) != 0)) {
    5681  size += com.google.protobuf.CodedOutputStream
    5682  .computeBoolSize(52, maxSatReverseAssumptionOrder_);
    5683  }
    5684  if (((bitField1_ & 0x08000000) != 0)) {
    5685  size += com.google.protobuf.CodedOutputStream
    5686  .computeEnumSize(53, maxSatStratification_);
    5687  }
    5688  if (((bitField1_ & 0x00008000) != 0)) {
    5689  size += com.google.protobuf.CodedOutputStream
    5690  .computeInt32Size(54, presolveBveThreshold_);
    5691  }
    5692  if (((bitField1_ & 0x00010000) != 0)) {
    5693  size += com.google.protobuf.CodedOutputStream
    5694  .computeInt32Size(55, presolveBveClauseWeight_);
    5695  }
    5696  if (((bitField0_ & 0x00000400) != 0)) {
    5697  size += com.google.protobuf.CodedOutputStream
    5698  .computeBoolSize(56, subsumptionDuringConflictAnalysis_);
    5699  }
    5700  if (((bitField1_ & 0x00020000) != 0)) {
    5701  size += com.google.protobuf.CodedOutputStream
    5702  .computeDoubleSize(57, presolveProbingDeterministicTimeLimit_);
    5703  }
    5704  if (((bitField0_ & 0x00002000) != 0)) {
    5705  size += com.google.protobuf.CodedOutputStream
    5706  .computeEnumSize(58, clauseCleanupProtection_);
    5707  }
    5708  if (((bitField0_ & 0x00004000) != 0)) {
    5709  size += com.google.protobuf.CodedOutputStream
    5710  .computeInt32Size(59, clauseCleanupLbdBound_);
    5711  }
    5712  if (((bitField0_ & 0x00008000) != 0)) {
    5713  size += com.google.protobuf.CodedOutputStream
    5714  .computeEnumSize(60, clauseCleanupOrdering_);
    5715  }
    5716  {
    5717  int dataSize = 0;
    5718  for (int i = 0; i < restartAlgorithms_.size(); i++) {
    5719  dataSize += com.google.protobuf.CodedOutputStream
    5720  .computeEnumSizeNoTag(restartAlgorithms_.get(i));
    5721  }
    5722  size += dataSize;
    5723  size += 2 * restartAlgorithms_.size();
    5724  }
    5725  if (((bitField0_ & 0x20000000) != 0)) {
    5726  size += com.google.protobuf.CodedOutputStream
    5727  .computeInt32Size(62, restartRunningWindowSize_);
    5728  }
    5729  if (((bitField0_ & 0x40000000) != 0)) {
    5730  size += com.google.protobuf.CodedOutputStream
    5731  .computeDoubleSize(63, restartDlAverageRatio_);
    5732  }
    5733  if (((bitField1_ & 0x00000001) != 0)) {
    5734  size += com.google.protobuf.CodedOutputStream
    5735  .computeBoolSize(64, useBlockingRestart_);
    5736  }
    5737  if (((bitField1_ & 0x00000002) != 0)) {
    5738  size += com.google.protobuf.CodedOutputStream
    5739  .computeInt32Size(65, blockingRestartWindowSize_);
    5740  }
    5741  if (((bitField1_ & 0x00000004) != 0)) {
    5742  size += com.google.protobuf.CodedOutputStream
    5743  .computeDoubleSize(66, blockingRestartMultiplier_);
    5744  }
    5745  if (((bitField1_ & 0x00000040) != 0)) {
    5746  size += com.google.protobuf.CodedOutputStream
    5747  .computeDoubleSize(67, maxDeterministicTime_);
    5748  }
    5749  if (((bitField1_ & 0x00000008) != 0)) {
    5750  size += com.google.protobuf.CodedOutputStream
    5751  .computeInt32Size(68, numConflictsBeforeStrategyChanges_);
    5752  }
    5753  if (((bitField1_ & 0x00000010) != 0)) {
    5754  size += com.google.protobuf.CodedOutputStream
    5755  .computeDoubleSize(69, strategyChangeIncreaseRatio_);
    5756  }
    5757  if (((bitField0_ & 0x08000000) != 0)) {
    5758  size += com.google.protobuf.GeneratedMessageV3.computeStringSize(70, defaultRestartAlgorithms_);
    5759  }
    5760  if (((bitField0_ & 0x80000000) != 0)) {
    5761  size += com.google.protobuf.CodedOutputStream
    5762  .computeDoubleSize(71, restartLbdAverageRatio_);
    5763  }
    5764  if (((bitField1_ & 0x00080000) != 0)) {
    5765  size += com.google.protobuf.CodedOutputStream
    5766  .computeBoolSize(72, presolveUseBva_);
    5767  }
    5768  if (((bitField1_ & 0x00100000) != 0)) {
    5769  size += com.google.protobuf.CodedOutputStream
    5770  .computeInt32Size(73, presolveBvaThreshold_);
    5771  }
    5772  if (((bitField1_ & 0x10000000) != 0)) {
    5773  size += com.google.protobuf.CodedOutputStream
    5774  .computeBoolSize(74, usePrecedencesInDisjunctiveConstraint_);
    5775  }
    5776  if (((bitField0_ & 0x00000020) != 0)) {
    5777  size += com.google.protobuf.CodedOutputStream
    5778  .computeBoolSize(75, useErwaHeuristic_);
    5779  }
    5780  if (((bitField0_ & 0x00000040) != 0)) {
    5781  size += com.google.protobuf.CodedOutputStream
    5782  .computeDoubleSize(76, initialVariablesActivity_);
    5783  }
    5784  if (((bitField0_ & 0x00000080) != 0)) {
    5785  size += com.google.protobuf.CodedOutputStream
    5786  .computeBoolSize(77, alsoBumpVariablesInConflictReasons_);
    5787  }
    5788  if (((bitField1_ & 0x20000000) != 0)) {
    5789  size += com.google.protobuf.CodedOutputStream
    5790  .computeBoolSize(78, useOverloadCheckerInCumulativeConstraint_);
    5791  }
    5792  if (((bitField1_ & 0x40000000) != 0)) {
    5793  size += com.google.protobuf.CodedOutputStream
    5794  .computeBoolSize(79, useTimetableEdgeFindingInCumulativeConstraint_);
    5795  }
    5796  if (((bitField1_ & 0x80000000) != 0)) {
    5797  size += com.google.protobuf.CodedOutputStream
    5798  .computeBoolSize(80, useDisjunctiveConstraintInCumulativeConstraint_);
    5799  }
    5800  if (((bitField2_ & 0x00002000) != 0)) {
    5801  size += com.google.protobuf.CodedOutputStream
    5802  .computeEnumSize(82, searchBranching_);
    5803  }
    5804  if (((bitField2_ & 0x00080000) != 0)) {
    5805  size += com.google.protobuf.CodedOutputStream
    5806  .computeBoolSize(83, optimizeWithCore_);
    5807  }
    5808  if (((bitField1_ & 0x00800000) != 0)) {
    5809  size += com.google.protobuf.CodedOutputStream
    5810  .computeBoolSize(84, findMultipleCores_);
    5811  }
    5812  if (((bitField2_ & 0x00200000) != 0)) {
    5813  size += com.google.protobuf.CodedOutputStream
    5814  .computeBoolSize(85, optimizeWithMaxHs_);
    5815  }
    5816  if (((bitField2_ & 0x00400000) != 0)) {
    5817  size += com.google.protobuf.CodedOutputStream
    5818  .computeBoolSize(86, cpModelPresolve_);
    5819  }
    5820  if (((bitField2_ & 0x02000000) != 0)) {
    5821  size += com.google.protobuf.CodedOutputStream
    5822  .computeBoolSize(87, enumerateAllSolutions_);
    5823  }
    5824  if (((bitField1_ & 0x00040000) != 0)) {
    5825  size += com.google.protobuf.CodedOutputStream
    5826  .computeBoolSize(88, presolveBlockedClause_);
    5827  }
    5828  if (((bitField1_ & 0x01000000) != 0)) {
    5829  size += com.google.protobuf.CodedOutputStream
    5830  .computeBoolSize(89, coverOptimization_);
    5831  }
    5832  if (((bitField2_ & 0x00000001) != 0)) {
    5833  size += com.google.protobuf.CodedOutputStream
    5834  .computeInt32Size(90, linearizationLevel_);
    5835  }
    5836  if (((bitField2_ & 0x00000004) != 0)) {
    5837  size += com.google.protobuf.CodedOutputStream
    5838  .computeInt32Size(91, maxNumCuts_);
    5839  }
    5840  if (((bitField2_ & 0x00000008) != 0)) {
    5841  size += com.google.protobuf.CodedOutputStream
    5842  .computeBoolSize(92, onlyAddCutsAtLevelZero_);
    5843  }
    5844  if (((bitField2_ & 0x01000000) != 0)) {
    5845  size += com.google.protobuf.CodedOutputStream
    5846  .computeBoolSize(93, cpModelUseSatPresolve_);
    5847  }
    5848  if (((bitField2_ & 0x00004000) != 0)) {
    5849  size += com.google.protobuf.CodedOutputStream
    5850  .computeBoolSize(94, exploitIntegerLpSolution_);
    5851  }
    5852  if (((bitField2_ & 0x10000000) != 0)) {
    5853  size += com.google.protobuf.CodedOutputStream
    5854  .computeBoolSize(95, autoDetectGreaterThanAtLeastOneOf_);
    5855  }
    5856  if (((bitField0_ & 0x00040000) != 0)) {
    5857  size += com.google.protobuf.CodedOutputStream
    5858  .computeInt32Size(96, minimizeWithPropagationRestartPeriod_);
    5859  }
    5860  if (((bitField0_ & 0x00080000) != 0)) {
    5861  size += com.google.protobuf.CodedOutputStream
    5862  .computeInt32Size(97, minimizeWithPropagationNumDecisions_);
    5863  }
    5864  if (((bitField2_ & 0x20000000) != 0)) {
    5865  size += com.google.protobuf.CodedOutputStream
    5866  .computeBoolSize(98, stopAfterFirstSolution_);
    5867  }
    5868  if (((bitField2_ & 0x00100000) != 0)) {
    5869  size += com.google.protobuf.CodedOutputStream
    5870  .computeInt32Size(99, binarySearchNumConflicts_);
    5871  }
    5872  if (((bitField2_ & 0x40000000) != 0)) {
    5873  size += com.google.protobuf.CodedOutputStream
    5874  .computeInt32Size(100, numSearchWorkers_);
    5875  }
    5876  if (((bitField3_ & 0x00000008) != 0)) {
    5877  size += com.google.protobuf.CodedOutputStream
    5878  .computeBoolSize(101, useLnsOnly_);
    5879  }
    5880  if (((bitField3_ & 0x00000040) != 0)) {
    5881  size += com.google.protobuf.CodedOutputStream
    5882  .computeBoolSize(103, randomizeSearch_);
    5883  }
    5884  if (((bitField3_ & 0x00000080) != 0)) {
    5885  size += com.google.protobuf.CodedOutputStream
    5886  .computeInt64Size(104, searchRandomizationTolerance_);
    5887  }
    5888  if (((bitField3_ & 0x00000010) != 0)) {
    5889  size += com.google.protobuf.CodedOutputStream
    5890  .computeBoolSize(105, lnsFocusOnDecisionVariables_);
    5891  }
    5892  if (((bitField2_ & 0x08000000) != 0)) {
    5893  size += com.google.protobuf.CodedOutputStream
    5894  .computeBoolSize(106, instantiateAllVariables_);
    5895  }
    5896  if (((bitField2_ & 0x00000002) != 0)) {
    5897  size += com.google.protobuf.CodedOutputStream
    5898  .computeInt32Size(107, booleanEncodingLevel_);
    5899  }
    5900  if (((bitField3_ & 0x00000100) != 0)) {
    5901  size += com.google.protobuf.CodedOutputStream
    5902  .computeBoolSize(108, useOptionalVariables_);
    5903  }
    5904  if (((bitField3_ & 0x00000200) != 0)) {
    5905  size += com.google.protobuf.CodedOutputStream
    5906  .computeBoolSize(109, useExactLpReason_);
    5907  }
    5908  if (((bitField2_ & 0x00800000) != 0)) {
    5909  size += com.google.protobuf.CodedOutputStream
    5910  .computeInt32Size(110, cpModelProbingLevel_);
    5911  }
    5912  if (((bitField2_ & 0x00000010) != 0)) {
    5913  size += com.google.protobuf.CodedOutputStream
    5914  .computeBoolSize(111, addKnapsackCuts_);
    5915  }
    5916  if (((bitField2_ & 0x00000200) != 0)) {
    5917  size += com.google.protobuf.CodedOutputStream
    5918  .computeBoolSize(112, addLpConstraintsLazily_);
    5919  }
    5920  if (((bitField3_ & 0x00000002) != 0)) {
    5921  size += com.google.protobuf.CodedOutputStream
    5922  .computeBoolSize(113, shareObjectiveBounds_);
    5923  }
    5924  if (((bitField3_ & 0x00000004) != 0)) {
    5925  size += com.google.protobuf.CodedOutputStream
    5926  .computeBoolSize(114, shareLevelZeroBounds_);
    5927  }
    5928  if (((bitField2_ & 0x00000400) != 0)) {
    5929  size += com.google.protobuf.CodedOutputStream
    5930  .computeDoubleSize(115, minOrthogonalityForLpConstraints_);
    5931  }
    5932  if (((bitField2_ & 0x00008000) != 0)) {
    5933  size += com.google.protobuf.CodedOutputStream
    5934  .computeBoolSize(116, exploitAllLpSolution_);
    5935  }
    5936  if (((bitField2_ & 0x00000020) != 0)) {
    5937  size += com.google.protobuf.CodedOutputStream
    5938  .computeBoolSize(117, addCgCuts_);
    5939  }
    5940  if (((bitField2_ & 0x00000080) != 0)) {
    5941  size += com.google.protobuf.CodedOutputStream
    5942  .computeBoolSize(118, useMirRounding_);
    5943  }
    5944  if (((bitField2_ & 0x00000100) != 0)) {
    5945  size += com.google.protobuf.CodedOutputStream
    5946  .computeInt32Size(119, maxIntegerRoundingScaling_);
    5947  }
    5948  if (((bitField2_ & 0x00000040) != 0)) {
    5949  size += com.google.protobuf.CodedOutputStream
    5950  .computeBoolSize(120, addMirCuts_);
    5951  }
    5952  if (((bitField2_ & 0x00000800) != 0)) {
    5953  size += com.google.protobuf.CodedOutputStream
    5954  .computeInt64Size(121, maxInactiveCount_);
    5955  }
    5956  if (((bitField2_ & 0x00001000) != 0)) {
    5957  size += com.google.protobuf.CodedOutputStream
    5958  .computeInt64Size(122, constraintRemovalBatchSize_);
    5959  }
    5960  if (((bitField2_ & 0x00040000) != 0)) {
    5961  size += com.google.protobuf.CodedOutputStream
    5962  .computeInt64Size(123, pseudoCostReliabilityThreshold_);
    5963  }
    5964  if (((bitField3_ & 0x00000800) != 0)) {
    5965  size += com.google.protobuf.CodedOutputStream
    5966  .computeDoubleSize(124, mipMaxBound_);
    5967  }
    5968  if (((bitField3_ & 0x00001000) != 0)) {
    5969  size += com.google.protobuf.CodedOutputStream
    5970  .computeDoubleSize(125, mipVarScaling_);
    5971  }
    5972  if (((bitField3_ & 0x00002000) != 0)) {
    5973  size += com.google.protobuf.CodedOutputStream
    5974  .computeDoubleSize(126, mipWantedPrecision_);
    5975  }
    5976  if (((bitField3_ & 0x00004000) != 0)) {
    5977  size += com.google.protobuf.CodedOutputStream
    5978  .computeInt32Size(127, mipMaxActivityExponent_);
    5979  }
    5980  if (((bitField3_ & 0x00008000) != 0)) {
    5981  size += com.google.protobuf.CodedOutputStream
    5982  .computeDoubleSize(128, mipCheckPrecision_);
    5983  }
    5984  if (((bitField3_ & 0x00000020) != 0)) {
    5985  size += com.google.protobuf.CodedOutputStream
    5986  .computeBoolSize(129, useRinsLns_);
    5987  }
    5988  if (((bitField2_ & 0x00010000) != 0)) {
    5989  size += com.google.protobuf.CodedOutputStream
    5990  .computeBoolSize(130, exploitBestSolution_);
    5991  }
    5992  if (((bitField2_ & 0x00020000) != 0)) {
    5993  size += com.google.protobuf.CodedOutputStream
    5994  .computeBoolSize(131, exploitObjective_);
    5995  }
    5996  if (((bitField2_ & 0x04000000) != 0)) {
    5997  size += com.google.protobuf.CodedOutputStream
    5998  .computeBoolSize(132, fillTightenedDomainsInResponse_);
    5999  }
    6000  if (((bitField3_ & 0x00000400) != 0)) {
    6001  size += com.google.protobuf.CodedOutputStream
    6002  .computeBoolSize(133, useCombinedNoOverlap_);
    6003  }
    6004  if (((bitField3_ & 0x00000001) != 0)) {
    6005  size += com.google.protobuf.CodedOutputStream
    6006  .computeBoolSize(134, deterministicParallelSearch_);
    6007  }
    6008  if (((bitField3_ & 0x00010000) != 0)) {
    6009  size += com.google.protobuf.CodedOutputStream
    6010  .computeBoolSize(135, catchSigintSignal_);
    6011  }
    6012  if (((bitField2_ & 0x80000000) != 0)) {
    6013  size += com.google.protobuf.CodedOutputStream
    6014  .computeBoolSize(136, interleaveSearch_);
    6015  }
    6016  size += unknownFields.getSerializedSize();
    6017  memoizedSize = size;
    6018  return size;
    6019  }
    6020 
    6021  @java.lang.Override
    6022  public boolean equals(final java.lang.Object obj) {
    6023  if (obj == this) {
    6024  return true;
    6025  }
    6026  if (!(obj instanceof com.google.ortools.sat.SatParameters)) {
    6027  return super.equals(obj);
    6028  }
    6030 
    6031  if (hasPreferredVariableOrder() != other.hasPreferredVariableOrder()) return false;
    6032  if (hasPreferredVariableOrder()) {
    6033  if (preferredVariableOrder_ != other.preferredVariableOrder_) return false;
    6034  }
    6035  if (hasInitialPolarity() != other.hasInitialPolarity()) return false;
    6036  if (hasInitialPolarity()) {
    6037  if (initialPolarity_ != other.initialPolarity_) return false;
    6038  }
    6039  if (hasUsePhaseSaving() != other.hasUsePhaseSaving()) return false;
    6040  if (hasUsePhaseSaving()) {
    6041  if (getUsePhaseSaving()
    6042  != other.getUsePhaseSaving()) return false;
    6043  }
    6044  if (hasRandomPolarityRatio() != other.hasRandomPolarityRatio()) return false;
    6045  if (hasRandomPolarityRatio()) {
    6046  if (java.lang.Double.doubleToLongBits(getRandomPolarityRatio())
    6047  != java.lang.Double.doubleToLongBits(
    6048  other.getRandomPolarityRatio())) return false;
    6049  }
    6050  if (hasRandomBranchesRatio() != other.hasRandomBranchesRatio()) return false;
    6051  if (hasRandomBranchesRatio()) {
    6052  if (java.lang.Double.doubleToLongBits(getRandomBranchesRatio())
    6053  != java.lang.Double.doubleToLongBits(
    6054  other.getRandomBranchesRatio())) return false;
    6055  }
    6056  if (hasUseErwaHeuristic() != other.hasUseErwaHeuristic()) return false;
    6057  if (hasUseErwaHeuristic()) {
    6058  if (getUseErwaHeuristic()
    6059  != other.getUseErwaHeuristic()) return false;
    6060  }
    6061  if (hasInitialVariablesActivity() != other.hasInitialVariablesActivity()) return false;
    6063  if (java.lang.Double.doubleToLongBits(getInitialVariablesActivity())
    6064  != java.lang.Double.doubleToLongBits(
    6065  other.getInitialVariablesActivity())) return false;
    6066  }
    6067  if (hasAlsoBumpVariablesInConflictReasons() != other.hasAlsoBumpVariablesInConflictReasons()) return false;
    6070  != other.getAlsoBumpVariablesInConflictReasons()) return false;
    6071  }
    6072  if (hasMinimizationAlgorithm() != other.hasMinimizationAlgorithm()) return false;
    6073  if (hasMinimizationAlgorithm()) {
    6074  if (minimizationAlgorithm_ != other.minimizationAlgorithm_) return false;
    6075  }
    6076  if (hasBinaryMinimizationAlgorithm() != other.hasBinaryMinimizationAlgorithm()) return false;
    6078  if (binaryMinimizationAlgorithm_ != other.binaryMinimizationAlgorithm_) return false;
    6079  }
    6080  if (hasSubsumptionDuringConflictAnalysis() != other.hasSubsumptionDuringConflictAnalysis()) return false;
    6083  != other.getSubsumptionDuringConflictAnalysis()) return false;
    6084  }
    6085  if (hasClauseCleanupPeriod() != other.hasClauseCleanupPeriod()) return false;
    6086  if (hasClauseCleanupPeriod()) {
    6088  != other.getClauseCleanupPeriod()) return false;
    6089  }
    6090  if (hasClauseCleanupTarget() != other.hasClauseCleanupTarget()) return false;
    6091  if (hasClauseCleanupTarget()) {
    6093  != other.getClauseCleanupTarget()) return false;
    6094  }
    6095  if (hasClauseCleanupProtection() != other.hasClauseCleanupProtection()) return false;
    6097  if (clauseCleanupProtection_ != other.clauseCleanupProtection_) return false;
    6098  }
    6099  if (hasClauseCleanupLbdBound() != other.hasClauseCleanupLbdBound()) return false;
    6100  if (hasClauseCleanupLbdBound()) {
    6102  != other.getClauseCleanupLbdBound()) return false;
    6103  }
    6104  if (hasClauseCleanupOrdering() != other.hasClauseCleanupOrdering()) return false;
    6105  if (hasClauseCleanupOrdering()) {
    6106  if (clauseCleanupOrdering_ != other.clauseCleanupOrdering_) return false;
    6107  }
    6108  if (hasPbCleanupIncrement() != other.hasPbCleanupIncrement()) return false;
    6109  if (hasPbCleanupIncrement()) {
    6110  if (getPbCleanupIncrement()
    6111  != other.getPbCleanupIncrement()) return false;
    6112  }
    6113  if (hasPbCleanupRatio() != other.hasPbCleanupRatio()) return false;
    6114  if (hasPbCleanupRatio()) {
    6115  if (java.lang.Double.doubleToLongBits(getPbCleanupRatio())
    6116  != java.lang.Double.doubleToLongBits(
    6117  other.getPbCleanupRatio())) return false;
    6118  }
    6119  if (hasMinimizeWithPropagationRestartPeriod() != other.hasMinimizeWithPropagationRestartPeriod()) return false;
    6122  != other.getMinimizeWithPropagationRestartPeriod()) return false;
    6123  }
    6124  if (hasMinimizeWithPropagationNumDecisions() != other.hasMinimizeWithPropagationNumDecisions()) return false;
    6127  != other.getMinimizeWithPropagationNumDecisions()) return false;
    6128  }
    6129  if (hasVariableActivityDecay() != other.hasVariableActivityDecay()) return false;
    6130  if (hasVariableActivityDecay()) {
    6131  if (java.lang.Double.doubleToLongBits(getVariableActivityDecay())
    6132  != java.lang.Double.doubleToLongBits(
    6133  other.getVariableActivityDecay())) return false;
    6134  }
    6135  if (hasMaxVariableActivityValue() != other.hasMaxVariableActivityValue()) return false;
    6137  if (java.lang.Double.doubleToLongBits(getMaxVariableActivityValue())
    6138  != java.lang.Double.doubleToLongBits(
    6139  other.getMaxVariableActivityValue())) return false;
    6140  }
    6141  if (hasGlucoseMaxDecay() != other.hasGlucoseMaxDecay()) return false;
    6142  if (hasGlucoseMaxDecay()) {
    6143  if (java.lang.Double.doubleToLongBits(getGlucoseMaxDecay())
    6144  != java.lang.Double.doubleToLongBits(
    6145  other.getGlucoseMaxDecay())) return false;
    6146  }
    6147  if (hasGlucoseDecayIncrement() != other.hasGlucoseDecayIncrement()) return false;
    6148  if (hasGlucoseDecayIncrement()) {
    6149  if (java.lang.Double.doubleToLongBits(getGlucoseDecayIncrement())
    6150  != java.lang.Double.doubleToLongBits(
    6151  other.getGlucoseDecayIncrement())) return false;
    6152  }
    6153  if (hasGlucoseDecayIncrementPeriod() != other.hasGlucoseDecayIncrementPeriod()) return false;
    6156  != other.getGlucoseDecayIncrementPeriod()) return false;
    6157  }
    6158  if (hasClauseActivityDecay() != other.hasClauseActivityDecay()) return false;
    6159  if (hasClauseActivityDecay()) {
    6160  if (java.lang.Double.doubleToLongBits(getClauseActivityDecay())
    6161  != java.lang.Double.doubleToLongBits(
    6162  other.getClauseActivityDecay())) return false;
    6163  }
    6164  if (hasMaxClauseActivityValue() != other.hasMaxClauseActivityValue()) return false;
    6165  if (hasMaxClauseActivityValue()) {
    6166  if (java.lang.Double.doubleToLongBits(getMaxClauseActivityValue())
    6167  != java.lang.Double.doubleToLongBits(
    6168  other.getMaxClauseActivityValue())) return false;
    6169  }
    6170  if (!restartAlgorithms_.equals(other.restartAlgorithms_)) return false;
    6171  if (hasDefaultRestartAlgorithms() != other.hasDefaultRestartAlgorithms()) return false;
    6174  .equals(other.getDefaultRestartAlgorithms())) return false;
    6175  }
    6176  if (hasRestartPeriod() != other.hasRestartPeriod()) return false;
    6177  if (hasRestartPeriod()) {
    6178  if (getRestartPeriod()
    6179  != other.getRestartPeriod()) return false;
    6180  }
    6181  if (hasRestartRunningWindowSize() != other.hasRestartRunningWindowSize()) return false;
    6184  != other.getRestartRunningWindowSize()) return false;
    6185  }
    6186  if (hasRestartDlAverageRatio() != other.hasRestartDlAverageRatio()) return false;
    6187  if (hasRestartDlAverageRatio()) {
    6188  if (java.lang.Double.doubleToLongBits(getRestartDlAverageRatio())
    6189  != java.lang.Double.doubleToLongBits(
    6190  other.getRestartDlAverageRatio())) return false;
    6191  }
    6192  if (hasRestartLbdAverageRatio() != other.hasRestartLbdAverageRatio()) return false;
    6193  if (hasRestartLbdAverageRatio()) {
    6194  if (java.lang.Double.doubleToLongBits(getRestartLbdAverageRatio())
    6195  != java.lang.Double.doubleToLongBits(
    6196  other.getRestartLbdAverageRatio())) return false;
    6197  }
    6198  if (hasUseBlockingRestart() != other.hasUseBlockingRestart()) return false;
    6199  if (hasUseBlockingRestart()) {
    6200  if (getUseBlockingRestart()
    6201  != other.getUseBlockingRestart()) return false;
    6202  }
    6203  if (hasBlockingRestartWindowSize() != other.hasBlockingRestartWindowSize()) return false;
    6206  != other.getBlockingRestartWindowSize()) return false;
    6207  }
    6208  if (hasBlockingRestartMultiplier() != other.hasBlockingRestartMultiplier()) return false;
    6210  if (java.lang.Double.doubleToLongBits(getBlockingRestartMultiplier())
    6211  != java.lang.Double.doubleToLongBits(
    6212  other.getBlockingRestartMultiplier())) return false;
    6213  }
    6214  if (hasNumConflictsBeforeStrategyChanges() != other.hasNumConflictsBeforeStrategyChanges()) return false;
    6217  != other.getNumConflictsBeforeStrategyChanges()) return false;
    6218  }
    6219  if (hasStrategyChangeIncreaseRatio() != other.hasStrategyChangeIncreaseRatio()) return false;
    6221  if (java.lang.Double.doubleToLongBits(getStrategyChangeIncreaseRatio())
    6222  != java.lang.Double.doubleToLongBits(
    6223  other.getStrategyChangeIncreaseRatio())) return false;
    6224  }
    6225  if (hasMaxTimeInSeconds() != other.hasMaxTimeInSeconds()) return false;
    6226  if (hasMaxTimeInSeconds()) {
    6227  if (java.lang.Double.doubleToLongBits(getMaxTimeInSeconds())
    6228  != java.lang.Double.doubleToLongBits(
    6229  other.getMaxTimeInSeconds())) return false;
    6230  }
    6231  if (hasMaxDeterministicTime() != other.hasMaxDeterministicTime()) return false;
    6232  if (hasMaxDeterministicTime()) {
    6233  if (java.lang.Double.doubleToLongBits(getMaxDeterministicTime())
    6234  != java.lang.Double.doubleToLongBits(
    6235  other.getMaxDeterministicTime())) return false;
    6236  }
    6237  if (hasMaxNumberOfConflicts() != other.hasMaxNumberOfConflicts()) return false;
    6238  if (hasMaxNumberOfConflicts()) {
    6240  != other.getMaxNumberOfConflicts()) return false;
    6241  }
    6242  if (hasMaxMemoryInMb() != other.hasMaxMemoryInMb()) return false;
    6243  if (hasMaxMemoryInMb()) {
    6244  if (getMaxMemoryInMb()
    6245  != other.getMaxMemoryInMb()) return false;
    6246  }
    6247  if (hasTreatBinaryClausesSeparately() != other.hasTreatBinaryClausesSeparately()) return false;
    6250  != other.getTreatBinaryClausesSeparately()) return false;
    6251  }
    6252  if (hasRandomSeed() != other.hasRandomSeed()) return false;
    6253  if (hasRandomSeed()) {
    6254  if (getRandomSeed()
    6255  != other.getRandomSeed()) return false;
    6256  }
    6257  if (hasLogSearchProgress() != other.hasLogSearchProgress()) return false;
    6258  if (hasLogSearchProgress()) {
    6259  if (getLogSearchProgress()
    6260  != other.getLogSearchProgress()) return false;
    6261  }
    6262  if (hasUsePbResolution() != other.hasUsePbResolution()) return false;
    6263  if (hasUsePbResolution()) {
    6264  if (getUsePbResolution()
    6265  != other.getUsePbResolution()) return false;
    6266  }
    6267  if (hasMinimizeReductionDuringPbResolution() != other.hasMinimizeReductionDuringPbResolution()) return false;
    6270  != other.getMinimizeReductionDuringPbResolution()) return false;
    6271  }
    6272  if (hasCountAssumptionLevelsInLbd() != other.hasCountAssumptionLevelsInLbd()) return false;
    6275  != other.getCountAssumptionLevelsInLbd()) return false;
    6276  }
    6277  if (hasPresolveBveThreshold() != other.hasPresolveBveThreshold()) return false;
    6278  if (hasPresolveBveThreshold()) {
    6280  != other.getPresolveBveThreshold()) return false;
    6281  }
    6282  if (hasPresolveBveClauseWeight() != other.hasPresolveBveClauseWeight()) return false;
    6285  != other.getPresolveBveClauseWeight()) return false;
    6286  }
    6287  if (hasPresolveProbingDeterministicTimeLimit() != other.hasPresolveProbingDeterministicTimeLimit()) return false;
    6289  if (java.lang.Double.doubleToLongBits(getPresolveProbingDeterministicTimeLimit())
    6290  != java.lang.Double.doubleToLongBits(
    6291  other.getPresolveProbingDeterministicTimeLimit())) return false;
    6292  }
    6293  if (hasPresolveBlockedClause() != other.hasPresolveBlockedClause()) return false;
    6294  if (hasPresolveBlockedClause()) {
    6296  != other.getPresolveBlockedClause()) return false;
    6297  }
    6298  if (hasPresolveUseBva() != other.hasPresolveUseBva()) return false;
    6299  if (hasPresolveUseBva()) {
    6300  if (getPresolveUseBva()
    6301  != other.getPresolveUseBva()) return false;
    6302  }
    6303  if (hasPresolveBvaThreshold() != other.hasPresolveBvaThreshold()) return false;
    6304  if (hasPresolveBvaThreshold()) {
    6306  != other.getPresolveBvaThreshold()) return false;
    6307  }
    6308  if (hasUseOptimizationHints() != other.hasUseOptimizationHints()) return false;
    6309  if (hasUseOptimizationHints()) {
    6311  != other.getUseOptimizationHints()) return false;
    6312  }
    6313  if (hasMinimizeCore() != other.hasMinimizeCore()) return false;
    6314  if (hasMinimizeCore()) {
    6315  if (getMinimizeCore()
    6316  != other.getMinimizeCore()) return false;
    6317  }
    6318  if (hasFindMultipleCores() != other.hasFindMultipleCores()) return false;
    6319  if (hasFindMultipleCores()) {
    6320  if (getFindMultipleCores()
    6321  != other.getFindMultipleCores()) return false;
    6322  }
    6323  if (hasCoverOptimization() != other.hasCoverOptimization()) return false;
    6324  if (hasCoverOptimization()) {
    6325  if (getCoverOptimization()
    6326  != other.getCoverOptimization()) return false;
    6327  }
    6328  if (hasMaxSatAssumptionOrder() != other.hasMaxSatAssumptionOrder()) return false;
    6329  if (hasMaxSatAssumptionOrder()) {
    6330  if (maxSatAssumptionOrder_ != other.maxSatAssumptionOrder_) return false;
    6331  }
    6332  if (hasMaxSatReverseAssumptionOrder() != other.hasMaxSatReverseAssumptionOrder()) return false;
    6335  != other.getMaxSatReverseAssumptionOrder()) return false;
    6336  }
    6337  if (hasMaxSatStratification() != other.hasMaxSatStratification()) return false;
    6338  if (hasMaxSatStratification()) {
    6339  if (maxSatStratification_ != other.maxSatStratification_) return false;
    6340  }
    6341  if (hasUsePrecedencesInDisjunctiveConstraint() != other.hasUsePrecedencesInDisjunctiveConstraint()) return false;
    6344  != other.getUsePrecedencesInDisjunctiveConstraint()) return false;
    6345  }
    6346  if (hasUseOverloadCheckerInCumulativeConstraint() != other.hasUseOverloadCheckerInCumulativeConstraint()) return false;
    6349  != other.getUseOverloadCheckerInCumulativeConstraint()) return false;
    6350  }
    6351  if (hasUseTimetableEdgeFindingInCumulativeConstraint() != other.hasUseTimetableEdgeFindingInCumulativeConstraint()) return false;
    6354  != other.getUseTimetableEdgeFindingInCumulativeConstraint()) return false;
    6355  }
    6356  if (hasUseDisjunctiveConstraintInCumulativeConstraint() != other.hasUseDisjunctiveConstraintInCumulativeConstraint()) return false;
    6359  != other.getUseDisjunctiveConstraintInCumulativeConstraint()) return false;
    6360  }
    6361  if (hasLinearizationLevel() != other.hasLinearizationLevel()) return false;
    6362  if (hasLinearizationLevel()) {
    6363  if (getLinearizationLevel()
    6364  != other.getLinearizationLevel()) return false;
    6365  }
    6366  if (hasBooleanEncodingLevel() != other.hasBooleanEncodingLevel()) return false;
    6367  if (hasBooleanEncodingLevel()) {
    6369  != other.getBooleanEncodingLevel()) return false;
    6370  }
    6371  if (hasMaxNumCuts() != other.hasMaxNumCuts()) return false;
    6372  if (hasMaxNumCuts()) {
    6373  if (getMaxNumCuts()
    6374  != other.getMaxNumCuts()) return false;
    6375  }
    6376  if (hasOnlyAddCutsAtLevelZero() != other.hasOnlyAddCutsAtLevelZero()) return false;
    6377  if (hasOnlyAddCutsAtLevelZero()) {
    6379  != other.getOnlyAddCutsAtLevelZero()) return false;
    6380  }
    6381  if (hasAddKnapsackCuts() != other.hasAddKnapsackCuts()) return false;
    6382  if (hasAddKnapsackCuts()) {
    6383  if (getAddKnapsackCuts()
    6384  != other.getAddKnapsackCuts()) return false;
    6385  }
    6386  if (hasAddCgCuts() != other.hasAddCgCuts()) return false;
    6387  if (hasAddCgCuts()) {
    6388  if (getAddCgCuts()
    6389  != other.getAddCgCuts()) return false;
    6390  }
    6391  if (hasAddMirCuts() != other.hasAddMirCuts()) return false;
    6392  if (hasAddMirCuts()) {
    6393  if (getAddMirCuts()
    6394  != other.getAddMirCuts()) return false;
    6395  }
    6396  if (hasUseMirRounding() != other.hasUseMirRounding()) return false;
    6397  if (hasUseMirRounding()) {
    6398  if (getUseMirRounding()
    6399  != other.getUseMirRounding()) return false;
    6400  }
    6401  if (hasMaxIntegerRoundingScaling() != other.hasMaxIntegerRoundingScaling()) return false;
    6404  != other.getMaxIntegerRoundingScaling()) return false;
    6405  }
    6406  if (hasAddLpConstraintsLazily() != other.hasAddLpConstraintsLazily()) return false;
    6407  if (hasAddLpConstraintsLazily()) {
    6409  != other.getAddLpConstraintsLazily()) return false;
    6410  }
    6411  if (hasMinOrthogonalityForLpConstraints() != other.hasMinOrthogonalityForLpConstraints()) return false;
    6413  if (java.lang.Double.doubleToLongBits(getMinOrthogonalityForLpConstraints())
    6414  != java.lang.Double.doubleToLongBits(
    6415  other.getMinOrthogonalityForLpConstraints())) return false;
    6416  }
    6417  if (hasMaxInactiveCount() != other.hasMaxInactiveCount()) return false;
    6418  if (hasMaxInactiveCount()) {
    6419  if (getMaxInactiveCount()
    6420  != other.getMaxInactiveCount()) return false;
    6421  }
    6422  if (hasConstraintRemovalBatchSize() != other.hasConstraintRemovalBatchSize()) return false;
    6425  != other.getConstraintRemovalBatchSize()) return false;
    6426  }
    6427  if (hasSearchBranching() != other.hasSearchBranching()) return false;
    6428  if (hasSearchBranching()) {
    6429  if (searchBranching_ != other.searchBranching_) return false;
    6430  }
    6431  if (hasExploitIntegerLpSolution() != other.hasExploitIntegerLpSolution()) return false;
    6434  != other.getExploitIntegerLpSolution()) return false;
    6435  }
    6436  if (hasExploitAllLpSolution() != other.hasExploitAllLpSolution()) return false;
    6437  if (hasExploitAllLpSolution()) {
    6439  != other.getExploitAllLpSolution()) return false;
    6440  }
    6441  if (hasExploitBestSolution() != other.hasExploitBestSolution()) return false;
    6442  if (hasExploitBestSolution()) {
    6444  != other.getExploitBestSolution()) return false;
    6445  }
    6446  if (hasExploitObjective() != other.hasExploitObjective()) return false;
    6447  if (hasExploitObjective()) {
    6448  if (getExploitObjective()
    6449  != other.getExploitObjective()) return false;
    6450  }
    6451  if (hasPseudoCostReliabilityThreshold() != other.hasPseudoCostReliabilityThreshold()) return false;
    6454  != other.getPseudoCostReliabilityThreshold()) return false;
    6455  }
    6456  if (hasOptimizeWithCore() != other.hasOptimizeWithCore()) return false;
    6457  if (hasOptimizeWithCore()) {
    6458  if (getOptimizeWithCore()
    6459  != other.getOptimizeWithCore()) return false;
    6460  }
    6461  if (hasBinarySearchNumConflicts() != other.hasBinarySearchNumConflicts()) return false;
    6464  != other.getBinarySearchNumConflicts()) return false;
    6465  }
    6466  if (hasOptimizeWithMaxHs() != other.hasOptimizeWithMaxHs()) return false;
    6467  if (hasOptimizeWithMaxHs()) {
    6468  if (getOptimizeWithMaxHs()
    6469  != other.getOptimizeWithMaxHs()) return false;
    6470  }
    6471  if (hasCpModelPresolve() != other.hasCpModelPresolve()) return false;
    6472  if (hasCpModelPresolve()) {
    6473  if (getCpModelPresolve()
    6474  != other.getCpModelPresolve()) return false;
    6475  }
    6476  if (hasCpModelProbingLevel() != other.hasCpModelProbingLevel()) return false;
    6477  if (hasCpModelProbingLevel()) {
    6479  != other.getCpModelProbingLevel()) return false;
    6480  }
    6481  if (hasCpModelUseSatPresolve() != other.hasCpModelUseSatPresolve()) return false;
    6482  if (hasCpModelUseSatPresolve()) {
    6484  != other.getCpModelUseSatPresolve()) return false;
    6485  }
    6486  if (hasEnumerateAllSolutions() != other.hasEnumerateAllSolutions()) return false;
    6487  if (hasEnumerateAllSolutions()) {
    6489  != other.getEnumerateAllSolutions()) return false;
    6490  }
    6491  if (hasFillTightenedDomainsInResponse() != other.hasFillTightenedDomainsInResponse()) return false;
    6494  != other.getFillTightenedDomainsInResponse()) return false;
    6495  }
    6496  if (hasInstantiateAllVariables() != other.hasInstantiateAllVariables()) return false;
    6499  != other.getInstantiateAllVariables()) return false;
    6500  }
    6501  if (hasAutoDetectGreaterThanAtLeastOneOf() != other.hasAutoDetectGreaterThanAtLeastOneOf()) return false;
    6504  != other.getAutoDetectGreaterThanAtLeastOneOf()) return false;
    6505  }
    6506  if (hasStopAfterFirstSolution() != other.hasStopAfterFirstSolution()) return false;
    6507  if (hasStopAfterFirstSolution()) {
    6509  != other.getStopAfterFirstSolution()) return false;
    6510  }
    6511  if (hasNumSearchWorkers() != other.hasNumSearchWorkers()) return false;
    6512  if (hasNumSearchWorkers()) {
    6513  if (getNumSearchWorkers()
    6514  != other.getNumSearchWorkers()) return false;
    6515  }
    6516  if (hasInterleaveSearch() != other.hasInterleaveSearch()) return false;
    6517  if (hasInterleaveSearch()) {
    6518  if (getInterleaveSearch()
    6519  != other.getInterleaveSearch()) return false;
    6520  }
    6521  if (hasDeterministicParallelSearch() != other.hasDeterministicParallelSearch()) return false;
    6524  != other.getDeterministicParallelSearch()) return false;
    6525  }
    6526  if (hasShareObjectiveBounds() != other.hasShareObjectiveBounds()) return false;
    6527  if (hasShareObjectiveBounds()) {
    6529  != other.getShareObjectiveBounds()) return false;
    6530  }
    6531  if (hasShareLevelZeroBounds() != other.hasShareLevelZeroBounds()) return false;
    6532  if (hasShareLevelZeroBounds()) {
    6534  != other.getShareLevelZeroBounds()) return false;
    6535  }
    6536  if (hasUseLnsOnly() != other.hasUseLnsOnly()) return false;
    6537  if (hasUseLnsOnly()) {
    6538  if (getUseLnsOnly()
    6539  != other.getUseLnsOnly()) return false;
    6540  }
    6541  if (hasLnsFocusOnDecisionVariables() != other.hasLnsFocusOnDecisionVariables()) return false;
    6544  != other.getLnsFocusOnDecisionVariables()) return false;
    6545  }
    6546  if (hasUseRinsLns() != other.hasUseRinsLns()) return false;
    6547  if (hasUseRinsLns()) {
    6548  if (getUseRinsLns()
    6549  != other.getUseRinsLns()) return false;
    6550  }
    6551  if (hasRandomizeSearch() != other.hasRandomizeSearch()) return false;
    6552  if (hasRandomizeSearch()) {
    6553  if (getRandomizeSearch()
    6554  != other.getRandomizeSearch()) return false;
    6555  }
    6556  if (hasSearchRandomizationTolerance() != other.hasSearchRandomizationTolerance()) return false;
    6559  != other.getSearchRandomizationTolerance()) return false;
    6560  }
    6561  if (hasUseOptionalVariables() != other.hasUseOptionalVariables()) return false;
    6562  if (hasUseOptionalVariables()) {
    6564  != other.getUseOptionalVariables()) return false;
    6565  }
    6566  if (hasUseExactLpReason() != other.hasUseExactLpReason()) return false;
    6567  if (hasUseExactLpReason()) {
    6568  if (getUseExactLpReason()
    6569  != other.getUseExactLpReason()) return false;
    6570  }
    6571  if (hasUseCombinedNoOverlap() != other.hasUseCombinedNoOverlap()) return false;
    6572  if (hasUseCombinedNoOverlap()) {
    6574  != other.getUseCombinedNoOverlap()) return false;
    6575  }
    6576  if (hasMipMaxBound() != other.hasMipMaxBound()) return false;
    6577  if (hasMipMaxBound()) {
    6578  if (java.lang.Double.doubleToLongBits(getMipMaxBound())
    6579  != java.lang.Double.doubleToLongBits(
    6580  other.getMipMaxBound())) return false;
    6581  }
    6582  if (hasMipVarScaling() != other.hasMipVarScaling()) return false;
    6583  if (hasMipVarScaling()) {
    6584  if (java.lang.Double.doubleToLongBits(getMipVarScaling())
    6585  != java.lang.Double.doubleToLongBits(
    6586  other.getMipVarScaling())) return false;
    6587  }
    6588  if (hasMipWantedPrecision() != other.hasMipWantedPrecision()) return false;
    6589  if (hasMipWantedPrecision()) {
    6590  if (java.lang.Double.doubleToLongBits(getMipWantedPrecision())
    6591  != java.lang.Double.doubleToLongBits(
    6592  other.getMipWantedPrecision())) return false;
    6593  }
    6594  if (hasMipMaxActivityExponent() != other.hasMipMaxActivityExponent()) return false;
    6595  if (hasMipMaxActivityExponent()) {
    6597  != other.getMipMaxActivityExponent()) return false;
    6598  }
    6599  if (hasMipCheckPrecision() != other.hasMipCheckPrecision()) return false;
    6600  if (hasMipCheckPrecision()) {
    6601  if (java.lang.Double.doubleToLongBits(getMipCheckPrecision())
    6602  != java.lang.Double.doubleToLongBits(
    6603  other.getMipCheckPrecision())) return false;
    6604  }
    6605  if (hasCatchSigintSignal() != other.hasCatchSigintSignal()) return false;
    6606  if (hasCatchSigintSignal()) {
    6607  if (getCatchSigintSignal()
    6608  != other.getCatchSigintSignal()) return false;
    6609  }
    6610  if (!unknownFields.equals(other.unknownFields)) return false;
    6611  return true;
    6612  }
    6613 
    6614  @java.lang.Override
    6615  public int hashCode() {
    6616  if (memoizedHashCode != 0) {
    6617  return memoizedHashCode;
    6618  }
    6619  int hash = 41;
    6620  hash = (19 * hash) + getDescriptor().hashCode();
    6621  if (hasPreferredVariableOrder()) {
    6622  hash = (37 * hash) + PREFERRED_VARIABLE_ORDER_FIELD_NUMBER;
    6623  hash = (53 * hash) + preferredVariableOrder_;
    6624  }
    6625  if (hasInitialPolarity()) {
    6626  hash = (37 * hash) + INITIAL_POLARITY_FIELD_NUMBER;
    6627  hash = (53 * hash) + initialPolarity_;
    6628  }
    6629  if (hasUsePhaseSaving()) {
    6630  hash = (37 * hash) + USE_PHASE_SAVING_FIELD_NUMBER;
    6631  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6632  getUsePhaseSaving());
    6633  }
    6634  if (hasRandomPolarityRatio()) {
    6635  hash = (37 * hash) + RANDOM_POLARITY_RATIO_FIELD_NUMBER;
    6636  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6637  java.lang.Double.doubleToLongBits(getRandomPolarityRatio()));
    6638  }
    6639  if (hasRandomBranchesRatio()) {
    6640  hash = (37 * hash) + RANDOM_BRANCHES_RATIO_FIELD_NUMBER;
    6641  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6642  java.lang.Double.doubleToLongBits(getRandomBranchesRatio()));
    6643  }
    6644  if (hasUseErwaHeuristic()) {
    6645  hash = (37 * hash) + USE_ERWA_HEURISTIC_FIELD_NUMBER;
    6646  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6648  }
    6650  hash = (37 * hash) + INITIAL_VARIABLES_ACTIVITY_FIELD_NUMBER;
    6651  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6652  java.lang.Double.doubleToLongBits(getInitialVariablesActivity()));
    6653  }
    6656  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6658  }
    6659  if (hasMinimizationAlgorithm()) {
    6660  hash = (37 * hash) + MINIMIZATION_ALGORITHM_FIELD_NUMBER;
    6661  hash = (53 * hash) + minimizationAlgorithm_;
    6662  }
    6664  hash = (37 * hash) + BINARY_MINIMIZATION_ALGORITHM_FIELD_NUMBER;
    6665  hash = (53 * hash) + binaryMinimizationAlgorithm_;
    6666  }
    6669  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6671  }
    6672  if (hasClauseCleanupPeriod()) {
    6673  hash = (37 * hash) + CLAUSE_CLEANUP_PERIOD_FIELD_NUMBER;
    6674  hash = (53 * hash) + getClauseCleanupPeriod();
    6675  }
    6676  if (hasClauseCleanupTarget()) {
    6677  hash = (37 * hash) + CLAUSE_CLEANUP_TARGET_FIELD_NUMBER;
    6678  hash = (53 * hash) + getClauseCleanupTarget();
    6679  }
    6681  hash = (37 * hash) + CLAUSE_CLEANUP_PROTECTION_FIELD_NUMBER;
    6682  hash = (53 * hash) + clauseCleanupProtection_;
    6683  }
    6684  if (hasClauseCleanupLbdBound()) {
    6685  hash = (37 * hash) + CLAUSE_CLEANUP_LBD_BOUND_FIELD_NUMBER;
    6686  hash = (53 * hash) + getClauseCleanupLbdBound();
    6687  }
    6688  if (hasClauseCleanupOrdering()) {
    6689  hash = (37 * hash) + CLAUSE_CLEANUP_ORDERING_FIELD_NUMBER;
    6690  hash = (53 * hash) + clauseCleanupOrdering_;
    6691  }
    6692  if (hasPbCleanupIncrement()) {
    6693  hash = (37 * hash) + PB_CLEANUP_INCREMENT_FIELD_NUMBER;
    6694  hash = (53 * hash) + getPbCleanupIncrement();
    6695  }
    6696  if (hasPbCleanupRatio()) {
    6697  hash = (37 * hash) + PB_CLEANUP_RATIO_FIELD_NUMBER;
    6698  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6699  java.lang.Double.doubleToLongBits(getPbCleanupRatio()));
    6700  }
    6703  hash = (53 * hash) + getMinimizeWithPropagationRestartPeriod();
    6704  }
    6707  hash = (53 * hash) + getMinimizeWithPropagationNumDecisions();
    6708  }
    6709  if (hasVariableActivityDecay()) {
    6710  hash = (37 * hash) + VARIABLE_ACTIVITY_DECAY_FIELD_NUMBER;
    6711  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6712  java.lang.Double.doubleToLongBits(getVariableActivityDecay()));
    6713  }
    6715  hash = (37 * hash) + MAX_VARIABLE_ACTIVITY_VALUE_FIELD_NUMBER;
    6716  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6717  java.lang.Double.doubleToLongBits(getMaxVariableActivityValue()));
    6718  }
    6719  if (hasGlucoseMaxDecay()) {
    6720  hash = (37 * hash) + GLUCOSE_MAX_DECAY_FIELD_NUMBER;
    6721  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6722  java.lang.Double.doubleToLongBits(getGlucoseMaxDecay()));
    6723  }
    6724  if (hasGlucoseDecayIncrement()) {
    6725  hash = (37 * hash) + GLUCOSE_DECAY_INCREMENT_FIELD_NUMBER;
    6726  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6727  java.lang.Double.doubleToLongBits(getGlucoseDecayIncrement()));
    6728  }
    6730  hash = (37 * hash) + GLUCOSE_DECAY_INCREMENT_PERIOD_FIELD_NUMBER;
    6731  hash = (53 * hash) + getGlucoseDecayIncrementPeriod();
    6732  }
    6733  if (hasClauseActivityDecay()) {
    6734  hash = (37 * hash) + CLAUSE_ACTIVITY_DECAY_FIELD_NUMBER;
    6735  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6736  java.lang.Double.doubleToLongBits(getClauseActivityDecay()));
    6737  }
    6738  if (hasMaxClauseActivityValue()) {
    6739  hash = (37 * hash) + MAX_CLAUSE_ACTIVITY_VALUE_FIELD_NUMBER;
    6740  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6741  java.lang.Double.doubleToLongBits(getMaxClauseActivityValue()));
    6742  }
    6743  if (getRestartAlgorithmsCount() > 0) {
    6744  hash = (37 * hash) + RESTART_ALGORITHMS_FIELD_NUMBER;
    6745  hash = (53 * hash) + restartAlgorithms_.hashCode();
    6746  }
    6748  hash = (37 * hash) + DEFAULT_RESTART_ALGORITHMS_FIELD_NUMBER;
    6749  hash = (53 * hash) + getDefaultRestartAlgorithms().hashCode();
    6750  }
    6751  if (hasRestartPeriod()) {
    6752  hash = (37 * hash) + RESTART_PERIOD_FIELD_NUMBER;
    6753  hash = (53 * hash) + getRestartPeriod();
    6754  }
    6756  hash = (37 * hash) + RESTART_RUNNING_WINDOW_SIZE_FIELD_NUMBER;
    6757  hash = (53 * hash) + getRestartRunningWindowSize();
    6758  }
    6759  if (hasRestartDlAverageRatio()) {
    6760  hash = (37 * hash) + RESTART_DL_AVERAGE_RATIO_FIELD_NUMBER;
    6761  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6762  java.lang.Double.doubleToLongBits(getRestartDlAverageRatio()));
    6763  }
    6764  if (hasRestartLbdAverageRatio()) {
    6765  hash = (37 * hash) + RESTART_LBD_AVERAGE_RATIO_FIELD_NUMBER;
    6766  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6767  java.lang.Double.doubleToLongBits(getRestartLbdAverageRatio()));
    6768  }
    6769  if (hasUseBlockingRestart()) {
    6770  hash = (37 * hash) + USE_BLOCKING_RESTART_FIELD_NUMBER;
    6771  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6773  }
    6775  hash = (37 * hash) + BLOCKING_RESTART_WINDOW_SIZE_FIELD_NUMBER;
    6776  hash = (53 * hash) + getBlockingRestartWindowSize();
    6777  }
    6779  hash = (37 * hash) + BLOCKING_RESTART_MULTIPLIER_FIELD_NUMBER;
    6780  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6781  java.lang.Double.doubleToLongBits(getBlockingRestartMultiplier()));
    6782  }
    6785  hash = (53 * hash) + getNumConflictsBeforeStrategyChanges();
    6786  }
    6788  hash = (37 * hash) + STRATEGY_CHANGE_INCREASE_RATIO_FIELD_NUMBER;
    6789  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6790  java.lang.Double.doubleToLongBits(getStrategyChangeIncreaseRatio()));
    6791  }
    6792  if (hasMaxTimeInSeconds()) {
    6793  hash = (37 * hash) + MAX_TIME_IN_SECONDS_FIELD_NUMBER;
    6794  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6795  java.lang.Double.doubleToLongBits(getMaxTimeInSeconds()));
    6796  }
    6797  if (hasMaxDeterministicTime()) {
    6798  hash = (37 * hash) + MAX_DETERMINISTIC_TIME_FIELD_NUMBER;
    6799  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6800  java.lang.Double.doubleToLongBits(getMaxDeterministicTime()));
    6801  }
    6802  if (hasMaxNumberOfConflicts()) {
    6803  hash = (37 * hash) + MAX_NUMBER_OF_CONFLICTS_FIELD_NUMBER;
    6804  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6806  }
    6807  if (hasMaxMemoryInMb()) {
    6808  hash = (37 * hash) + MAX_MEMORY_IN_MB_FIELD_NUMBER;
    6809  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6810  getMaxMemoryInMb());
    6811  }
    6813  hash = (37 * hash) + TREAT_BINARY_CLAUSES_SEPARATELY_FIELD_NUMBER;
    6814  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6816  }
    6817  if (hasRandomSeed()) {
    6818  hash = (37 * hash) + RANDOM_SEED_FIELD_NUMBER;
    6819  hash = (53 * hash) + getRandomSeed();
    6820  }
    6821  if (hasLogSearchProgress()) {
    6822  hash = (37 * hash) + LOG_SEARCH_PROGRESS_FIELD_NUMBER;
    6823  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6825  }
    6826  if (hasUsePbResolution()) {
    6827  hash = (37 * hash) + USE_PB_RESOLUTION_FIELD_NUMBER;
    6828  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6829  getUsePbResolution());
    6830  }
    6833  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6835  }
    6837  hash = (37 * hash) + COUNT_ASSUMPTION_LEVELS_IN_LBD_FIELD_NUMBER;
    6838  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6840  }
    6841  if (hasPresolveBveThreshold()) {
    6842  hash = (37 * hash) + PRESOLVE_BVE_THRESHOLD_FIELD_NUMBER;
    6843  hash = (53 * hash) + getPresolveBveThreshold();
    6844  }
    6846  hash = (37 * hash) + PRESOLVE_BVE_CLAUSE_WEIGHT_FIELD_NUMBER;
    6847  hash = (53 * hash) + getPresolveBveClauseWeight();
    6848  }
    6851  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6852  java.lang.Double.doubleToLongBits(getPresolveProbingDeterministicTimeLimit()));
    6853  }
    6854  if (hasPresolveBlockedClause()) {
    6855  hash = (37 * hash) + PRESOLVE_BLOCKED_CLAUSE_FIELD_NUMBER;
    6856  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6858  }
    6859  if (hasPresolveUseBva()) {
    6860  hash = (37 * hash) + PRESOLVE_USE_BVA_FIELD_NUMBER;
    6861  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6862  getPresolveUseBva());
    6863  }
    6864  if (hasPresolveBvaThreshold()) {
    6865  hash = (37 * hash) + PRESOLVE_BVA_THRESHOLD_FIELD_NUMBER;
    6866  hash = (53 * hash) + getPresolveBvaThreshold();
    6867  }
    6868  if (hasUseOptimizationHints()) {
    6869  hash = (37 * hash) + USE_OPTIMIZATION_HINTS_FIELD_NUMBER;
    6870  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6872  }
    6873  if (hasMinimizeCore()) {
    6874  hash = (37 * hash) + MINIMIZE_CORE_FIELD_NUMBER;
    6875  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6876  getMinimizeCore());
    6877  }
    6878  if (hasFindMultipleCores()) {
    6879  hash = (37 * hash) + FIND_MULTIPLE_CORES_FIELD_NUMBER;
    6880  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6882  }
    6883  if (hasCoverOptimization()) {
    6884  hash = (37 * hash) + COVER_OPTIMIZATION_FIELD_NUMBER;
    6885  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6887  }
    6888  if (hasMaxSatAssumptionOrder()) {
    6889  hash = (37 * hash) + MAX_SAT_ASSUMPTION_ORDER_FIELD_NUMBER;
    6890  hash = (53 * hash) + maxSatAssumptionOrder_;
    6891  }
    6893  hash = (37 * hash) + MAX_SAT_REVERSE_ASSUMPTION_ORDER_FIELD_NUMBER;
    6894  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6896  }
    6897  if (hasMaxSatStratification()) {
    6898  hash = (37 * hash) + MAX_SAT_STRATIFICATION_FIELD_NUMBER;
    6899  hash = (53 * hash) + maxSatStratification_;
    6900  }
    6903  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6905  }
    6908  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6910  }
    6913  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6915  }
    6918  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6920  }
    6921  if (hasLinearizationLevel()) {
    6922  hash = (37 * hash) + LINEARIZATION_LEVEL_FIELD_NUMBER;
    6923  hash = (53 * hash) + getLinearizationLevel();
    6924  }
    6925  if (hasBooleanEncodingLevel()) {
    6926  hash = (37 * hash) + BOOLEAN_ENCODING_LEVEL_FIELD_NUMBER;
    6927  hash = (53 * hash) + getBooleanEncodingLevel();
    6928  }
    6929  if (hasMaxNumCuts()) {
    6930  hash = (37 * hash) + MAX_NUM_CUTS_FIELD_NUMBER;
    6931  hash = (53 * hash) + getMaxNumCuts();
    6932  }
    6933  if (hasOnlyAddCutsAtLevelZero()) {
    6934  hash = (37 * hash) + ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER;
    6935  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6937  }
    6938  if (hasAddKnapsackCuts()) {
    6939  hash = (37 * hash) + ADD_KNAPSACK_CUTS_FIELD_NUMBER;
    6940  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6941  getAddKnapsackCuts());
    6942  }
    6943  if (hasAddCgCuts()) {
    6944  hash = (37 * hash) + ADD_CG_CUTS_FIELD_NUMBER;
    6945  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6946  getAddCgCuts());
    6947  }
    6948  if (hasAddMirCuts()) {
    6949  hash = (37 * hash) + ADD_MIR_CUTS_FIELD_NUMBER;
    6950  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6951  getAddMirCuts());
    6952  }
    6953  if (hasUseMirRounding()) {
    6954  hash = (37 * hash) + USE_MIR_ROUNDING_FIELD_NUMBER;
    6955  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6956  getUseMirRounding());
    6957  }
    6959  hash = (37 * hash) + MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER;
    6960  hash = (53 * hash) + getMaxIntegerRoundingScaling();
    6961  }
    6962  if (hasAddLpConstraintsLazily()) {
    6963  hash = (37 * hash) + ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER;
    6964  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6966  }
    6969  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6970  java.lang.Double.doubleToLongBits(getMinOrthogonalityForLpConstraints()));
    6971  }
    6972  if (hasMaxInactiveCount()) {
    6973  hash = (37 * hash) + MAX_INACTIVE_COUNT_FIELD_NUMBER;
    6974  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6976  }
    6978  hash = (37 * hash) + CONSTRAINT_REMOVAL_BATCH_SIZE_FIELD_NUMBER;
    6979  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    6981  }
    6982  if (hasSearchBranching()) {
    6983  hash = (37 * hash) + SEARCH_BRANCHING_FIELD_NUMBER;
    6984  hash = (53 * hash) + searchBranching_;
    6985  }
    6987  hash = (37 * hash) + EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER;
    6988  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6990  }
    6991  if (hasExploitAllLpSolution()) {
    6992  hash = (37 * hash) + EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER;
    6993  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    6995  }
    6996  if (hasExploitBestSolution()) {
    6997  hash = (37 * hash) + EXPLOIT_BEST_SOLUTION_FIELD_NUMBER;
    6998  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7000  }
    7001  if (hasExploitObjective()) {
    7002  hash = (37 * hash) + EXPLOIT_OBJECTIVE_FIELD_NUMBER;
    7003  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7005  }
    7008  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7010  }
    7011  if (hasOptimizeWithCore()) {
    7012  hash = (37 * hash) + OPTIMIZE_WITH_CORE_FIELD_NUMBER;
    7013  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7015  }
    7017  hash = (37 * hash) + BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER;
    7018  hash = (53 * hash) + getBinarySearchNumConflicts();
    7019  }
    7020  if (hasOptimizeWithMaxHs()) {
    7021  hash = (37 * hash) + OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER;
    7022  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7024  }
    7025  if (hasCpModelPresolve()) {
    7026  hash = (37 * hash) + CP_MODEL_PRESOLVE_FIELD_NUMBER;
    7027  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7028  getCpModelPresolve());
    7029  }
    7030  if (hasCpModelProbingLevel()) {
    7031  hash = (37 * hash) + CP_MODEL_PROBING_LEVEL_FIELD_NUMBER;
    7032  hash = (53 * hash) + getCpModelProbingLevel();
    7033  }
    7034  if (hasCpModelUseSatPresolve()) {
    7035  hash = (37 * hash) + CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER;
    7036  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7038  }
    7039  if (hasEnumerateAllSolutions()) {
    7040  hash = (37 * hash) + ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER;
    7041  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7043  }
    7046  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7048  }
    7050  hash = (37 * hash) + INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER;
    7051  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7053  }
    7056  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7058  }
    7059  if (hasStopAfterFirstSolution()) {
    7060  hash = (37 * hash) + STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER;
    7061  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7063  }
    7064  if (hasNumSearchWorkers()) {
    7065  hash = (37 * hash) + NUM_SEARCH_WORKERS_FIELD_NUMBER;
    7066  hash = (53 * hash) + getNumSearchWorkers();
    7067  }
    7068  if (hasInterleaveSearch()) {
    7069  hash = (37 * hash) + INTERLEAVE_SEARCH_FIELD_NUMBER;
    7070  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7072  }
    7074  hash = (37 * hash) + DETERMINISTIC_PARALLEL_SEARCH_FIELD_NUMBER;
    7075  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7077  }
    7078  if (hasShareObjectiveBounds()) {
    7079  hash = (37 * hash) + SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER;
    7080  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7082  }
    7083  if (hasShareLevelZeroBounds()) {
    7084  hash = (37 * hash) + SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER;
    7085  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7087  }
    7088  if (hasUseLnsOnly()) {
    7089  hash = (37 * hash) + USE_LNS_ONLY_FIELD_NUMBER;
    7090  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7091  getUseLnsOnly());
    7092  }
    7094  hash = (37 * hash) + LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER;
    7095  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7097  }
    7098  if (hasUseRinsLns()) {
    7099  hash = (37 * hash) + USE_RINS_LNS_FIELD_NUMBER;
    7100  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7101  getUseRinsLns());
    7102  }
    7103  if (hasRandomizeSearch()) {
    7104  hash = (37 * hash) + RANDOMIZE_SEARCH_FIELD_NUMBER;
    7105  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7106  getRandomizeSearch());
    7107  }
    7109  hash = (37 * hash) + SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER;
    7110  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7112  }
    7113  if (hasUseOptionalVariables()) {
    7114  hash = (37 * hash) + USE_OPTIONAL_VARIABLES_FIELD_NUMBER;
    7115  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7117  }
    7118  if (hasUseExactLpReason()) {
    7119  hash = (37 * hash) + USE_EXACT_LP_REASON_FIELD_NUMBER;
    7120  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7122  }
    7123  if (hasUseCombinedNoOverlap()) {
    7124  hash = (37 * hash) + USE_COMBINED_NO_OVERLAP_FIELD_NUMBER;
    7125  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7127  }
    7128  if (hasMipMaxBound()) {
    7129  hash = (37 * hash) + MIP_MAX_BOUND_FIELD_NUMBER;
    7130  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7131  java.lang.Double.doubleToLongBits(getMipMaxBound()));
    7132  }
    7133  if (hasMipVarScaling()) {
    7134  hash = (37 * hash) + MIP_VAR_SCALING_FIELD_NUMBER;
    7135  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7136  java.lang.Double.doubleToLongBits(getMipVarScaling()));
    7137  }
    7138  if (hasMipWantedPrecision()) {
    7139  hash = (37 * hash) + MIP_WANTED_PRECISION_FIELD_NUMBER;
    7140  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7141  java.lang.Double.doubleToLongBits(getMipWantedPrecision()));
    7142  }
    7143  if (hasMipMaxActivityExponent()) {
    7144  hash = (37 * hash) + MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER;
    7145  hash = (53 * hash) + getMipMaxActivityExponent();
    7146  }
    7147  if (hasMipCheckPrecision()) {
    7148  hash = (37 * hash) + MIP_CHECK_PRECISION_FIELD_NUMBER;
    7149  hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
    7150  java.lang.Double.doubleToLongBits(getMipCheckPrecision()));
    7151  }
    7152  if (hasCatchSigintSignal()) {
    7153  hash = (37 * hash) + CATCH_SIGINT_SIGNAL_FIELD_NUMBER;
    7154  hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
    7156  }
    7157  hash = (29 * hash) + unknownFields.hashCode();
    7158  memoizedHashCode = hash;
    7159  return hash;
    7160  }
    7161 
    7163  java.nio.ByteBuffer data)
    7164  throws com.google.protobuf.InvalidProtocolBufferException {
    7165  return PARSER.parseFrom(data);
    7166  }
    7168  java.nio.ByteBuffer data,
    7169  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7170  throws com.google.protobuf.InvalidProtocolBufferException {
    7171  return PARSER.parseFrom(data, extensionRegistry);
    7172  }
    7174  com.google.protobuf.ByteString data)
    7175  throws com.google.protobuf.InvalidProtocolBufferException {
    7176  return PARSER.parseFrom(data);
    7177  }
    7179  com.google.protobuf.ByteString data,
    7180  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7181  throws com.google.protobuf.InvalidProtocolBufferException {
    7182  return PARSER.parseFrom(data, extensionRegistry);
    7183  }
    7184  public static com.google.ortools.sat.SatParameters parseFrom(byte[] data)
    7185  throws com.google.protobuf.InvalidProtocolBufferException {
    7186  return PARSER.parseFrom(data);
    7187  }
    7189  byte[] data,
    7190  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7191  throws com.google.protobuf.InvalidProtocolBufferException {
    7192  return PARSER.parseFrom(data, extensionRegistry);
    7193  }
    7194  public static com.google.ortools.sat.SatParameters parseFrom(java.io.InputStream input)
    7195  throws java.io.IOException {
    7196  return com.google.protobuf.GeneratedMessageV3
    7197  .parseWithIOException(PARSER, input);
    7198  }
    7200  java.io.InputStream input,
    7201  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7202  throws java.io.IOException {
    7203  return com.google.protobuf.GeneratedMessageV3
    7204  .parseWithIOException(PARSER, input, extensionRegistry);
    7205  }
    7206  public static com.google.ortools.sat.SatParameters parseDelimitedFrom(java.io.InputStream input)
    7207  throws java.io.IOException {
    7208  return com.google.protobuf.GeneratedMessageV3
    7209  .parseDelimitedWithIOException(PARSER, input);
    7210  }
    7212  java.io.InputStream input,
    7213  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7214  throws java.io.IOException {
    7215  return com.google.protobuf.GeneratedMessageV3
    7216  .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    7217  }
    7219  com.google.protobuf.CodedInputStream input)
    7220  throws java.io.IOException {
    7221  return com.google.protobuf.GeneratedMessageV3
    7222  .parseWithIOException(PARSER, input);
    7223  }
    7225  com.google.protobuf.CodedInputStream input,
    7226  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    7227  throws java.io.IOException {
    7228  return com.google.protobuf.GeneratedMessageV3
    7229  .parseWithIOException(PARSER, input, extensionRegistry);
    7230  }
    7231 
    7232  @java.lang.Override
    7233  public Builder newBuilderForType() { return newBuilder(); }
    7234  public static Builder newBuilder() {
    7235  return DEFAULT_INSTANCE.toBuilder();
    7236  }
    7237  public static Builder newBuilder(com.google.ortools.sat.SatParameters prototype) {
    7238  return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    7239  }
    7240  @java.lang.Override
    7241  public Builder toBuilder() {
    7242  return this == DEFAULT_INSTANCE
    7243  ? new Builder() : new Builder().mergeFrom(this);
    7244  }
    7245 
    7246  @java.lang.Override
    7248  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    7249  Builder builder = new Builder(parent);
    7250  return builder;
    7251  }
    7261  public static final class Builder extends
    7262  com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
    7263  // @@protoc_insertion_point(builder_implements:operations_research.sat.SatParameters)
    7264  com.google.ortools.sat.SatParametersOrBuilder {
    7265  public static final com.google.protobuf.Descriptors.Descriptor
    7267  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
    7268  }
    7269 
    7270  @java.lang.Override
    7271  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    7273  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_fieldAccessorTable
    7274  .ensureFieldAccessorsInitialized(
    7276  }
    7277 
    7278  // Construct using com.google.ortools.sat.SatParameters.newBuilder()
    7279  private Builder() {
    7280  maybeForceBuilderInitialization();
    7281  }
    7282 
    7283  private Builder(
    7284  com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    7285  super(parent);
    7286  maybeForceBuilderInitialization();
    7287  }
    7288  private void maybeForceBuilderInitialization() {
    7289  if (com.google.protobuf.GeneratedMessageV3
    7290  .alwaysUseFieldBuilders) {
    7291  }
    7292  }
    7293  @java.lang.Override
    7294  public Builder clear() {
    7295  super.clear();
    7296  preferredVariableOrder_ = 0;
    7297  bitField0_ = (bitField0_ & ~0x00000001);
    7298  initialPolarity_ = 1;
    7299  bitField0_ = (bitField0_ & ~0x00000002);
    7300  usePhaseSaving_ = true;
    7301  bitField0_ = (bitField0_ & ~0x00000004);
    7302  randomPolarityRatio_ = 0D;
    7303  bitField0_ = (bitField0_ & ~0x00000008);
    7304  randomBranchesRatio_ = 0D;
    7305  bitField0_ = (bitField0_ & ~0x00000010);
    7306  useErwaHeuristic_ = false;
    7307  bitField0_ = (bitField0_ & ~0x00000020);
    7308  initialVariablesActivity_ = 0D;
    7309  bitField0_ = (bitField0_ & ~0x00000040);
    7310  alsoBumpVariablesInConflictReasons_ = false;
    7311  bitField0_ = (bitField0_ & ~0x00000080);
    7312  minimizationAlgorithm_ = 2;
    7313  bitField0_ = (bitField0_ & ~0x00000100);
    7314  binaryMinimizationAlgorithm_ = 1;
    7315  bitField0_ = (bitField0_ & ~0x00000200);
    7316  subsumptionDuringConflictAnalysis_ = true;
    7317  bitField0_ = (bitField0_ & ~0x00000400);
    7318  clauseCleanupPeriod_ = 10000;
    7319  bitField0_ = (bitField0_ & ~0x00000800);
    7320  clauseCleanupTarget_ = 10000;
    7321  bitField0_ = (bitField0_ & ~0x00001000);
    7322  clauseCleanupProtection_ = 0;
    7323  bitField0_ = (bitField0_ & ~0x00002000);
    7324  clauseCleanupLbdBound_ = 5;
    7325  bitField0_ = (bitField0_ & ~0x00004000);
    7326  clauseCleanupOrdering_ = 0;
    7327  bitField0_ = (bitField0_ & ~0x00008000);
    7328  pbCleanupIncrement_ = 200;
    7329  bitField0_ = (bitField0_ & ~0x00010000);
    7330  pbCleanupRatio_ = 0.5D;
    7331  bitField0_ = (bitField0_ & ~0x00020000);
    7332  minimizeWithPropagationRestartPeriod_ = 10;
    7333  bitField0_ = (bitField0_ & ~0x00040000);
    7334  minimizeWithPropagationNumDecisions_ = 1000;
    7335  bitField0_ = (bitField0_ & ~0x00080000);
    7336  variableActivityDecay_ = 0.8D;
    7337  bitField0_ = (bitField0_ & ~0x00100000);
    7338  maxVariableActivityValue_ = 1e+100D;
    7339  bitField0_ = (bitField0_ & ~0x00200000);
    7340  glucoseMaxDecay_ = 0.95D;
    7341  bitField0_ = (bitField0_ & ~0x00400000);
    7342  glucoseDecayIncrement_ = 0.01D;
    7343  bitField0_ = (bitField0_ & ~0x00800000);
    7344  glucoseDecayIncrementPeriod_ = 5000;
    7345  bitField0_ = (bitField0_ & ~0x01000000);
    7346  clauseActivityDecay_ = 0.999D;
    7347  bitField0_ = (bitField0_ & ~0x02000000);
    7348  maxClauseActivityValue_ = 1e+20D;
    7349  bitField0_ = (bitField0_ & ~0x04000000);
    7350  restartAlgorithms_ = java.util.Collections.emptyList();
    7351  bitField0_ = (bitField0_ & ~0x08000000);
    7352  defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
    7353  bitField0_ = (bitField0_ & ~0x10000000);
    7354  restartPeriod_ = 50;
    7355  bitField0_ = (bitField0_ & ~0x20000000);
    7356  restartRunningWindowSize_ = 50;
    7357  bitField0_ = (bitField0_ & ~0x40000000);
    7358  restartDlAverageRatio_ = 1D;
    7359  bitField0_ = (bitField0_ & ~0x80000000);
    7360  restartLbdAverageRatio_ = 1D;
    7361  bitField1_ = (bitField1_ & ~0x00000001);
    7362  useBlockingRestart_ = false;
    7363  bitField1_ = (bitField1_ & ~0x00000002);
    7364  blockingRestartWindowSize_ = 5000;
    7365  bitField1_ = (bitField1_ & ~0x00000004);
    7366  blockingRestartMultiplier_ = 1.4D;
    7367  bitField1_ = (bitField1_ & ~0x00000008);
    7368  numConflictsBeforeStrategyChanges_ = 0;
    7369  bitField1_ = (bitField1_ & ~0x00000010);
    7370  strategyChangeIncreaseRatio_ = 0D;
    7371  bitField1_ = (bitField1_ & ~0x00000020);
    7372  maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    7373  bitField1_ = (bitField1_ & ~0x00000040);
    7374  maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    7375  bitField1_ = (bitField1_ & ~0x00000080);
    7376  maxNumberOfConflicts_ = 9223372036854775807L;
    7377  bitField1_ = (bitField1_ & ~0x00000100);
    7378  maxMemoryInMb_ = 10000L;
    7379  bitField1_ = (bitField1_ & ~0x00000200);
    7380  treatBinaryClausesSeparately_ = true;
    7381  bitField1_ = (bitField1_ & ~0x00000400);
    7382  randomSeed_ = 1;
    7383  bitField1_ = (bitField1_ & ~0x00000800);
    7384  logSearchProgress_ = false;
    7385  bitField1_ = (bitField1_ & ~0x00001000);
    7386  usePbResolution_ = false;
    7387  bitField1_ = (bitField1_ & ~0x00002000);
    7388  minimizeReductionDuringPbResolution_ = false;
    7389  bitField1_ = (bitField1_ & ~0x00004000);
    7390  countAssumptionLevelsInLbd_ = true;
    7391  bitField1_ = (bitField1_ & ~0x00008000);
    7392  presolveBveThreshold_ = 500;
    7393  bitField1_ = (bitField1_ & ~0x00010000);
    7394  presolveBveClauseWeight_ = 3;
    7395  bitField1_ = (bitField1_ & ~0x00020000);
    7396  presolveProbingDeterministicTimeLimit_ = 30D;
    7397  bitField1_ = (bitField1_ & ~0x00040000);
    7398  presolveBlockedClause_ = true;
    7399  bitField1_ = (bitField1_ & ~0x00080000);
    7400  presolveUseBva_ = true;
    7401  bitField1_ = (bitField1_ & ~0x00100000);
    7402  presolveBvaThreshold_ = 1;
    7403  bitField1_ = (bitField1_ & ~0x00200000);
    7404  useOptimizationHints_ = true;
    7405  bitField1_ = (bitField1_ & ~0x00400000);
    7406  minimizeCore_ = true;
    7407  bitField1_ = (bitField1_ & ~0x00800000);
    7408  findMultipleCores_ = true;
    7409  bitField1_ = (bitField1_ & ~0x01000000);
    7410  coverOptimization_ = true;
    7411  bitField1_ = (bitField1_ & ~0x02000000);
    7412  maxSatAssumptionOrder_ = 0;
    7413  bitField1_ = (bitField1_ & ~0x04000000);
    7414  maxSatReverseAssumptionOrder_ = false;
    7415  bitField1_ = (bitField1_ & ~0x08000000);
    7416  maxSatStratification_ = 1;
    7417  bitField1_ = (bitField1_ & ~0x10000000);
    7418  usePrecedencesInDisjunctiveConstraint_ = true;
    7419  bitField1_ = (bitField1_ & ~0x20000000);
    7420  useOverloadCheckerInCumulativeConstraint_ = false;
    7421  bitField1_ = (bitField1_ & ~0x40000000);
    7422  useTimetableEdgeFindingInCumulativeConstraint_ = false;
    7423  bitField1_ = (bitField1_ & ~0x80000000);
    7424  useDisjunctiveConstraintInCumulativeConstraint_ = true;
    7425  bitField2_ = (bitField2_ & ~0x00000001);
    7426  linearizationLevel_ = 1;
    7427  bitField2_ = (bitField2_ & ~0x00000002);
    7428  booleanEncodingLevel_ = 1;
    7429  bitField2_ = (bitField2_ & ~0x00000004);
    7430  maxNumCuts_ = 5000;
    7431  bitField2_ = (bitField2_ & ~0x00000008);
    7432  onlyAddCutsAtLevelZero_ = false;
    7433  bitField2_ = (bitField2_ & ~0x00000010);
    7434  addKnapsackCuts_ = false;
    7435  bitField2_ = (bitField2_ & ~0x00000020);
    7436  addCgCuts_ = false;
    7437  bitField2_ = (bitField2_ & ~0x00000040);
    7438  addMirCuts_ = true;
    7439  bitField2_ = (bitField2_ & ~0x00000080);
    7440  useMirRounding_ = true;
    7441  bitField2_ = (bitField2_ & ~0x00000100);
    7442  maxIntegerRoundingScaling_ = 600;
    7443  bitField2_ = (bitField2_ & ~0x00000200);
    7444  addLpConstraintsLazily_ = true;
    7445  bitField2_ = (bitField2_ & ~0x00000400);
    7446  minOrthogonalityForLpConstraints_ = 0D;
    7447  bitField2_ = (bitField2_ & ~0x00000800);
    7448  maxInactiveCount_ = 1000L;
    7449  bitField2_ = (bitField2_ & ~0x00001000);
    7450  constraintRemovalBatchSize_ = 100L;
    7451  bitField2_ = (bitField2_ & ~0x00002000);
    7452  searchBranching_ = 0;
    7453  bitField2_ = (bitField2_ & ~0x00004000);
    7454  exploitIntegerLpSolution_ = true;
    7455  bitField2_ = (bitField2_ & ~0x00008000);
    7456  exploitAllLpSolution_ = true;
    7457  bitField2_ = (bitField2_ & ~0x00010000);
    7458  exploitBestSolution_ = false;
    7459  bitField2_ = (bitField2_ & ~0x00020000);
    7460  exploitObjective_ = true;
    7461  bitField2_ = (bitField2_ & ~0x00040000);
    7462  pseudoCostReliabilityThreshold_ = 100L;
    7463  bitField2_ = (bitField2_ & ~0x00080000);
    7464  optimizeWithCore_ = false;
    7465  bitField2_ = (bitField2_ & ~0x00100000);
    7466  binarySearchNumConflicts_ = -1;
    7467  bitField2_ = (bitField2_ & ~0x00200000);
    7468  optimizeWithMaxHs_ = false;
    7469  bitField2_ = (bitField2_ & ~0x00400000);
    7470  cpModelPresolve_ = true;
    7471  bitField2_ = (bitField2_ & ~0x00800000);
    7472  cpModelProbingLevel_ = 2;
    7473  bitField2_ = (bitField2_ & ~0x01000000);
    7474  cpModelUseSatPresolve_ = true;
    7475  bitField2_ = (bitField2_ & ~0x02000000);
    7476  enumerateAllSolutions_ = false;
    7477  bitField2_ = (bitField2_ & ~0x04000000);
    7478  fillTightenedDomainsInResponse_ = false;
    7479  bitField2_ = (bitField2_ & ~0x08000000);
    7480  instantiateAllVariables_ = true;
    7481  bitField2_ = (bitField2_ & ~0x10000000);
    7482  autoDetectGreaterThanAtLeastOneOf_ = true;
    7483  bitField2_ = (bitField2_ & ~0x20000000);
    7484  stopAfterFirstSolution_ = false;
    7485  bitField2_ = (bitField2_ & ~0x40000000);
    7486  numSearchWorkers_ = 1;
    7487  bitField2_ = (bitField2_ & ~0x80000000);
    7488  interleaveSearch_ = false;
    7489  bitField3_ = (bitField3_ & ~0x00000001);
    7490  deterministicParallelSearch_ = false;
    7491  bitField3_ = (bitField3_ & ~0x00000002);
    7492  shareObjectiveBounds_ = true;
    7493  bitField3_ = (bitField3_ & ~0x00000004);
    7494  shareLevelZeroBounds_ = true;
    7495  bitField3_ = (bitField3_ & ~0x00000008);
    7496  useLnsOnly_ = false;
    7497  bitField3_ = (bitField3_ & ~0x00000010);
    7498  lnsFocusOnDecisionVariables_ = false;
    7499  bitField3_ = (bitField3_ & ~0x00000020);
    7500  useRinsLns_ = true;
    7501  bitField3_ = (bitField3_ & ~0x00000040);
    7502  randomizeSearch_ = false;
    7503  bitField3_ = (bitField3_ & ~0x00000080);
    7504  searchRandomizationTolerance_ = 0L;
    7505  bitField3_ = (bitField3_ & ~0x00000100);
    7506  useOptionalVariables_ = true;
    7507  bitField3_ = (bitField3_ & ~0x00000200);
    7508  useExactLpReason_ = true;
    7509  bitField3_ = (bitField3_ & ~0x00000400);
    7510  useCombinedNoOverlap_ = false;
    7511  bitField3_ = (bitField3_ & ~0x00000800);
    7512  mipMaxBound_ = 10000000D;
    7513  bitField3_ = (bitField3_ & ~0x00001000);
    7514  mipVarScaling_ = 1D;
    7515  bitField3_ = (bitField3_ & ~0x00002000);
    7516  mipWantedPrecision_ = 1e-06D;
    7517  bitField3_ = (bitField3_ & ~0x00004000);
    7518  mipMaxActivityExponent_ = 53;
    7519  bitField3_ = (bitField3_ & ~0x00008000);
    7520  mipCheckPrecision_ = 0.0001D;
    7521  bitField3_ = (bitField3_ & ~0x00010000);
    7522  catchSigintSignal_ = true;
    7523  bitField3_ = (bitField3_ & ~0x00020000);
    7524  return this;
    7525  }
    7526 
    7527  @java.lang.Override
    7528  public com.google.protobuf.Descriptors.Descriptor
    7530  return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
    7531  }
    7532 
    7533  @java.lang.Override
    7536  }
    7537 
    7538  @java.lang.Override
    7541  if (!result.isInitialized()) {
    7542  throw newUninitializedMessageException(result);
    7543  }
    7544  return result;
    7545  }
    7546 
    7547  @java.lang.Override
    7550  int from_bitField0_ = bitField0_;
    7551  int from_bitField1_ = bitField1_;
    7552  int from_bitField2_ = bitField2_;
    7553  int from_bitField3_ = bitField3_;
    7554  int to_bitField0_ = 0;
    7555  int to_bitField1_ = 0;
    7556  int to_bitField2_ = 0;
    7557  int to_bitField3_ = 0;
    7558  if (((from_bitField0_ & 0x00000001) != 0)) {
    7559  to_bitField0_ |= 0x00000001;
    7560  }
    7561  result.preferredVariableOrder_ = preferredVariableOrder_;
    7562  if (((from_bitField0_ & 0x00000002) != 0)) {
    7563  to_bitField0_ |= 0x00000002;
    7564  }
    7565  result.initialPolarity_ = initialPolarity_;
    7566  if (((from_bitField0_ & 0x00000004) != 0)) {
    7567  to_bitField0_ |= 0x00000004;
    7568  }
    7569  result.usePhaseSaving_ = usePhaseSaving_;
    7570  if (((from_bitField0_ & 0x00000008) != 0)) {
    7571  result.randomPolarityRatio_ = randomPolarityRatio_;
    7572  to_bitField0_ |= 0x00000008;
    7573  }
    7574  if (((from_bitField0_ & 0x00000010) != 0)) {
    7575  result.randomBranchesRatio_ = randomBranchesRatio_;
    7576  to_bitField0_ |= 0x00000010;
    7577  }
    7578  if (((from_bitField0_ & 0x00000020) != 0)) {
    7579  result.useErwaHeuristic_ = useErwaHeuristic_;
    7580  to_bitField0_ |= 0x00000020;
    7581  }
    7582  if (((from_bitField0_ & 0x00000040) != 0)) {
    7583  result.initialVariablesActivity_ = initialVariablesActivity_;
    7584  to_bitField0_ |= 0x00000040;
    7585  }
    7586  if (((from_bitField0_ & 0x00000080) != 0)) {
    7587  result.alsoBumpVariablesInConflictReasons_ = alsoBumpVariablesInConflictReasons_;
    7588  to_bitField0_ |= 0x00000080;
    7589  }
    7590  if (((from_bitField0_ & 0x00000100) != 0)) {
    7591  to_bitField0_ |= 0x00000100;
    7592  }
    7593  result.minimizationAlgorithm_ = minimizationAlgorithm_;
    7594  if (((from_bitField0_ & 0x00000200) != 0)) {
    7595  to_bitField0_ |= 0x00000200;
    7596  }
    7597  result.binaryMinimizationAlgorithm_ = binaryMinimizationAlgorithm_;
    7598  if (((from_bitField0_ & 0x00000400) != 0)) {
    7599  to_bitField0_ |= 0x00000400;
    7600  }
    7601  result.subsumptionDuringConflictAnalysis_ = subsumptionDuringConflictAnalysis_;
    7602  if (((from_bitField0_ & 0x00000800) != 0)) {
    7603  to_bitField0_ |= 0x00000800;
    7604  }
    7605  result.clauseCleanupPeriod_ = clauseCleanupPeriod_;
    7606  if (((from_bitField0_ & 0x00001000) != 0)) {
    7607  to_bitField0_ |= 0x00001000;
    7608  }
    7609  result.clauseCleanupTarget_ = clauseCleanupTarget_;
    7610  if (((from_bitField0_ & 0x00002000) != 0)) {
    7611  to_bitField0_ |= 0x00002000;
    7612  }
    7613  result.clauseCleanupProtection_ = clauseCleanupProtection_;
    7614  if (((from_bitField0_ & 0x00004000) != 0)) {
    7615  to_bitField0_ |= 0x00004000;
    7616  }
    7617  result.clauseCleanupLbdBound_ = clauseCleanupLbdBound_;
    7618  if (((from_bitField0_ & 0x00008000) != 0)) {
    7619  to_bitField0_ |= 0x00008000;
    7620  }
    7621  result.clauseCleanupOrdering_ = clauseCleanupOrdering_;
    7622  if (((from_bitField0_ & 0x00010000) != 0)) {
    7623  to_bitField0_ |= 0x00010000;
    7624  }
    7625  result.pbCleanupIncrement_ = pbCleanupIncrement_;
    7626  if (((from_bitField0_ & 0x00020000) != 0)) {
    7627  to_bitField0_ |= 0x00020000;
    7628  }
    7629  result.pbCleanupRatio_ = pbCleanupRatio_;
    7630  if (((from_bitField0_ & 0x00040000) != 0)) {
    7631  to_bitField0_ |= 0x00040000;
    7632  }
    7633  result.minimizeWithPropagationRestartPeriod_ = minimizeWithPropagationRestartPeriod_;
    7634  if (((from_bitField0_ & 0x00080000) != 0)) {
    7635  to_bitField0_ |= 0x00080000;
    7636  }
    7637  result.minimizeWithPropagationNumDecisions_ = minimizeWithPropagationNumDecisions_;
    7638  if (((from_bitField0_ & 0x00100000) != 0)) {
    7639  to_bitField0_ |= 0x00100000;
    7640  }
    7641  result.variableActivityDecay_ = variableActivityDecay_;
    7642  if (((from_bitField0_ & 0x00200000) != 0)) {
    7643  to_bitField0_ |= 0x00200000;
    7644  }
    7645  result.maxVariableActivityValue_ = maxVariableActivityValue_;
    7646  if (((from_bitField0_ & 0x00400000) != 0)) {
    7647  to_bitField0_ |= 0x00400000;
    7648  }
    7649  result.glucoseMaxDecay_ = glucoseMaxDecay_;
    7650  if (((from_bitField0_ & 0x00800000) != 0)) {
    7651  to_bitField0_ |= 0x00800000;
    7652  }
    7653  result.glucoseDecayIncrement_ = glucoseDecayIncrement_;
    7654  if (((from_bitField0_ & 0x01000000) != 0)) {
    7655  to_bitField0_ |= 0x01000000;
    7656  }
    7657  result.glucoseDecayIncrementPeriod_ = glucoseDecayIncrementPeriod_;
    7658  if (((from_bitField0_ & 0x02000000) != 0)) {
    7659  to_bitField0_ |= 0x02000000;
    7660  }
    7661  result.clauseActivityDecay_ = clauseActivityDecay_;
    7662  if (((from_bitField0_ & 0x04000000) != 0)) {
    7663  to_bitField0_ |= 0x04000000;
    7664  }
    7665  result.maxClauseActivityValue_ = maxClauseActivityValue_;
    7666  if (((bitField0_ & 0x08000000) != 0)) {
    7667  restartAlgorithms_ = java.util.Collections.unmodifiableList(restartAlgorithms_);
    7668  bitField0_ = (bitField0_ & ~0x08000000);
    7669  }
    7670  result.restartAlgorithms_ = restartAlgorithms_;
    7671  if (((from_bitField0_ & 0x10000000) != 0)) {
    7672  to_bitField0_ |= 0x08000000;
    7673  }
    7674  result.defaultRestartAlgorithms_ = defaultRestartAlgorithms_;
    7675  if (((from_bitField0_ & 0x20000000) != 0)) {
    7676  to_bitField0_ |= 0x10000000;
    7677  }
    7678  result.restartPeriod_ = restartPeriod_;
    7679  if (((from_bitField0_ & 0x40000000) != 0)) {
    7680  to_bitField0_ |= 0x20000000;
    7681  }
    7682  result.restartRunningWindowSize_ = restartRunningWindowSize_;
    7683  if (((from_bitField0_ & 0x80000000) != 0)) {
    7684  to_bitField0_ |= 0x40000000;
    7685  }
    7686  result.restartDlAverageRatio_ = restartDlAverageRatio_;
    7687  if (((from_bitField1_ & 0x00000001) != 0)) {
    7688  to_bitField0_ |= 0x80000000;
    7689  }
    7690  result.restartLbdAverageRatio_ = restartLbdAverageRatio_;
    7691  if (((from_bitField1_ & 0x00000002) != 0)) {
    7692  result.useBlockingRestart_ = useBlockingRestart_;
    7693  to_bitField1_ |= 0x00000001;
    7694  }
    7695  if (((from_bitField1_ & 0x00000004) != 0)) {
    7696  to_bitField1_ |= 0x00000002;
    7697  }
    7698  result.blockingRestartWindowSize_ = blockingRestartWindowSize_;
    7699  if (((from_bitField1_ & 0x00000008) != 0)) {
    7700  to_bitField1_ |= 0x00000004;
    7701  }
    7702  result.blockingRestartMultiplier_ = blockingRestartMultiplier_;
    7703  if (((from_bitField1_ & 0x00000010) != 0)) {
    7704  result.numConflictsBeforeStrategyChanges_ = numConflictsBeforeStrategyChanges_;
    7705  to_bitField1_ |= 0x00000008;
    7706  }
    7707  if (((from_bitField1_ & 0x00000020) != 0)) {
    7708  result.strategyChangeIncreaseRatio_ = strategyChangeIncreaseRatio_;
    7709  to_bitField1_ |= 0x00000010;
    7710  }
    7711  if (((from_bitField1_ & 0x00000040) != 0)) {
    7712  to_bitField1_ |= 0x00000020;
    7713  }
    7714  result.maxTimeInSeconds_ = maxTimeInSeconds_;
    7715  if (((from_bitField1_ & 0x00000080) != 0)) {
    7716  to_bitField1_ |= 0x00000040;
    7717  }
    7718  result.maxDeterministicTime_ = maxDeterministicTime_;
    7719  if (((from_bitField1_ & 0x00000100) != 0)) {
    7720  to_bitField1_ |= 0x00000080;
    7721  }
    7722  result.maxNumberOfConflicts_ = maxNumberOfConflicts_;
    7723  if (((from_bitField1_ & 0x00000200) != 0)) {
    7724  to_bitField1_ |= 0x00000100;
    7725  }
    7726  result.maxMemoryInMb_ = maxMemoryInMb_;
    7727  if (((from_bitField1_ & 0x00000400) != 0)) {
    7728  to_bitField1_ |= 0x00000200;
    7729  }
    7730  result.treatBinaryClausesSeparately_ = treatBinaryClausesSeparately_;
    7731  if (((from_bitField1_ & 0x00000800) != 0)) {
    7732  to_bitField1_ |= 0x00000400;
    7733  }
    7734  result.randomSeed_ = randomSeed_;
    7735  if (((from_bitField1_ & 0x00001000) != 0)) {
    7736  result.logSearchProgress_ = logSearchProgress_;
    7737  to_bitField1_ |= 0x00000800;
    7738  }
    7739  if (((from_bitField1_ & 0x00002000) != 0)) {
    7740  result.usePbResolution_ = usePbResolution_;
    7741  to_bitField1_ |= 0x00001000;
    7742  }
    7743  if (((from_bitField1_ & 0x00004000) != 0)) {
    7744  result.minimizeReductionDuringPbResolution_ = minimizeReductionDuringPbResolution_;
    7745  to_bitField1_ |= 0x00002000;
    7746  }
    7747  if (((from_bitField1_ & 0x00008000) != 0)) {
    7748  to_bitField1_ |= 0x00004000;
    7749  }
    7750  result.countAssumptionLevelsInLbd_ = countAssumptionLevelsInLbd_;
    7751  if (((from_bitField1_ & 0x00010000) != 0)) {
    7752  to_bitField1_ |= 0x00008000;
    7753  }
    7754  result.presolveBveThreshold_ = presolveBveThreshold_;
    7755  if (((from_bitField1_ & 0x00020000) != 0)) {
    7756  to_bitField1_ |= 0x00010000;
    7757  }
    7758  result.presolveBveClauseWeight_ = presolveBveClauseWeight_;
    7759  if (((from_bitField1_ & 0x00040000) != 0)) {
    7760  to_bitField1_ |= 0x00020000;
    7761  }
    7762  result.presolveProbingDeterministicTimeLimit_ = presolveProbingDeterministicTimeLimit_;
    7763  if (((from_bitField1_ & 0x00080000) != 0)) {
    7764  to_bitField1_ |= 0x00040000;
    7765  }
    7766  result.presolveBlockedClause_ = presolveBlockedClause_;
    7767  if (((from_bitField1_ & 0x00100000) != 0)) {
    7768  to_bitField1_ |= 0x00080000;
    7769  }
    7770  result.presolveUseBva_ = presolveUseBva_;
    7771  if (((from_bitField1_ & 0x00200000) != 0)) {
    7772  to_bitField1_ |= 0x00100000;
    7773  }
    7774  result.presolveBvaThreshold_ = presolveBvaThreshold_;
    7775  if (((from_bitField1_ & 0x00400000) != 0)) {
    7776  to_bitField1_ |= 0x00200000;
    7777  }
    7778  result.useOptimizationHints_ = useOptimizationHints_;
    7779  if (((from_bitField1_ & 0x00800000) != 0)) {
    7780  to_bitField1_ |= 0x00400000;
    7781  }
    7782  result.minimizeCore_ = minimizeCore_;
    7783  if (((from_bitField1_ & 0x01000000) != 0)) {
    7784  to_bitField1_ |= 0x00800000;
    7785  }
    7786  result.findMultipleCores_ = findMultipleCores_;
    7787  if (((from_bitField1_ & 0x02000000) != 0)) {
    7788  to_bitField1_ |= 0x01000000;
    7789  }
    7790  result.coverOptimization_ = coverOptimization_;
    7791  if (((from_bitField1_ & 0x04000000) != 0)) {
    7792  to_bitField1_ |= 0x02000000;
    7793  }
    7794  result.maxSatAssumptionOrder_ = maxSatAssumptionOrder_;
    7795  if (((from_bitField1_ & 0x08000000) != 0)) {
    7796  result.maxSatReverseAssumptionOrder_ = maxSatReverseAssumptionOrder_;
    7797  to_bitField1_ |= 0x04000000;
    7798  }
    7799  if (((from_bitField1_ & 0x10000000) != 0)) {
    7800  to_bitField1_ |= 0x08000000;
    7801  }
    7802  result.maxSatStratification_ = maxSatStratification_;
    7803  if (((from_bitField1_ & 0x20000000) != 0)) {
    7804  to_bitField1_ |= 0x10000000;
    7805  }
    7806  result.usePrecedencesInDisjunctiveConstraint_ = usePrecedencesInDisjunctiveConstraint_;
    7807  if (((from_bitField1_ & 0x40000000) != 0)) {
    7808  result.useOverloadCheckerInCumulativeConstraint_ = useOverloadCheckerInCumulativeConstraint_;
    7809  to_bitField1_ |= 0x20000000;
    7810  }
    7811  if (((from_bitField1_ & 0x80000000) != 0)) {
    7812  result.useTimetableEdgeFindingInCumulativeConstraint_ = useTimetableEdgeFindingInCumulativeConstraint_;
    7813  to_bitField1_ |= 0x40000000;
    7814  }
    7815  if (((from_bitField2_ & 0x00000001) != 0)) {
    7816  to_bitField1_ |= 0x80000000;
    7817  }
    7818  result.useDisjunctiveConstraintInCumulativeConstraint_ = useDisjunctiveConstraintInCumulativeConstraint_;
    7819  if (((from_bitField2_ & 0x00000002) != 0)) {
    7820  to_bitField2_ |= 0x00000001;
    7821  }
    7822  result.linearizationLevel_ = linearizationLevel_;
    7823  if (((from_bitField2_ & 0x00000004) != 0)) {
    7824  to_bitField2_ |= 0x00000002;
    7825  }
    7826  result.booleanEncodingLevel_ = booleanEncodingLevel_;
    7827  if (((from_bitField2_ & 0x00000008) != 0)) {
    7828  to_bitField2_ |= 0x00000004;
    7829  }
    7830  result.maxNumCuts_ = maxNumCuts_;
    7831  if (((from_bitField2_ & 0x00000010) != 0)) {
    7832  result.onlyAddCutsAtLevelZero_ = onlyAddCutsAtLevelZero_;
    7833  to_bitField2_ |= 0x00000008;
    7834  }
    7835  if (((from_bitField2_ & 0x00000020) != 0)) {
    7836  result.addKnapsackCuts_ = addKnapsackCuts_;
    7837  to_bitField2_ |= 0x00000010;
    7838  }
    7839  if (((from_bitField2_ & 0x00000040) != 0)) {
    7840  result.addCgCuts_ = addCgCuts_;
    7841  to_bitField2_ |= 0x00000020;
    7842  }
    7843  if (((from_bitField2_ & 0x00000080) != 0)) {
    7844  to_bitField2_ |= 0x00000040;
    7845  }
    7846  result.addMirCuts_ = addMirCuts_;
    7847  if (((from_bitField2_ & 0x00000100) != 0)) {
    7848  to_bitField2_ |= 0x00000080;
    7849  }
    7850  result.useMirRounding_ = useMirRounding_;
    7851  if (((from_bitField2_ & 0x00000200) != 0)) {
    7852  to_bitField2_ |= 0x00000100;
    7853  }
    7854  result.maxIntegerRoundingScaling_ = maxIntegerRoundingScaling_;
    7855  if (((from_bitField2_ & 0x00000400) != 0)) {
    7856  to_bitField2_ |= 0x00000200;
    7857  }
    7858  result.addLpConstraintsLazily_ = addLpConstraintsLazily_;
    7859  if (((from_bitField2_ & 0x00000800) != 0)) {
    7860  result.minOrthogonalityForLpConstraints_ = minOrthogonalityForLpConstraints_;
    7861  to_bitField2_ |= 0x00000400;
    7862  }
    7863  if (((from_bitField2_ & 0x00001000) != 0)) {
    7864  to_bitField2_ |= 0x00000800;
    7865  }
    7866  result.maxInactiveCount_ = maxInactiveCount_;
    7867  if (((from_bitField2_ & 0x00002000) != 0)) {
    7868  to_bitField2_ |= 0x00001000;
    7869  }
    7870  result.constraintRemovalBatchSize_ = constraintRemovalBatchSize_;
    7871  if (((from_bitField2_ & 0x00004000) != 0)) {
    7872  to_bitField2_ |= 0x00002000;
    7873  }
    7874  result.searchBranching_ = searchBranching_;
    7875  if (((from_bitField2_ & 0x00008000) != 0)) {
    7876  to_bitField2_ |= 0x00004000;
    7877  }
    7878  result.exploitIntegerLpSolution_ = exploitIntegerLpSolution_;
    7879  if (((from_bitField2_ & 0x00010000) != 0)) {
    7880  to_bitField2_ |= 0x00008000;
    7881  }
    7882  result.exploitAllLpSolution_ = exploitAllLpSolution_;
    7883  if (((from_bitField2_ & 0x00020000) != 0)) {
    7884  result.exploitBestSolution_ = exploitBestSolution_;
    7885  to_bitField2_ |= 0x00010000;
    7886  }
    7887  if (((from_bitField2_ & 0x00040000) != 0)) {
    7888  to_bitField2_ |= 0x00020000;
    7889  }
    7890  result.exploitObjective_ = exploitObjective_;
    7891  if (((from_bitField2_ & 0x00080000) != 0)) {
    7892  to_bitField2_ |= 0x00040000;
    7893  }
    7894  result.pseudoCostReliabilityThreshold_ = pseudoCostReliabilityThreshold_;
    7895  if (((from_bitField2_ & 0x00100000) != 0)) {
    7896  result.optimizeWithCore_ = optimizeWithCore_;
    7897  to_bitField2_ |= 0x00080000;
    7898  }
    7899  if (((from_bitField2_ & 0x00200000) != 0)) {
    7900  to_bitField2_ |= 0x00100000;
    7901  }
    7902  result.binarySearchNumConflicts_ = binarySearchNumConflicts_;
    7903  if (((from_bitField2_ & 0x00400000) != 0)) {
    7904  result.optimizeWithMaxHs_ = optimizeWithMaxHs_;
    7905  to_bitField2_ |= 0x00200000;
    7906  }
    7907  if (((from_bitField2_ & 0x00800000) != 0)) {
    7908  to_bitField2_ |= 0x00400000;
    7909  }
    7910  result.cpModelPresolve_ = cpModelPresolve_;
    7911  if (((from_bitField2_ & 0x01000000) != 0)) {
    7912  to_bitField2_ |= 0x00800000;
    7913  }
    7914  result.cpModelProbingLevel_ = cpModelProbingLevel_;
    7915  if (((from_bitField2_ & 0x02000000) != 0)) {
    7916  to_bitField2_ |= 0x01000000;
    7917  }
    7918  result.cpModelUseSatPresolve_ = cpModelUseSatPresolve_;
    7919  if (((from_bitField2_ & 0x04000000) != 0)) {
    7920  result.enumerateAllSolutions_ = enumerateAllSolutions_;
    7921  to_bitField2_ |= 0x02000000;
    7922  }
    7923  if (((from_bitField2_ & 0x08000000) != 0)) {
    7924  result.fillTightenedDomainsInResponse_ = fillTightenedDomainsInResponse_;
    7925  to_bitField2_ |= 0x04000000;
    7926  }
    7927  if (((from_bitField2_ & 0x10000000) != 0)) {
    7928  to_bitField2_ |= 0x08000000;
    7929  }
    7930  result.instantiateAllVariables_ = instantiateAllVariables_;
    7931  if (((from_bitField2_ & 0x20000000) != 0)) {
    7932  to_bitField2_ |= 0x10000000;
    7933  }
    7934  result.autoDetectGreaterThanAtLeastOneOf_ = autoDetectGreaterThanAtLeastOneOf_;
    7935  if (((from_bitField2_ & 0x40000000) != 0)) {
    7936  result.stopAfterFirstSolution_ = stopAfterFirstSolution_;
    7937  to_bitField2_ |= 0x20000000;
    7938  }
    7939  if (((from_bitField2_ & 0x80000000) != 0)) {
    7940  to_bitField2_ |= 0x40000000;
    7941  }
    7942  result.numSearchWorkers_ = numSearchWorkers_;
    7943  if (((from_bitField3_ & 0x00000001) != 0)) {
    7944  result.interleaveSearch_ = interleaveSearch_;
    7945  to_bitField2_ |= 0x80000000;
    7946  }
    7947  if (((from_bitField3_ & 0x00000002) != 0)) {
    7948  result.deterministicParallelSearch_ = deterministicParallelSearch_;
    7949  to_bitField3_ |= 0x00000001;
    7950  }
    7951  if (((from_bitField3_ & 0x00000004) != 0)) {
    7952  to_bitField3_ |= 0x00000002;
    7953  }
    7954  result.shareObjectiveBounds_ = shareObjectiveBounds_;
    7955  if (((from_bitField3_ & 0x00000008) != 0)) {
    7956  to_bitField3_ |= 0x00000004;
    7957  }
    7958  result.shareLevelZeroBounds_ = shareLevelZeroBounds_;
    7959  if (((from_bitField3_ & 0x00000010) != 0)) {
    7960  result.useLnsOnly_ = useLnsOnly_;
    7961  to_bitField3_ |= 0x00000008;
    7962  }
    7963  if (((from_bitField3_ & 0x00000020) != 0)) {
    7964  result.lnsFocusOnDecisionVariables_ = lnsFocusOnDecisionVariables_;
    7965  to_bitField3_ |= 0x00000010;
    7966  }
    7967  if (((from_bitField3_ & 0x00000040) != 0)) {
    7968  to_bitField3_ |= 0x00000020;
    7969  }
    7970  result.useRinsLns_ = useRinsLns_;
    7971  if (((from_bitField3_ & 0x00000080) != 0)) {
    7972  result.randomizeSearch_ = randomizeSearch_;
    7973  to_bitField3_ |= 0x00000040;
    7974  }
    7975  if (((from_bitField3_ & 0x00000100) != 0)) {
    7976  result.searchRandomizationTolerance_ = searchRandomizationTolerance_;
    7977  to_bitField3_ |= 0x00000080;
    7978  }
    7979  if (((from_bitField3_ & 0x00000200) != 0)) {
    7980  to_bitField3_ |= 0x00000100;
    7981  }
    7982  result.useOptionalVariables_ = useOptionalVariables_;
    7983  if (((from_bitField3_ & 0x00000400) != 0)) {
    7984  to_bitField3_ |= 0x00000200;
    7985  }
    7986  result.useExactLpReason_ = useExactLpReason_;
    7987  if (((from_bitField3_ & 0x00000800) != 0)) {
    7988  result.useCombinedNoOverlap_ = useCombinedNoOverlap_;
    7989  to_bitField3_ |= 0x00000400;
    7990  }
    7991  if (((from_bitField3_ & 0x00001000) != 0)) {
    7992  to_bitField3_ |= 0x00000800;
    7993  }
    7994  result.mipMaxBound_ = mipMaxBound_;
    7995  if (((from_bitField3_ & 0x00002000) != 0)) {
    7996  to_bitField3_ |= 0x00001000;
    7997  }
    7998  result.mipVarScaling_ = mipVarScaling_;
    7999  if (((from_bitField3_ & 0x00004000) != 0)) {
    8000  to_bitField3_ |= 0x00002000;
    8001  }
    8002  result.mipWantedPrecision_ = mipWantedPrecision_;
    8003  if (((from_bitField3_ & 0x00008000) != 0)) {
    8004  to_bitField3_ |= 0x00004000;
    8005  }
    8006  result.mipMaxActivityExponent_ = mipMaxActivityExponent_;
    8007  if (((from_bitField3_ & 0x00010000) != 0)) {
    8008  to_bitField3_ |= 0x00008000;
    8009  }
    8010  result.mipCheckPrecision_ = mipCheckPrecision_;
    8011  if (((from_bitField3_ & 0x00020000) != 0)) {
    8012  to_bitField3_ |= 0x00010000;
    8013  }
    8014  result.catchSigintSignal_ = catchSigintSignal_;
    8015  result.bitField0_ = to_bitField0_;
    8016  result.bitField1_ = to_bitField1_;
    8017  result.bitField2_ = to_bitField2_;
    8018  result.bitField3_ = to_bitField3_;
    8019  onBuilt();
    8020  return result;
    8021  }
    8022 
    8023  @java.lang.Override
    8024  public Builder clone() {
    8025  return super.clone();
    8026  }
    8027  @java.lang.Override
    8029  com.google.protobuf.Descriptors.FieldDescriptor field,
    8030  java.lang.Object value) {
    8031  return super.setField(field, value);
    8032  }
    8033  @java.lang.Override
    8035  com.google.protobuf.Descriptors.FieldDescriptor field) {
    8036  return super.clearField(field);
    8037  }
    8038  @java.lang.Override
    8040  com.google.protobuf.Descriptors.OneofDescriptor oneof) {
    8041  return super.clearOneof(oneof);
    8042  }
    8043  @java.lang.Override
    8045  com.google.protobuf.Descriptors.FieldDescriptor field,
    8046  int index, java.lang.Object value) {
    8047  return super.setRepeatedField(field, index, value);
    8048  }
    8049  @java.lang.Override
    8051  com.google.protobuf.Descriptors.FieldDescriptor field,
    8052  java.lang.Object value) {
    8053  return super.addRepeatedField(field, value);
    8054  }
    8055  @java.lang.Override
    8056  public Builder mergeFrom(com.google.protobuf.Message other) {
    8057  if (other instanceof com.google.ortools.sat.SatParameters) {
    8058  return mergeFrom((com.google.ortools.sat.SatParameters)other);
    8059  } else {
    8060  super.mergeFrom(other);
    8061  return this;
    8062  }
    8063  }
    8064 
    8066  if (other == com.google.ortools.sat.SatParameters.getDefaultInstance()) return this;
    8067  if (other.hasPreferredVariableOrder()) {
    8068  setPreferredVariableOrder(other.getPreferredVariableOrder());
    8069  }
    8070  if (other.hasInitialPolarity()) {
    8071  setInitialPolarity(other.getInitialPolarity());
    8072  }
    8073  if (other.hasUsePhaseSaving()) {
    8074  setUsePhaseSaving(other.getUsePhaseSaving());
    8075  }
    8076  if (other.hasRandomPolarityRatio()) {
    8077  setRandomPolarityRatio(other.getRandomPolarityRatio());
    8078  }
    8079  if (other.hasRandomBranchesRatio()) {
    8080  setRandomBranchesRatio(other.getRandomBranchesRatio());
    8081  }
    8082  if (other.hasUseErwaHeuristic()) {
    8083  setUseErwaHeuristic(other.getUseErwaHeuristic());
    8084  }
    8085  if (other.hasInitialVariablesActivity()) {
    8086  setInitialVariablesActivity(other.getInitialVariablesActivity());
    8087  }
    8088  if (other.hasAlsoBumpVariablesInConflictReasons()) {
    8089  setAlsoBumpVariablesInConflictReasons(other.getAlsoBumpVariablesInConflictReasons());
    8090  }
    8091  if (other.hasMinimizationAlgorithm()) {
    8092  setMinimizationAlgorithm(other.getMinimizationAlgorithm());
    8093  }
    8094  if (other.hasBinaryMinimizationAlgorithm()) {
    8095  setBinaryMinimizationAlgorithm(other.getBinaryMinimizationAlgorithm());
    8096  }
    8097  if (other.hasSubsumptionDuringConflictAnalysis()) {
    8098  setSubsumptionDuringConflictAnalysis(other.getSubsumptionDuringConflictAnalysis());
    8099  }
    8100  if (other.hasClauseCleanupPeriod()) {
    8101  setClauseCleanupPeriod(other.getClauseCleanupPeriod());
    8102  }
    8103  if (other.hasClauseCleanupTarget()) {
    8104  setClauseCleanupTarget(other.getClauseCleanupTarget());
    8105  }
    8106  if (other.hasClauseCleanupProtection()) {
    8107  setClauseCleanupProtection(other.getClauseCleanupProtection());
    8108  }
    8109  if (other.hasClauseCleanupLbdBound()) {
    8110  setClauseCleanupLbdBound(other.getClauseCleanupLbdBound());
    8111  }
    8112  if (other.hasClauseCleanupOrdering()) {
    8113  setClauseCleanupOrdering(other.getClauseCleanupOrdering());
    8114  }
    8115  if (other.hasPbCleanupIncrement()) {
    8116  setPbCleanupIncrement(other.getPbCleanupIncrement());
    8117  }
    8118  if (other.hasPbCleanupRatio()) {
    8119  setPbCleanupRatio(other.getPbCleanupRatio());
    8120  }
    8121  if (other.hasMinimizeWithPropagationRestartPeriod()) {
    8122  setMinimizeWithPropagationRestartPeriod(other.getMinimizeWithPropagationRestartPeriod());
    8123  }
    8124  if (other.hasMinimizeWithPropagationNumDecisions()) {
    8125  setMinimizeWithPropagationNumDecisions(other.getMinimizeWithPropagationNumDecisions());
    8126  }
    8127  if (other.hasVariableActivityDecay()) {
    8128  setVariableActivityDecay(other.getVariableActivityDecay());
    8129  }
    8130  if (other.hasMaxVariableActivityValue()) {
    8131  setMaxVariableActivityValue(other.getMaxVariableActivityValue());
    8132  }
    8133  if (other.hasGlucoseMaxDecay()) {
    8134  setGlucoseMaxDecay(other.getGlucoseMaxDecay());
    8135  }
    8136  if (other.hasGlucoseDecayIncrement()) {
    8137  setGlucoseDecayIncrement(other.getGlucoseDecayIncrement());
    8138  }
    8139  if (other.hasGlucoseDecayIncrementPeriod()) {
    8140  setGlucoseDecayIncrementPeriod(other.getGlucoseDecayIncrementPeriod());
    8141  }
    8142  if (other.hasClauseActivityDecay()) {
    8143  setClauseActivityDecay(other.getClauseActivityDecay());
    8144  }
    8145  if (other.hasMaxClauseActivityValue()) {
    8146  setMaxClauseActivityValue(other.getMaxClauseActivityValue());
    8147  }
    8148  if (!other.restartAlgorithms_.isEmpty()) {
    8149  if (restartAlgorithms_.isEmpty()) {
    8150  restartAlgorithms_ = other.restartAlgorithms_;
    8151  bitField0_ = (bitField0_ & ~0x08000000);
    8152  } else {
    8153  ensureRestartAlgorithmsIsMutable();
    8154  restartAlgorithms_.addAll(other.restartAlgorithms_);
    8155  }
    8156  onChanged();
    8157  }
    8158  if (other.hasDefaultRestartAlgorithms()) {
    8159  bitField0_ |= 0x10000000;
    8160  defaultRestartAlgorithms_ = other.defaultRestartAlgorithms_;
    8161  onChanged();
    8162  }
    8163  if (other.hasRestartPeriod()) {
    8164  setRestartPeriod(other.getRestartPeriod());
    8165  }
    8166  if (other.hasRestartRunningWindowSize()) {
    8167  setRestartRunningWindowSize(other.getRestartRunningWindowSize());
    8168  }
    8169  if (other.hasRestartDlAverageRatio()) {
    8170  setRestartDlAverageRatio(other.getRestartDlAverageRatio());
    8171  }
    8172  if (other.hasRestartLbdAverageRatio()) {
    8173  setRestartLbdAverageRatio(other.getRestartLbdAverageRatio());
    8174  }
    8175  if (other.hasUseBlockingRestart()) {
    8176  setUseBlockingRestart(other.getUseBlockingRestart());
    8177  }
    8178  if (other.hasBlockingRestartWindowSize()) {
    8179  setBlockingRestartWindowSize(other.getBlockingRestartWindowSize());
    8180  }
    8181  if (other.hasBlockingRestartMultiplier()) {
    8182  setBlockingRestartMultiplier(other.getBlockingRestartMultiplier());
    8183  }
    8184  if (other.hasNumConflictsBeforeStrategyChanges()) {
    8185  setNumConflictsBeforeStrategyChanges(other.getNumConflictsBeforeStrategyChanges());
    8186  }
    8187  if (other.hasStrategyChangeIncreaseRatio()) {
    8188  setStrategyChangeIncreaseRatio(other.getStrategyChangeIncreaseRatio());
    8189  }
    8190  if (other.hasMaxTimeInSeconds()) {
    8191  setMaxTimeInSeconds(other.getMaxTimeInSeconds());
    8192  }
    8193  if (other.hasMaxDeterministicTime()) {
    8194  setMaxDeterministicTime(other.getMaxDeterministicTime());
    8195  }
    8196  if (other.hasMaxNumberOfConflicts()) {
    8197  setMaxNumberOfConflicts(other.getMaxNumberOfConflicts());
    8198  }
    8199  if (other.hasMaxMemoryInMb()) {
    8200  setMaxMemoryInMb(other.getMaxMemoryInMb());
    8201  }
    8202  if (other.hasTreatBinaryClausesSeparately()) {
    8203  setTreatBinaryClausesSeparately(other.getTreatBinaryClausesSeparately());
    8204  }
    8205  if (other.hasRandomSeed()) {
    8206  setRandomSeed(other.getRandomSeed());
    8207  }
    8208  if (other.hasLogSearchProgress()) {
    8209  setLogSearchProgress(other.getLogSearchProgress());
    8210  }
    8211  if (other.hasUsePbResolution()) {
    8212  setUsePbResolution(other.getUsePbResolution());
    8213  }
    8214  if (other.hasMinimizeReductionDuringPbResolution()) {
    8215  setMinimizeReductionDuringPbResolution(other.getMinimizeReductionDuringPbResolution());
    8216  }
    8217  if (other.hasCountAssumptionLevelsInLbd()) {
    8218  setCountAssumptionLevelsInLbd(other.getCountAssumptionLevelsInLbd());
    8219  }
    8220  if (other.hasPresolveBveThreshold()) {
    8221  setPresolveBveThreshold(other.getPresolveBveThreshold());
    8222  }
    8223  if (other.hasPresolveBveClauseWeight()) {
    8224  setPresolveBveClauseWeight(other.getPresolveBveClauseWeight());
    8225  }
    8226  if (other.hasPresolveProbingDeterministicTimeLimit()) {
    8227  setPresolveProbingDeterministicTimeLimit(other.getPresolveProbingDeterministicTimeLimit());
    8228  }
    8229  if (other.hasPresolveBlockedClause()) {
    8230  setPresolveBlockedClause(other.getPresolveBlockedClause());
    8231  }
    8232  if (other.hasPresolveUseBva()) {
    8233  setPresolveUseBva(other.getPresolveUseBva());
    8234  }
    8235  if (other.hasPresolveBvaThreshold()) {
    8236  setPresolveBvaThreshold(other.getPresolveBvaThreshold());
    8237  }
    8238  if (other.hasUseOptimizationHints()) {
    8239  setUseOptimizationHints(other.getUseOptimizationHints());
    8240  }
    8241  if (other.hasMinimizeCore()) {
    8242  setMinimizeCore(other.getMinimizeCore());
    8243  }
    8244  if (other.hasFindMultipleCores()) {
    8245  setFindMultipleCores(other.getFindMultipleCores());
    8246  }
    8247  if (other.hasCoverOptimization()) {
    8248  setCoverOptimization(other.getCoverOptimization());
    8249  }
    8250  if (other.hasMaxSatAssumptionOrder()) {
    8251  setMaxSatAssumptionOrder(other.getMaxSatAssumptionOrder());
    8252  }
    8253  if (other.hasMaxSatReverseAssumptionOrder()) {
    8254  setMaxSatReverseAssumptionOrder(other.getMaxSatReverseAssumptionOrder());
    8255  }
    8256  if (other.hasMaxSatStratification()) {
    8257  setMaxSatStratification(other.getMaxSatStratification());
    8258  }
    8259  if (other.hasUsePrecedencesInDisjunctiveConstraint()) {
    8260  setUsePrecedencesInDisjunctiveConstraint(other.getUsePrecedencesInDisjunctiveConstraint());
    8261  }
    8262  if (other.hasUseOverloadCheckerInCumulativeConstraint()) {
    8263  setUseOverloadCheckerInCumulativeConstraint(other.getUseOverloadCheckerInCumulativeConstraint());
    8264  }
    8265  if (other.hasUseTimetableEdgeFindingInCumulativeConstraint()) {
    8266  setUseTimetableEdgeFindingInCumulativeConstraint(other.getUseTimetableEdgeFindingInCumulativeConstraint());
    8267  }
    8268  if (other.hasUseDisjunctiveConstraintInCumulativeConstraint()) {
    8269  setUseDisjunctiveConstraintInCumulativeConstraint(other.getUseDisjunctiveConstraintInCumulativeConstraint());
    8270  }
    8271  if (other.hasLinearizationLevel()) {
    8272  setLinearizationLevel(other.getLinearizationLevel());
    8273  }
    8274  if (other.hasBooleanEncodingLevel()) {
    8275  setBooleanEncodingLevel(other.getBooleanEncodingLevel());
    8276  }
    8277  if (other.hasMaxNumCuts()) {
    8278  setMaxNumCuts(other.getMaxNumCuts());
    8279  }
    8280  if (other.hasOnlyAddCutsAtLevelZero()) {
    8281  setOnlyAddCutsAtLevelZero(other.getOnlyAddCutsAtLevelZero());
    8282  }
    8283  if (other.hasAddKnapsackCuts()) {
    8284  setAddKnapsackCuts(other.getAddKnapsackCuts());
    8285  }
    8286  if (other.hasAddCgCuts()) {
    8287  setAddCgCuts(other.getAddCgCuts());
    8288  }
    8289  if (other.hasAddMirCuts()) {
    8290  setAddMirCuts(other.getAddMirCuts());
    8291  }
    8292  if (other.hasUseMirRounding()) {
    8293  setUseMirRounding(other.getUseMirRounding());
    8294  }
    8295  if (other.hasMaxIntegerRoundingScaling()) {
    8296  setMaxIntegerRoundingScaling(other.getMaxIntegerRoundingScaling());
    8297  }
    8298  if (other.hasAddLpConstraintsLazily()) {
    8299  setAddLpConstraintsLazily(other.getAddLpConstraintsLazily());
    8300  }
    8301  if (other.hasMinOrthogonalityForLpConstraints()) {
    8302  setMinOrthogonalityForLpConstraints(other.getMinOrthogonalityForLpConstraints());
    8303  }
    8304  if (other.hasMaxInactiveCount()) {
    8305  setMaxInactiveCount(other.getMaxInactiveCount());
    8306  }
    8307  if (other.hasConstraintRemovalBatchSize()) {
    8308  setConstraintRemovalBatchSize(other.getConstraintRemovalBatchSize());
    8309  }
    8310  if (other.hasSearchBranching()) {
    8311  setSearchBranching(other.getSearchBranching());
    8312  }
    8313  if (other.hasExploitIntegerLpSolution()) {
    8314  setExploitIntegerLpSolution(other.getExploitIntegerLpSolution());
    8315  }
    8316  if (other.hasExploitAllLpSolution()) {
    8317  setExploitAllLpSolution(other.getExploitAllLpSolution());
    8318  }
    8319  if (other.hasExploitBestSolution()) {
    8320  setExploitBestSolution(other.getExploitBestSolution());
    8321  }
    8322  if (other.hasExploitObjective()) {
    8323  setExploitObjective(other.getExploitObjective());
    8324  }
    8325  if (other.hasPseudoCostReliabilityThreshold()) {
    8326  setPseudoCostReliabilityThreshold(other.getPseudoCostReliabilityThreshold());
    8327  }
    8328  if (other.hasOptimizeWithCore()) {
    8329  setOptimizeWithCore(other.getOptimizeWithCore());
    8330  }
    8331  if (other.hasBinarySearchNumConflicts()) {
    8332  setBinarySearchNumConflicts(other.getBinarySearchNumConflicts());
    8333  }
    8334  if (other.hasOptimizeWithMaxHs()) {
    8335  setOptimizeWithMaxHs(other.getOptimizeWithMaxHs());
    8336  }
    8337  if (other.hasCpModelPresolve()) {
    8338  setCpModelPresolve(other.getCpModelPresolve());
    8339  }
    8340  if (other.hasCpModelProbingLevel()) {
    8341  setCpModelProbingLevel(other.getCpModelProbingLevel());
    8342  }
    8343  if (other.hasCpModelUseSatPresolve()) {
    8344  setCpModelUseSatPresolve(other.getCpModelUseSatPresolve());
    8345  }
    8346  if (other.hasEnumerateAllSolutions()) {
    8347  setEnumerateAllSolutions(other.getEnumerateAllSolutions());
    8348  }
    8349  if (other.hasFillTightenedDomainsInResponse()) {
    8350  setFillTightenedDomainsInResponse(other.getFillTightenedDomainsInResponse());
    8351  }
    8352  if (other.hasInstantiateAllVariables()) {
    8353  setInstantiateAllVariables(other.getInstantiateAllVariables());
    8354  }
    8355  if (other.hasAutoDetectGreaterThanAtLeastOneOf()) {
    8356  setAutoDetectGreaterThanAtLeastOneOf(other.getAutoDetectGreaterThanAtLeastOneOf());
    8357  }
    8358  if (other.hasStopAfterFirstSolution()) {
    8359  setStopAfterFirstSolution(other.getStopAfterFirstSolution());
    8360  }
    8361  if (other.hasNumSearchWorkers()) {
    8362  setNumSearchWorkers(other.getNumSearchWorkers());
    8363  }
    8364  if (other.hasInterleaveSearch()) {
    8365  setInterleaveSearch(other.getInterleaveSearch());
    8366  }
    8367  if (other.hasDeterministicParallelSearch()) {
    8368  setDeterministicParallelSearch(other.getDeterministicParallelSearch());
    8369  }
    8370  if (other.hasShareObjectiveBounds()) {
    8371  setShareObjectiveBounds(other.getShareObjectiveBounds());
    8372  }
    8373  if (other.hasShareLevelZeroBounds()) {
    8374  setShareLevelZeroBounds(other.getShareLevelZeroBounds());
    8375  }
    8376  if (other.hasUseLnsOnly()) {
    8377  setUseLnsOnly(other.getUseLnsOnly());
    8378  }
    8379  if (other.hasLnsFocusOnDecisionVariables()) {
    8380  setLnsFocusOnDecisionVariables(other.getLnsFocusOnDecisionVariables());
    8381  }
    8382  if (other.hasUseRinsLns()) {
    8383  setUseRinsLns(other.getUseRinsLns());
    8384  }
    8385  if (other.hasRandomizeSearch()) {
    8386  setRandomizeSearch(other.getRandomizeSearch());
    8387  }
    8388  if (other.hasSearchRandomizationTolerance()) {
    8389  setSearchRandomizationTolerance(other.getSearchRandomizationTolerance());
    8390  }
    8391  if (other.hasUseOptionalVariables()) {
    8392  setUseOptionalVariables(other.getUseOptionalVariables());
    8393  }
    8394  if (other.hasUseExactLpReason()) {
    8395  setUseExactLpReason(other.getUseExactLpReason());
    8396  }
    8397  if (other.hasUseCombinedNoOverlap()) {
    8398  setUseCombinedNoOverlap(other.getUseCombinedNoOverlap());
    8399  }
    8400  if (other.hasMipMaxBound()) {
    8401  setMipMaxBound(other.getMipMaxBound());
    8402  }
    8403  if (other.hasMipVarScaling()) {
    8404  setMipVarScaling(other.getMipVarScaling());
    8405  }
    8406  if (other.hasMipWantedPrecision()) {
    8407  setMipWantedPrecision(other.getMipWantedPrecision());
    8408  }
    8409  if (other.hasMipMaxActivityExponent()) {
    8410  setMipMaxActivityExponent(other.getMipMaxActivityExponent());
    8411  }
    8412  if (other.hasMipCheckPrecision()) {
    8413  setMipCheckPrecision(other.getMipCheckPrecision());
    8414  }
    8415  if (other.hasCatchSigintSignal()) {
    8416  setCatchSigintSignal(other.getCatchSigintSignal());
    8417  }
    8418  this.mergeUnknownFields(other.unknownFields);
    8419  onChanged();
    8420  return this;
    8421  }
    8422 
    8423  @java.lang.Override
    8424  public final boolean isInitialized() {
    8425  return true;
    8426  }
    8427 
    8428  @java.lang.Override
    8430  com.google.protobuf.CodedInputStream input,
    8431  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    8432  throws java.io.IOException {
    8433  com.google.ortools.sat.SatParameters parsedMessage = null;
    8434  try {
    8435  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
    8436  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    8437  parsedMessage = (com.google.ortools.sat.SatParameters) e.getUnfinishedMessage();
    8438  throw e.unwrapIOException();
    8439  } finally {
    8440  if (parsedMessage != null) {
    8441  mergeFrom(parsedMessage);
    8442  }
    8443  }
    8444  return this;
    8445  }
    8446  private int bitField0_;
    8447  private int bitField1_;
    8448  private int bitField2_;
    8449  private int bitField3_;
    8450 
    8451  private int preferredVariableOrder_ = 0;
    8455  public boolean hasPreferredVariableOrder() {
    8456  return ((bitField0_ & 0x00000001) != 0);
    8457  }
    8462  @SuppressWarnings("deprecation")
    8464  return result == null ? com.google.ortools.sat.SatParameters.VariableOrder.IN_ORDER : result;
    8465  }
    8470  if (value == null) {
    8471  throw new NullPointerException();
    8472  }
    8473  bitField0_ |= 0x00000001;
    8474  preferredVariableOrder_ = value.getNumber();
    8475  onChanged();
    8476  return this;
    8477  }
    8482  bitField0_ = (bitField0_ & ~0x00000001);
    8483  preferredVariableOrder_ = 0;
    8484  onChanged();
    8485  return this;
    8486  }
    8487 
    8488  private int initialPolarity_ = 1;
    8492  public boolean hasInitialPolarity() {
    8493  return ((bitField0_ & 0x00000002) != 0);
    8494  }
    8499  @SuppressWarnings("deprecation")
    8501  return result == null ? com.google.ortools.sat.SatParameters.Polarity.POLARITY_FALSE : result;
    8502  }
    8507  if (value == null) {
    8508  throw new NullPointerException();
    8509  }
    8510  bitField0_ |= 0x00000002;
    8511  initialPolarity_ = value.getNumber();
    8512  onChanged();
    8513  return this;
    8514  }
    8519  bitField0_ = (bitField0_ & ~0x00000002);
    8520  initialPolarity_ = 1;
    8521  onChanged();
    8522  return this;
    8523  }
    8524 
    8525  private boolean usePhaseSaving_ = true;
    8539  public boolean hasUsePhaseSaving() {
    8540  return ((bitField0_ & 0x00000004) != 0);
    8541  }
    8555  public boolean getUsePhaseSaving() {
    8556  return usePhaseSaving_;
    8557  }
    8571  public Builder setUsePhaseSaving(boolean value) {
    8572  bitField0_ |= 0x00000004;
    8573  usePhaseSaving_ = value;
    8574  onChanged();
    8575  return this;
    8576  }
    8591  bitField0_ = (bitField0_ & ~0x00000004);
    8592  usePhaseSaving_ = true;
    8593  onChanged();
    8594  return this;
    8595  }
    8596 
    8597  private double randomPolarityRatio_ ;
    8609  public boolean hasRandomPolarityRatio() {
    8610  return ((bitField0_ & 0x00000008) != 0);
    8611  }
    8623  public double getRandomPolarityRatio() {
    8624  return randomPolarityRatio_;
    8625  }
    8637  public Builder setRandomPolarityRatio(double value) {
    8638  bitField0_ |= 0x00000008;
    8639  randomPolarityRatio_ = value;
    8640  onChanged();
    8641  return this;
    8642  }
    8655  bitField0_ = (bitField0_ & ~0x00000008);
    8656  randomPolarityRatio_ = 0D;
    8657  onChanged();
    8658  return this;
    8659  }
    8660 
    8661  private double randomBranchesRatio_ ;
    8671  public boolean hasRandomBranchesRatio() {
    8672  return ((bitField0_ & 0x00000010) != 0);
    8673  }
    8683  public double getRandomBranchesRatio() {
    8684  return randomBranchesRatio_;
    8685  }
    8695  public Builder setRandomBranchesRatio(double value) {
    8696  bitField0_ |= 0x00000010;
    8697  randomBranchesRatio_ = value;
    8698  onChanged();
    8699  return this;
    8700  }
    8711  bitField0_ = (bitField0_ & ~0x00000010);
    8712  randomBranchesRatio_ = 0D;
    8713  onChanged();
    8714  return this;
    8715  }
    8716 
    8717  private boolean useErwaHeuristic_ ;
    8727  public boolean hasUseErwaHeuristic() {
    8728  return ((bitField0_ & 0x00000020) != 0);
    8729  }
    8739  public boolean getUseErwaHeuristic() {
    8740  return useErwaHeuristic_;
    8741  }
    8751  public Builder setUseErwaHeuristic(boolean value) {
    8752  bitField0_ |= 0x00000020;
    8753  useErwaHeuristic_ = value;
    8754  onChanged();
    8755  return this;
    8756  }
    8767  bitField0_ = (bitField0_ & ~0x00000020);
    8768  useErwaHeuristic_ = false;
    8769  onChanged();
    8770  return this;
    8771  }
    8772 
    8773  private double initialVariablesActivity_ ;
    8786  public boolean hasInitialVariablesActivity() {
    8787  return ((bitField0_ & 0x00000040) != 0);
    8788  }
    8802  return initialVariablesActivity_;
    8803  }
    8816  public Builder setInitialVariablesActivity(double value) {
    8817  bitField0_ |= 0x00000040;
    8818  initialVariablesActivity_ = value;
    8819  onChanged();
    8820  return this;
    8821  }
    8835  bitField0_ = (bitField0_ & ~0x00000040);
    8836  initialVariablesActivity_ = 0D;
    8837  onChanged();
    8838  return this;
    8839  }
    8840 
    8841  private boolean alsoBumpVariablesInConflictReasons_ ;
    8853  return ((bitField0_ & 0x00000080) != 0);
    8854  }
    8866  return alsoBumpVariablesInConflictReasons_;
    8867  }
    8879  bitField0_ |= 0x00000080;
    8880  alsoBumpVariablesInConflictReasons_ = value;
    8881  onChanged();
    8882  return this;
    8883  }
    8895  bitField0_ = (bitField0_ & ~0x00000080);
    8896  alsoBumpVariablesInConflictReasons_ = false;
    8897  onChanged();
    8898  return this;
    8899  }
    8900 
    8901  private int minimizationAlgorithm_ = 2;
    8905  public boolean hasMinimizationAlgorithm() {
    8906  return ((bitField0_ & 0x00000100) != 0);
    8907  }
    8912  @SuppressWarnings("deprecation")
    8914  return result == null ? com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.RECURSIVE : result;
    8915  }
    8920  if (value == null) {
    8921  throw new NullPointerException();
    8922  }
    8923  bitField0_ |= 0x00000100;
    8924  minimizationAlgorithm_ = value.getNumber();
    8925  onChanged();
    8926  return this;
    8927  }
    8932  bitField0_ = (bitField0_ & ~0x00000100);
    8933  minimizationAlgorithm_ = 2;
    8934  onChanged();
    8935  return this;
    8936  }
    8937 
    8938  private int binaryMinimizationAlgorithm_ = 1;
    8943  return ((bitField0_ & 0x00000200) != 0);
    8944  }
    8949  @SuppressWarnings("deprecation")
    8952  }
    8957  if (value == null) {
    8958  throw new NullPointerException();
    8959  }
    8960  bitField0_ |= 0x00000200;
    8961  binaryMinimizationAlgorithm_ = value.getNumber();
    8962  onChanged();
    8963  return this;
    8964  }
    8969  bitField0_ = (bitField0_ & ~0x00000200);
    8970  binaryMinimizationAlgorithm_ = 1;
    8971  onChanged();
    8972  return this;
    8973  }
    8974 
    8975  private boolean subsumptionDuringConflictAnalysis_ = true;
    8987  return ((bitField0_ & 0x00000400) != 0);
    8988  }
    9000  return subsumptionDuringConflictAnalysis_;
    9001  }
    9013  bitField0_ |= 0x00000400;
    9014  subsumptionDuringConflictAnalysis_ = value;
    9015  onChanged();
    9016  return this;
    9017  }
    9029  bitField0_ = (bitField0_ & ~0x00000400);
    9030  subsumptionDuringConflictAnalysis_ = true;
    9031  onChanged();
    9032  return this;
    9033  }
    9034 
    9035  private int clauseCleanupPeriod_ = 10000;
    9043  public boolean hasClauseCleanupPeriod() {
    9044  return ((bitField0_ & 0x00000800) != 0);
    9045  }
    9053  public int getClauseCleanupPeriod() {
    9054  return clauseCleanupPeriod_;
    9055  }
    9063  public Builder setClauseCleanupPeriod(int value) {
    9064  bitField0_ |= 0x00000800;
    9065  clauseCleanupPeriod_ = value;
    9066  onChanged();
    9067  return this;
    9068  }
    9077  bitField0_ = (bitField0_ & ~0x00000800);
    9078  clauseCleanupPeriod_ = 10000;
    9079  onChanged();
    9080  return this;
    9081  }
    9082 
    9083  private int clauseCleanupTarget_ = 10000;
    9092  public boolean hasClauseCleanupTarget() {
    9093  return ((bitField0_ & 0x00001000) != 0);
    9094  }
    9103  public int getClauseCleanupTarget() {
    9104  return clauseCleanupTarget_;
    9105  }
    9114  public Builder setClauseCleanupTarget(int value) {
    9115  bitField0_ |= 0x00001000;
    9116  clauseCleanupTarget_ = value;
    9117  onChanged();
    9118  return this;
    9119  }
    9129  bitField0_ = (bitField0_ & ~0x00001000);
    9130  clauseCleanupTarget_ = 10000;
    9131  onChanged();
    9132  return this;
    9133  }
    9134 
    9135  private int clauseCleanupProtection_ = 0;
    9139  public boolean hasClauseCleanupProtection() {
    9140  return ((bitField0_ & 0x00002000) != 0);
    9141  }
    9146  @SuppressWarnings("deprecation")
    9148  return result == null ? com.google.ortools.sat.SatParameters.ClauseProtection.PROTECTION_NONE : result;
    9149  }
    9154  if (value == null) {
    9155  throw new NullPointerException();
    9156  }
    9157  bitField0_ |= 0x00002000;
    9158  clauseCleanupProtection_ = value.getNumber();
    9159  onChanged();
    9160  return this;
    9161  }
    9166  bitField0_ = (bitField0_ & ~0x00002000);
    9167  clauseCleanupProtection_ = 0;
    9168  onChanged();
    9169  return this;
    9170  }
    9171 
    9172  private int clauseCleanupLbdBound_ = 5;
    9181  public boolean hasClauseCleanupLbdBound() {
    9182  return ((bitField0_ & 0x00004000) != 0);
    9183  }
    9193  return clauseCleanupLbdBound_;
    9194  }
    9203  public Builder setClauseCleanupLbdBound(int value) {
    9204  bitField0_ |= 0x00004000;
    9205  clauseCleanupLbdBound_ = value;
    9206  onChanged();
    9207  return this;
    9208  }
    9218  bitField0_ = (bitField0_ & ~0x00004000);
    9219  clauseCleanupLbdBound_ = 5;
    9220  onChanged();
    9221  return this;
    9222  }
    9223 
    9224  private int clauseCleanupOrdering_ = 0;
    9228  public boolean hasClauseCleanupOrdering() {
    9229  return ((bitField0_ & 0x00008000) != 0);
    9230  }
    9235  @SuppressWarnings("deprecation")
    9237  return result == null ? com.google.ortools.sat.SatParameters.ClauseOrdering.CLAUSE_ACTIVITY : result;
    9238  }
    9243  if (value == null) {
    9244  throw new NullPointerException();
    9245  }
    9246  bitField0_ |= 0x00008000;
    9247  clauseCleanupOrdering_ = value.getNumber();
    9248  onChanged();
    9249  return this;
    9250  }
    9255  bitField0_ = (bitField0_ & ~0x00008000);
    9256  clauseCleanupOrdering_ = 0;
    9257  onChanged();
    9258  return this;
    9259  }
    9260 
    9261  private int pbCleanupIncrement_ = 200;
    9269  public boolean hasPbCleanupIncrement() {
    9270  return ((bitField0_ & 0x00010000) != 0);
    9271  }
    9279  public int getPbCleanupIncrement() {
    9280  return pbCleanupIncrement_;
    9281  }
    9289  public Builder setPbCleanupIncrement(int value) {
    9290  bitField0_ |= 0x00010000;
    9291  pbCleanupIncrement_ = value;
    9292  onChanged();
    9293  return this;
    9294  }
    9303  bitField0_ = (bitField0_ & ~0x00010000);
    9304  pbCleanupIncrement_ = 200;
    9305  onChanged();
    9306  return this;
    9307  }
    9308 
    9309  private double pbCleanupRatio_ = 0.5D;
    9313  public boolean hasPbCleanupRatio() {
    9314  return ((bitField0_ & 0x00020000) != 0);
    9315  }
    9319  public double getPbCleanupRatio() {
    9320  return pbCleanupRatio_;
    9321  }
    9325  public Builder setPbCleanupRatio(double value) {
    9326  bitField0_ |= 0x00020000;
    9327  pbCleanupRatio_ = value;
    9328  onChanged();
    9329  return this;
    9330  }
    9335  bitField0_ = (bitField0_ & ~0x00020000);
    9336  pbCleanupRatio_ = 0.5D;
    9337  onChanged();
    9338  return this;
    9339  }
    9340 
    9341  private int minimizeWithPropagationRestartPeriod_ = 10;
    9360  return ((bitField0_ & 0x00040000) != 0);
    9361  }
    9380  return minimizeWithPropagationRestartPeriod_;
    9381  }
    9400  bitField0_ |= 0x00040000;
    9401  minimizeWithPropagationRestartPeriod_ = value;
    9402  onChanged();
    9403  return this;
    9404  }
    9423  bitField0_ = (bitField0_ & ~0x00040000);
    9424  minimizeWithPropagationRestartPeriod_ = 10;
    9425  onChanged();
    9426  return this;
    9427  }
    9428 
    9429  private int minimizeWithPropagationNumDecisions_ = 1000;
    9434  return ((bitField0_ & 0x00080000) != 0);
    9435  }
    9440  return minimizeWithPropagationNumDecisions_;
    9441  }
    9446  bitField0_ |= 0x00080000;
    9447  minimizeWithPropagationNumDecisions_ = value;
    9448  onChanged();
    9449  return this;
    9450  }
    9455  bitField0_ = (bitField0_ & ~0x00080000);
    9456  minimizeWithPropagationNumDecisions_ = 1000;
    9457  onChanged();
    9458  return this;
    9459  }
    9460 
    9461  private double variableActivityDecay_ = 0.8D;
    9475  public boolean hasVariableActivityDecay() {
    9476  return ((bitField0_ & 0x00100000) != 0);
    9477  }
    9491  public double getVariableActivityDecay() {
    9492  return variableActivityDecay_;
    9493  }
    9507  public Builder setVariableActivityDecay(double value) {
    9508  bitField0_ |= 0x00100000;
    9509  variableActivityDecay_ = value;
    9510  onChanged();
    9511  return this;
    9512  }
    9527  bitField0_ = (bitField0_ & ~0x00100000);
    9528  variableActivityDecay_ = 0.8D;
    9529  onChanged();
    9530  return this;
    9531  }
    9532 
    9533  private double maxVariableActivityValue_ = 1e+100D;
    9537  public boolean hasMaxVariableActivityValue() {
    9538  return ((bitField0_ & 0x00200000) != 0);
    9539  }
    9544  return maxVariableActivityValue_;
    9545  }
    9549  public Builder setMaxVariableActivityValue(double value) {
    9550  bitField0_ |= 0x00200000;
    9551  maxVariableActivityValue_ = value;
    9552  onChanged();
    9553  return this;
    9554  }
    9559  bitField0_ = (bitField0_ & ~0x00200000);
    9560  maxVariableActivityValue_ = 1e+100D;
    9561  onChanged();
    9562  return this;
    9563  }
    9564 
    9565  private double glucoseMaxDecay_ = 0.95D;
    9576  public boolean hasGlucoseMaxDecay() {
    9577  return ((bitField0_ & 0x00400000) != 0);
    9578  }
    9589  public double getGlucoseMaxDecay() {
    9590  return glucoseMaxDecay_;
    9591  }
    9602  public Builder setGlucoseMaxDecay(double value) {
    9603  bitField0_ |= 0x00400000;
    9604  glucoseMaxDecay_ = value;
    9605  onChanged();
    9606  return this;
    9607  }
    9619  bitField0_ = (bitField0_ & ~0x00400000);
    9620  glucoseMaxDecay_ = 0.95D;
    9621  onChanged();
    9622  return this;
    9623  }
    9624 
    9625  private double glucoseDecayIncrement_ = 0.01D;
    9629  public boolean hasGlucoseDecayIncrement() {
    9630  return ((bitField0_ & 0x00800000) != 0);
    9631  }
    9635  public double getGlucoseDecayIncrement() {
    9636  return glucoseDecayIncrement_;
    9637  }
    9641  public Builder setGlucoseDecayIncrement(double value) {
    9642  bitField0_ |= 0x00800000;
    9643  glucoseDecayIncrement_ = value;
    9644  onChanged();
    9645  return this;
    9646  }
    9651  bitField0_ = (bitField0_ & ~0x00800000);
    9652  glucoseDecayIncrement_ = 0.01D;
    9653  onChanged();
    9654  return this;
    9655  }
    9656 
    9657  private int glucoseDecayIncrementPeriod_ = 5000;
    9662  return ((bitField0_ & 0x01000000) != 0);
    9663  }
    9668  return glucoseDecayIncrementPeriod_;
    9669  }
    9674  bitField0_ |= 0x01000000;
    9675  glucoseDecayIncrementPeriod_ = value;
    9676  onChanged();
    9677  return this;
    9678  }
    9683  bitField0_ = (bitField0_ & ~0x01000000);
    9684  glucoseDecayIncrementPeriod_ = 5000;
    9685  onChanged();
    9686  return this;
    9687  }
    9688 
    9689  private double clauseActivityDecay_ = 0.999D;
    9697  public boolean hasClauseActivityDecay() {
    9698  return ((bitField0_ & 0x02000000) != 0);
    9699  }
    9707  public double getClauseActivityDecay() {
    9708  return clauseActivityDecay_;
    9709  }
    9717  public Builder setClauseActivityDecay(double value) {
    9718  bitField0_ |= 0x02000000;
    9719  clauseActivityDecay_ = value;
    9720  onChanged();
    9721  return this;
    9722  }
    9731  bitField0_ = (bitField0_ & ~0x02000000);
    9732  clauseActivityDecay_ = 0.999D;
    9733  onChanged();
    9734  return this;
    9735  }
    9736 
    9737  private double maxClauseActivityValue_ = 1e+20D;
    9741  public boolean hasMaxClauseActivityValue() {
    9742  return ((bitField0_ & 0x04000000) != 0);
    9743  }
    9747  public double getMaxClauseActivityValue() {
    9748  return maxClauseActivityValue_;
    9749  }
    9753  public Builder setMaxClauseActivityValue(double value) {
    9754  bitField0_ |= 0x04000000;
    9755  maxClauseActivityValue_ = value;
    9756  onChanged();
    9757  return this;
    9758  }
    9763  bitField0_ = (bitField0_ & ~0x04000000);
    9764  maxClauseActivityValue_ = 1e+20D;
    9765  onChanged();
    9766  return this;
    9767  }
    9768 
    9769  private java.util.List<java.lang.Integer> restartAlgorithms_ =
    9770  java.util.Collections.emptyList();
    9771  private void ensureRestartAlgorithmsIsMutable() {
    9772  if (!((bitField0_ & 0x08000000) != 0)) {
    9773  restartAlgorithms_ = new java.util.ArrayList<java.lang.Integer>(restartAlgorithms_);
    9774  bitField0_ |= 0x08000000;
    9775  }
    9776  }
    9792  return new com.google.protobuf.Internal.ListAdapter<
    9793  java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>(restartAlgorithms_, restartAlgorithms_converter_);
    9794  }
    9810  return restartAlgorithms_.size();
    9811  }
    9827  return restartAlgorithms_converter_.convert(restartAlgorithms_.get(index));
    9828  }
    9844  int index, com.google.ortools.sat.SatParameters.RestartAlgorithm value) {
    9845  if (value == null) {
    9846  throw new NullPointerException();
    9847  }
    9848  ensureRestartAlgorithmsIsMutable();
    9849  restartAlgorithms_.set(index, value.getNumber());
    9850  onChanged();
    9851  return this;
    9852  }
    9868  if (value == null) {
    9869  throw new NullPointerException();
    9870  }
    9871  ensureRestartAlgorithmsIsMutable();
    9872  restartAlgorithms_.add(value.getNumber());
    9873  onChanged();
    9874  return this;
    9875  }
    9891  java.lang.Iterable<? extends com.google.ortools.sat.SatParameters.RestartAlgorithm> values) {
    9892  ensureRestartAlgorithmsIsMutable();
    9893  for (com.google.ortools.sat.SatParameters.RestartAlgorithm value : values) {
    9894  restartAlgorithms_.add(value.getNumber());
    9895  }
    9896  onChanged();
    9897  return this;
    9898  }
    9914  restartAlgorithms_ = java.util.Collections.emptyList();
    9915  bitField0_ = (bitField0_ & ~0x08000000);
    9916  onChanged();
    9917  return this;
    9918  }
    9919 
    9920  private java.lang.Object defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
    9924  public boolean hasDefaultRestartAlgorithms() {
    9925  return ((bitField0_ & 0x10000000) != 0);
    9926  }
    9930  public java.lang.String getDefaultRestartAlgorithms() {
    9931  java.lang.Object ref = defaultRestartAlgorithms_;
    9932  if (!(ref instanceof java.lang.String)) {
    9933  com.google.protobuf.ByteString bs =
    9934  (com.google.protobuf.ByteString) ref;
    9935  java.lang.String s = bs.toStringUtf8();
    9936  if (bs.isValidUtf8()) {
    9937  defaultRestartAlgorithms_ = s;
    9938  }
    9939  return s;
    9940  } else {
    9941  return (java.lang.String) ref;
    9942  }
    9943  }
    9947  public com.google.protobuf.ByteString
    9949  java.lang.Object ref = defaultRestartAlgorithms_;
    9950  if (ref instanceof String) {
    9951  com.google.protobuf.ByteString b =
    9952  com.google.protobuf.ByteString.copyFromUtf8(
    9953  (java.lang.String) ref);
    9954  defaultRestartAlgorithms_ = b;
    9955  return b;
    9956  } else {
    9957  return (com.google.protobuf.ByteString) ref;
    9958  }
    9959  }
    9964  java.lang.String value) {
    9965  if (value == null) {
    9966  throw new NullPointerException();
    9967  }
    9968  bitField0_ |= 0x10000000;
    9969  defaultRestartAlgorithms_ = value;
    9970  onChanged();
    9971  return this;
    9972  }
    9977  bitField0_ = (bitField0_ & ~0x10000000);
    9978  defaultRestartAlgorithms_ = getDefaultInstance().getDefaultRestartAlgorithms();
    9979  onChanged();
    9980  return this;
    9981  }
    9986  com.google.protobuf.ByteString value) {
    9987  if (value == null) {
    9988  throw new NullPointerException();
    9989  }
    9990  bitField0_ |= 0x10000000;
    9991  defaultRestartAlgorithms_ = value;
    9992  onChanged();
    9993  return this;
    9994  }
    9995 
    9996  private int restartPeriod_ = 50;
    10005  public boolean hasRestartPeriod() {
    10006  return ((bitField0_ & 0x20000000) != 0);
    10007  }
    10016  public int getRestartPeriod() {
    10017  return restartPeriod_;
    10018  }
    10027  public Builder setRestartPeriod(int value) {
    10028  bitField0_ |= 0x20000000;
    10029  restartPeriod_ = value;
    10030  onChanged();
    10031  return this;
    10032  }
    10042  bitField0_ = (bitField0_ & ~0x20000000);
    10043  restartPeriod_ = 50;
    10044  onChanged();
    10045  return this;
    10046  }
    10047 
    10048  private int restartRunningWindowSize_ = 50;
    10056  public boolean hasRestartRunningWindowSize() {
    10057  return ((bitField0_ & 0x40000000) != 0);
    10058  }
    10067  return restartRunningWindowSize_;
    10068  }
    10077  bitField0_ |= 0x40000000;
    10078  restartRunningWindowSize_ = value;
    10079  onChanged();
    10080  return this;
    10081  }
    10090  bitField0_ = (bitField0_ & ~0x40000000);
    10091  restartRunningWindowSize_ = 50;
    10092  onChanged();
    10093  return this;
    10094  }
    10095 
    10096  private double restartDlAverageRatio_ = 1D;
    10105  public boolean hasRestartDlAverageRatio() {
    10106  return ((bitField0_ & 0x80000000) != 0);
    10107  }
    10116  public double getRestartDlAverageRatio() {
    10117  return restartDlAverageRatio_;
    10118  }
    10127  public Builder setRestartDlAverageRatio(double value) {
    10128  bitField0_ |= 0x80000000;
    10129  restartDlAverageRatio_ = value;
    10130  onChanged();
    10131  return this;
    10132  }
    10142  bitField0_ = (bitField0_ & ~0x80000000);
    10143  restartDlAverageRatio_ = 1D;
    10144  onChanged();
    10145  return this;
    10146  }
    10147 
    10148  private double restartLbdAverageRatio_ = 1D;
    10152  public boolean hasRestartLbdAverageRatio() {
    10153  return ((bitField1_ & 0x00000001) != 0);
    10154  }
    10158  public double getRestartLbdAverageRatio() {
    10159  return restartLbdAverageRatio_;
    10160  }
    10164  public Builder setRestartLbdAverageRatio(double value) {
    10165  bitField1_ |= 0x00000001;
    10166  restartLbdAverageRatio_ = value;
    10167  onChanged();
    10168  return this;
    10169  }
    10174  bitField1_ = (bitField1_ & ~0x00000001);
    10175  restartLbdAverageRatio_ = 1D;
    10176  onChanged();
    10177  return this;
    10178  }
    10179 
    10180  private boolean useBlockingRestart_ ;
    10190  public boolean hasUseBlockingRestart() {
    10191  return ((bitField1_ & 0x00000002) != 0);
    10192  }
    10202  public boolean getUseBlockingRestart() {
    10203  return useBlockingRestart_;
    10204  }
    10214  public Builder setUseBlockingRestart(boolean value) {
    10215  bitField1_ |= 0x00000002;
    10216  useBlockingRestart_ = value;
    10217  onChanged();
    10218  return this;
    10219  }
    10230  bitField1_ = (bitField1_ & ~0x00000002);
    10231  useBlockingRestart_ = false;
    10232  onChanged();
    10233  return this;
    10234  }
    10235 
    10236  private int blockingRestartWindowSize_ = 5000;
    10240  public boolean hasBlockingRestartWindowSize() {
    10241  return ((bitField1_ & 0x00000004) != 0);
    10242  }
    10247  return blockingRestartWindowSize_;
    10248  }
    10253  bitField1_ |= 0x00000004;
    10254  blockingRestartWindowSize_ = value;
    10255  onChanged();
    10256  return this;
    10257  }
    10262  bitField1_ = (bitField1_ & ~0x00000004);
    10263  blockingRestartWindowSize_ = 5000;
    10264  onChanged();
    10265  return this;
    10266  }
    10267 
    10268  private double blockingRestartMultiplier_ = 1.4D;
    10272  public boolean hasBlockingRestartMultiplier() {
    10273  return ((bitField1_ & 0x00000008) != 0);
    10274  }
    10279  return blockingRestartMultiplier_;
    10280  }
    10284  public Builder setBlockingRestartMultiplier(double value) {
    10285  bitField1_ |= 0x00000008;
    10286  blockingRestartMultiplier_ = value;
    10287  onChanged();
    10288  return this;
    10289  }
    10294  bitField1_ = (bitField1_ & ~0x00000008);
    10295  blockingRestartMultiplier_ = 1.4D;
    10296  onChanged();
    10297  return this;
    10298  }
    10299 
    10300  private int numConflictsBeforeStrategyChanges_ ;
    10311  return ((bitField1_ & 0x00000010) != 0);
    10312  }
    10323  return numConflictsBeforeStrategyChanges_;
    10324  }
    10335  bitField1_ |= 0x00000010;
    10336  numConflictsBeforeStrategyChanges_ = value;
    10337  onChanged();
    10338  return this;
    10339  }
    10350  bitField1_ = (bitField1_ & ~0x00000010);
    10351  numConflictsBeforeStrategyChanges_ = 0;
    10352  onChanged();
    10353  return this;
    10354  }
    10355 
    10356  private double strategyChangeIncreaseRatio_ ;
    10366  return ((bitField1_ & 0x00000020) != 0);
    10367  }
    10377  return strategyChangeIncreaseRatio_;
    10378  }
    10388  bitField1_ |= 0x00000020;
    10389  strategyChangeIncreaseRatio_ = value;
    10390  onChanged();
    10391  return this;
    10392  }
    10402  bitField1_ = (bitField1_ & ~0x00000020);
    10403  strategyChangeIncreaseRatio_ = 0D;
    10404  onChanged();
    10405  return this;
    10406  }
    10407 
    10408  private double maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    10418  public boolean hasMaxTimeInSeconds() {
    10419  return ((bitField1_ & 0x00000040) != 0);
    10420  }
    10430  public double getMaxTimeInSeconds() {
    10431  return maxTimeInSeconds_;
    10432  }
    10442  public Builder setMaxTimeInSeconds(double value) {
    10443  bitField1_ |= 0x00000040;
    10444  maxTimeInSeconds_ = value;
    10445  onChanged();
    10446  return this;
    10447  }
    10458  bitField1_ = (bitField1_ & ~0x00000040);
    10459  maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
    10460  onChanged();
    10461  return this;
    10462  }
    10463 
    10464  private double maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    10476  public boolean hasMaxDeterministicTime() {
    10477  return ((bitField1_ & 0x00000080) != 0);
    10478  }
    10490  public double getMaxDeterministicTime() {
    10491  return maxDeterministicTime_;
    10492  }
    10504  public Builder setMaxDeterministicTime(double value) {
    10505  bitField1_ |= 0x00000080;
    10506  maxDeterministicTime_ = value;
    10507  onChanged();
    10508  return this;
    10509  }
    10522  bitField1_ = (bitField1_ & ~0x00000080);
    10523  maxDeterministicTime_ = Double.POSITIVE_INFINITY;
    10524  onChanged();
    10525  return this;
    10526  }
    10527 
    10528  private long maxNumberOfConflicts_ = 9223372036854775807L;
    10541  public boolean hasMaxNumberOfConflicts() {
    10542  return ((bitField1_ & 0x00000100) != 0);
    10543  }
    10556  public long getMaxNumberOfConflicts() {
    10557  return maxNumberOfConflicts_;
    10558  }
    10571  public Builder setMaxNumberOfConflicts(long value) {
    10572  bitField1_ |= 0x00000100;
    10573  maxNumberOfConflicts_ = value;
    10574  onChanged();
    10575  return this;
    10576  }
    10590  bitField1_ = (bitField1_ & ~0x00000100);
    10591  maxNumberOfConflicts_ = 9223372036854775807L;
    10592  onChanged();
    10593  return this;
    10594  }
    10595 
    10596  private long maxMemoryInMb_ = 10000L;
    10607  public boolean hasMaxMemoryInMb() {
    10608  return ((bitField1_ & 0x00000200) != 0);
    10609  }
    10620  public long getMaxMemoryInMb() {
    10621  return maxMemoryInMb_;
    10622  }
    10633  public Builder setMaxMemoryInMb(long value) {
    10634  bitField1_ |= 0x00000200;
    10635  maxMemoryInMb_ = value;
    10636  onChanged();
    10637  return this;
    10638  }
    10650  bitField1_ = (bitField1_ & ~0x00000200);
    10651  maxMemoryInMb_ = 10000L;
    10652  onChanged();
    10653  return this;
    10654  }
    10655 
    10656  private boolean treatBinaryClausesSeparately_ = true;
    10667  return ((bitField1_ & 0x00000400) != 0);
    10668  }
    10679  return treatBinaryClausesSeparately_;
    10680  }
    10691  bitField1_ |= 0x00000400;
    10692  treatBinaryClausesSeparately_ = value;
    10693  onChanged();
    10694  return this;
    10695  }
    10706  bitField1_ = (bitField1_ & ~0x00000400);
    10707  treatBinaryClausesSeparately_ = true;
    10708  onChanged();
    10709  return this;
    10710  }
    10711 
    10712  private int randomSeed_ = 1;
    10725  public boolean hasRandomSeed() {
    10726  return ((bitField1_ & 0x00000800) != 0);
    10727  }
    10740  public int getRandomSeed() {
    10741  return randomSeed_;
    10742  }
    10755  public Builder setRandomSeed(int value) {
    10756  bitField1_ |= 0x00000800;
    10757  randomSeed_ = value;
    10758  onChanged();
    10759  return this;
    10760  }
    10774  bitField1_ = (bitField1_ & ~0x00000800);
    10775  randomSeed_ = 1;
    10776  onChanged();
    10777  return this;
    10778  }
    10779 
    10780  private boolean logSearchProgress_ ;
    10788  public boolean hasLogSearchProgress() {
    10789  return ((bitField1_ & 0x00001000) != 0);
    10790  }
    10798  public boolean getLogSearchProgress() {
    10799  return logSearchProgress_;
    10800  }
    10808  public Builder setLogSearchProgress(boolean value) {
    10809  bitField1_ |= 0x00001000;
    10810  logSearchProgress_ = value;
    10811  onChanged();
    10812  return this;
    10813  }
    10822  bitField1_ = (bitField1_ & ~0x00001000);
    10823  logSearchProgress_ = false;
    10824  onChanged();
    10825  return this;
    10826  }
    10827 
    10828  private boolean usePbResolution_ ;
    10839  public boolean hasUsePbResolution() {
    10840  return ((bitField1_ & 0x00002000) != 0);
    10841  }
    10852  public boolean getUsePbResolution() {
    10853  return usePbResolution_;
    10854  }
    10865  public Builder setUsePbResolution(boolean value) {
    10866  bitField1_ |= 0x00002000;
    10867  usePbResolution_ = value;
    10868  onChanged();
    10869  return this;
    10870  }
    10882  bitField1_ = (bitField1_ & ~0x00002000);
    10883  usePbResolution_ = false;
    10884  onChanged();
    10885  return this;
    10886  }
    10887 
    10888  private boolean minimizeReductionDuringPbResolution_ ;
    10900  return ((bitField1_ & 0x00004000) != 0);
    10901  }
    10913  return minimizeReductionDuringPbResolution_;
    10914  }
    10926  bitField1_ |= 0x00004000;
    10927  minimizeReductionDuringPbResolution_ = value;
    10928  onChanged();
    10929  return this;
    10930  }
    10942  bitField1_ = (bitField1_ & ~0x00004000);
    10943  minimizeReductionDuringPbResolution_ = false;
    10944  onChanged();
    10945  return this;
    10946  }
    10947 
    10948  private boolean countAssumptionLevelsInLbd_ = true;
    10964  return ((bitField1_ & 0x00008000) != 0);
    10965  }
    10981  return countAssumptionLevelsInLbd_;
    10982  }
    10997  public Builder setCountAssumptionLevelsInLbd(boolean value) {
    10998  bitField1_ |= 0x00008000;
    10999  countAssumptionLevelsInLbd_ = value;
    11000  onChanged();
    11001  return this;
    11002  }
    11018  bitField1_ = (bitField1_ & ~0x00008000);
    11019  countAssumptionLevelsInLbd_ = true;
    11020  onChanged();
    11021  return this;
    11022  }
    11023 
    11024  private int presolveBveThreshold_ = 500;
    11034  public boolean hasPresolveBveThreshold() {
    11035  return ((bitField1_ & 0x00010000) != 0);
    11036  }
    11047  return presolveBveThreshold_;
    11048  }
    11058  public Builder setPresolveBveThreshold(int value) {
    11059  bitField1_ |= 0x00010000;
    11060  presolveBveThreshold_ = value;
    11061  onChanged();
    11062  return this;
    11063  }
    11074  bitField1_ = (bitField1_ & ~0x00010000);
    11075  presolveBveThreshold_ = 500;
    11076  onChanged();
    11077  return this;
    11078  }
    11079 
    11080  private int presolveBveClauseWeight_ = 3;
    11089  public boolean hasPresolveBveClauseWeight() {
    11090  return ((bitField1_ & 0x00020000) != 0);
    11091  }
    11101  return presolveBveClauseWeight_;
    11102  }
    11112  bitField1_ |= 0x00020000;
    11113  presolveBveClauseWeight_ = value;
    11114  onChanged();
    11115  return this;
    11116  }
    11126  bitField1_ = (bitField1_ & ~0x00020000);
    11127  presolveBveClauseWeight_ = 3;
    11128  onChanged();
    11129  return this;
    11130  }
    11131 
    11132  private double presolveProbingDeterministicTimeLimit_ = 30D;
    11142  return ((bitField1_ & 0x00040000) != 0);
    11143  }
    11153  return presolveProbingDeterministicTimeLimit_;
    11154  }
    11164  bitField1_ |= 0x00040000;
    11165  presolveProbingDeterministicTimeLimit_ = value;
    11166  onChanged();
    11167  return this;
    11168  }
    11178  bitField1_ = (bitField1_ & ~0x00040000);
    11179  presolveProbingDeterministicTimeLimit_ = 30D;
    11180  onChanged();
    11181  return this;
    11182  }
    11183 
    11184  private boolean presolveBlockedClause_ = true;
    11193  public boolean hasPresolveBlockedClause() {
    11194  return ((bitField1_ & 0x00080000) != 0);
    11195  }
    11204  public boolean getPresolveBlockedClause() {
    11205  return presolveBlockedClause_;
    11206  }
    11215  public Builder setPresolveBlockedClause(boolean value) {
    11216  bitField1_ |= 0x00080000;
    11217  presolveBlockedClause_ = value;
    11218  onChanged();
    11219  return this;
    11220  }
    11230  bitField1_ = (bitField1_ & ~0x00080000);
    11231  presolveBlockedClause_ = true;
    11232  onChanged();
    11233  return this;
    11234  }
    11235 
    11236  private boolean presolveUseBva_ = true;
    11244  public boolean hasPresolveUseBva() {
    11245  return ((bitField1_ & 0x00100000) != 0);
    11246  }
    11254  public boolean getPresolveUseBva() {
    11255  return presolveUseBva_;
    11256  }
    11264  public Builder setPresolveUseBva(boolean value) {
    11265  bitField1_ |= 0x00100000;
    11266  presolveUseBva_ = value;
    11267  onChanged();
    11268  return this;
    11269  }
    11278  bitField1_ = (bitField1_ & ~0x00100000);
    11279  presolveUseBva_ = true;
    11280  onChanged();
    11281  return this;
    11282  }
    11283 
    11284  private int presolveBvaThreshold_ = 1;
    11295  public boolean hasPresolveBvaThreshold() {
    11296  return ((bitField1_ & 0x00200000) != 0);
    11297  }
    11309  return presolveBvaThreshold_;
    11310  }
    11321  public Builder setPresolveBvaThreshold(int value) {
    11322  bitField1_ |= 0x00200000;
    11323  presolveBvaThreshold_ = value;
    11324  onChanged();
    11325  return this;
    11326  }
    11338  bitField1_ = (bitField1_ & ~0x00200000);
    11339  presolveBvaThreshold_ = 1;
    11340  onChanged();
    11341  return this;
    11342  }
    11343 
    11344  private boolean useOptimizationHints_ = true;
    11355  public boolean hasUseOptimizationHints() {
    11356  return ((bitField1_ & 0x00400000) != 0);
    11357  }
    11368  public boolean getUseOptimizationHints() {
    11369  return useOptimizationHints_;
    11370  }
    11381  public Builder setUseOptimizationHints(boolean value) {
    11382  bitField1_ |= 0x00400000;
    11383  useOptimizationHints_ = value;
    11384  onChanged();
    11385  return this;
    11386  }
    11398  bitField1_ = (bitField1_ & ~0x00400000);
    11399  useOptimizationHints_ = true;
    11400  onChanged();
    11401  return this;
    11402  }
    11403 
    11404  private boolean minimizeCore_ = true;
    11412  public boolean hasMinimizeCore() {
    11413  return ((bitField1_ & 0x00800000) != 0);
    11414  }
    11422  public boolean getMinimizeCore() {
    11423  return minimizeCore_;
    11424  }
    11432  public Builder setMinimizeCore(boolean value) {
    11433  bitField1_ |= 0x00800000;
    11434  minimizeCore_ = value;
    11435  onChanged();
    11436  return this;
    11437  }
    11446  bitField1_ = (bitField1_ & ~0x00800000);
    11447  minimizeCore_ = true;
    11448  onChanged();
    11449  return this;
    11450  }
    11451 
    11452  private boolean findMultipleCores_ = true;
    11461  public boolean hasFindMultipleCores() {
    11462  return ((bitField1_ & 0x01000000) != 0);
    11463  }
    11472  public boolean getFindMultipleCores() {
    11473  return findMultipleCores_;
    11474  }
    11483  public Builder setFindMultipleCores(boolean value) {
    11484  bitField1_ |= 0x01000000;
    11485  findMultipleCores_ = value;
    11486  onChanged();
    11487  return this;
    11488  }
    11498  bitField1_ = (bitField1_ & ~0x01000000);
    11499  findMultipleCores_ = true;
    11500  onChanged();
    11501  return this;
    11502  }
    11503 
    11504  private boolean coverOptimization_ = true;
    11513  public boolean hasCoverOptimization() {
    11514  return ((bitField1_ & 0x02000000) != 0);
    11515  }
    11524  public boolean getCoverOptimization() {
    11525  return coverOptimization_;
    11526  }
    11535  public Builder setCoverOptimization(boolean value) {
    11536  bitField1_ |= 0x02000000;
    11537  coverOptimization_ = value;
    11538  onChanged();
    11539  return this;
    11540  }
    11550  bitField1_ = (bitField1_ & ~0x02000000);
    11551  coverOptimization_ = true;
    11552  onChanged();
    11553  return this;
    11554  }
    11555 
    11556  private int maxSatAssumptionOrder_ = 0;
    11560  public boolean hasMaxSatAssumptionOrder() {
    11561  return ((bitField1_ & 0x04000000) != 0);
    11562  }
    11567  @SuppressWarnings("deprecation")
    11570  }
    11575  if (value == null) {
    11576  throw new NullPointerException();
    11577  }
    11578  bitField1_ |= 0x04000000;
    11579  maxSatAssumptionOrder_ = value.getNumber();
    11580  onChanged();
    11581  return this;
    11582  }
    11587  bitField1_ = (bitField1_ & ~0x04000000);
    11588  maxSatAssumptionOrder_ = 0;
    11589  onChanged();
    11590  return this;
    11591  }
    11592 
    11593  private boolean maxSatReverseAssumptionOrder_ ;
    11603  return ((bitField1_ & 0x08000000) != 0);
    11604  }
    11614  return maxSatReverseAssumptionOrder_;
    11615  }
    11625  bitField1_ |= 0x08000000;
    11626  maxSatReverseAssumptionOrder_ = value;
    11627  onChanged();
    11628  return this;
    11629  }
    11639  bitField1_ = (bitField1_ & ~0x08000000);
    11640  maxSatReverseAssumptionOrder_ = false;
    11641  onChanged();
    11642  return this;
    11643  }
    11644 
    11645  private int maxSatStratification_ = 1;
    11649  public boolean hasMaxSatStratification() {
    11650  return ((bitField1_ & 0x10000000) != 0);
    11651  }
    11656  @SuppressWarnings("deprecation")
    11659  }
    11664  if (value == null) {
    11665  throw new NullPointerException();
    11666  }
    11667  bitField1_ |= 0x10000000;
    11668  maxSatStratification_ = value.getNumber();
    11669  onChanged();
    11670  return this;
    11671  }
    11676  bitField1_ = (bitField1_ & ~0x10000000);
    11677  maxSatStratification_ = 1;
    11678  onChanged();
    11679  return this;
    11680  }
    11681 
    11682  private boolean usePrecedencesInDisjunctiveConstraint_ = true;
    11698  return ((bitField1_ & 0x20000000) != 0);
    11699  }
    11715  return usePrecedencesInDisjunctiveConstraint_;
    11716  }
    11732  bitField1_ |= 0x20000000;
    11733  usePrecedencesInDisjunctiveConstraint_ = value;
    11734  onChanged();
    11735  return this;
    11736  }
    11752  bitField1_ = (bitField1_ & ~0x20000000);
    11753  usePrecedencesInDisjunctiveConstraint_ = true;
    11754  onChanged();
    11755  return this;
    11756  }
    11757 
    11758  private boolean useOverloadCheckerInCumulativeConstraint_ ;
    11772  return ((bitField1_ & 0x40000000) != 0);
    11773  }
    11787  return useOverloadCheckerInCumulativeConstraint_;
    11788  }
    11802  bitField1_ |= 0x40000000;
    11803  useOverloadCheckerInCumulativeConstraint_ = value;
    11804  onChanged();
    11805  return this;
    11806  }
    11820  bitField1_ = (bitField1_ & ~0x40000000);
    11821  useOverloadCheckerInCumulativeConstraint_ = false;
    11822  onChanged();
    11823  return this;
    11824  }
    11825 
    11826  private boolean useTimetableEdgeFindingInCumulativeConstraint_ ;
    11840  return ((bitField1_ & 0x80000000) != 0);
    11841  }
    11855  return useTimetableEdgeFindingInCumulativeConstraint_;
    11856  }
    11870  bitField1_ |= 0x80000000;
    11871  useTimetableEdgeFindingInCumulativeConstraint_ = value;
    11872  onChanged();
    11873  return this;
    11874  }
    11888  bitField1_ = (bitField1_ & ~0x80000000);
    11889  useTimetableEdgeFindingInCumulativeConstraint_ = false;
    11890  onChanged();
    11891  return this;
    11892  }
    11893 
    11894  private boolean useDisjunctiveConstraintInCumulativeConstraint_ = true;
    11910  return ((bitField2_ & 0x00000001) != 0);
    11911  }
    11927  return useDisjunctiveConstraintInCumulativeConstraint_;
    11928  }
    11944  bitField2_ |= 0x00000001;
    11945  useDisjunctiveConstraintInCumulativeConstraint_ = value;
    11946  onChanged();
    11947  return this;
    11948  }
    11964  bitField2_ = (bitField2_ & ~0x00000001);
    11965  useDisjunctiveConstraintInCumulativeConstraint_ = true;
    11966  onChanged();
    11967  return this;
    11968  }
    11969 
    11970  private int linearizationLevel_ = 1;
    11981  public boolean hasLinearizationLevel() {
    11982  return ((bitField2_ & 0x00000002) != 0);
    11983  }
    11994  public int getLinearizationLevel() {
    11995  return linearizationLevel_;
    11996  }
    12007  public Builder setLinearizationLevel(int value) {
    12008  bitField2_ |= 0x00000002;
    12009  linearizationLevel_ = value;
    12010  onChanged();
    12011  return this;
    12012  }
    12024  bitField2_ = (bitField2_ & ~0x00000002);
    12025  linearizationLevel_ = 1;
    12026  onChanged();
    12027  return this;
    12028  }
    12029 
    12030  private int booleanEncodingLevel_ = 1;
    12039  public boolean hasBooleanEncodingLevel() {
    12040  return ((bitField2_ & 0x00000004) != 0);
    12041  }
    12051  return booleanEncodingLevel_;
    12052  }
    12061  public Builder setBooleanEncodingLevel(int value) {
    12062  bitField2_ |= 0x00000004;
    12063  booleanEncodingLevel_ = value;
    12064  onChanged();
    12065  return this;
    12066  }
    12076  bitField2_ = (bitField2_ & ~0x00000004);
    12077  booleanEncodingLevel_ = 1;
    12078  onChanged();
    12079  return this;
    12080  }
    12081 
    12082  private int maxNumCuts_ = 5000;
    12093  public boolean hasMaxNumCuts() {
    12094  return ((bitField2_ & 0x00000008) != 0);
    12095  }
    12106  public int getMaxNumCuts() {
    12107  return maxNumCuts_;
    12108  }
    12119  public Builder setMaxNumCuts(int value) {
    12120  bitField2_ |= 0x00000008;
    12121  maxNumCuts_ = value;
    12122  onChanged();
    12123  return this;
    12124  }
    12136  bitField2_ = (bitField2_ & ~0x00000008);
    12137  maxNumCuts_ = 5000;
    12138  onChanged();
    12139  return this;
    12140  }
    12141 
    12142  private boolean onlyAddCutsAtLevelZero_ ;
    12151  public boolean hasOnlyAddCutsAtLevelZero() {
    12152  return ((bitField2_ & 0x00000010) != 0);
    12153  }
    12162  public boolean getOnlyAddCutsAtLevelZero() {
    12163  return onlyAddCutsAtLevelZero_;
    12164  }
    12173  public Builder setOnlyAddCutsAtLevelZero(boolean value) {
    12174  bitField2_ |= 0x00000010;
    12175  onlyAddCutsAtLevelZero_ = value;
    12176  onChanged();
    12177  return this;
    12178  }
    12188  bitField2_ = (bitField2_ & ~0x00000010);
    12189  onlyAddCutsAtLevelZero_ = false;
    12190  onChanged();
    12191  return this;
    12192  }
    12193 
    12194  private boolean addKnapsackCuts_ ;
    12204  public boolean hasAddKnapsackCuts() {
    12205  return ((bitField2_ & 0x00000020) != 0);
    12206  }
    12216  public boolean getAddKnapsackCuts() {
    12217  return addKnapsackCuts_;
    12218  }
    12228  public Builder setAddKnapsackCuts(boolean value) {
    12229  bitField2_ |= 0x00000020;
    12230  addKnapsackCuts_ = value;
    12231  onChanged();
    12232  return this;
    12233  }
    12244  bitField2_ = (bitField2_ & ~0x00000020);
    12245  addKnapsackCuts_ = false;
    12246  onChanged();
    12247  return this;
    12248  }
    12249 
    12250  private boolean addCgCuts_ ;
    12259  public boolean hasAddCgCuts() {
    12260  return ((bitField2_ & 0x00000040) != 0);
    12261  }
    12270  public boolean getAddCgCuts() {
    12271  return addCgCuts_;
    12272  }
    12281  public Builder setAddCgCuts(boolean value) {
    12282  bitField2_ |= 0x00000040;
    12283  addCgCuts_ = value;
    12284  onChanged();
    12285  return this;
    12286  }
    12296  bitField2_ = (bitField2_ & ~0x00000040);
    12297  addCgCuts_ = false;
    12298  onChanged();
    12299  return this;
    12300  }
    12301 
    12302  private boolean addMirCuts_ = true;
    12311  public boolean hasAddMirCuts() {
    12312  return ((bitField2_ & 0x00000080) != 0);
    12313  }
    12322  public boolean getAddMirCuts() {
    12323  return addMirCuts_;
    12324  }
    12333  public Builder setAddMirCuts(boolean value) {
    12334  bitField2_ |= 0x00000080;
    12335  addMirCuts_ = value;
    12336  onChanged();
    12337  return this;
    12338  }
    12348  bitField2_ = (bitField2_ & ~0x00000080);
    12349  addMirCuts_ = true;
    12350  onChanged();
    12351  return this;
    12352  }
    12353 
    12354  private boolean useMirRounding_ = true;
    12364  public boolean hasUseMirRounding() {
    12365  return ((bitField2_ & 0x00000100) != 0);
    12366  }
    12376  public boolean getUseMirRounding() {
    12377  return useMirRounding_;
    12378  }
    12388  public Builder setUseMirRounding(boolean value) {
    12389  bitField2_ |= 0x00000100;
    12390  useMirRounding_ = value;
    12391  onChanged();
    12392  return this;
    12393  }
    12404  bitField2_ = (bitField2_ & ~0x00000100);
    12405  useMirRounding_ = true;
    12406  onChanged();
    12407  return this;
    12408  }
    12409 
    12410  private int maxIntegerRoundingScaling_ = 600;
    12422  public boolean hasMaxIntegerRoundingScaling() {
    12423  return ((bitField2_ & 0x00000200) != 0);
    12424  }
    12437  return maxIntegerRoundingScaling_;
    12438  }
    12451  bitField2_ |= 0x00000200;
    12452  maxIntegerRoundingScaling_ = value;
    12453  onChanged();
    12454  return this;
    12455  }
    12468  bitField2_ = (bitField2_ & ~0x00000200);
    12469  maxIntegerRoundingScaling_ = 600;
    12470  onChanged();
    12471  return this;
    12472  }
    12473 
    12474  private boolean addLpConstraintsLazily_ = true;
    12485  public boolean hasAddLpConstraintsLazily() {
    12486  return ((bitField2_ & 0x00000400) != 0);
    12487  }
    12498  public boolean getAddLpConstraintsLazily() {
    12499  return addLpConstraintsLazily_;
    12500  }
    12511  public Builder setAddLpConstraintsLazily(boolean value) {
    12512  bitField2_ |= 0x00000400;
    12513  addLpConstraintsLazily_ = value;
    12514  onChanged();
    12515  return this;
    12516  }
    12528  bitField2_ = (bitField2_ & ~0x00000400);
    12529  addLpConstraintsLazily_ = true;
    12530  onChanged();
    12531  return this;
    12532  }
    12533 
    12534  private double minOrthogonalityForLpConstraints_ ;
    12547  return ((bitField2_ & 0x00000800) != 0);
    12548  }
    12561  return minOrthogonalityForLpConstraints_;
    12562  }
    12575  bitField2_ |= 0x00000800;
    12576  minOrthogonalityForLpConstraints_ = value;
    12577  onChanged();
    12578  return this;
    12579  }
    12592  bitField2_ = (bitField2_ & ~0x00000800);
    12593  minOrthogonalityForLpConstraints_ = 0D;
    12594  onChanged();
    12595  return this;
    12596  }
    12597 
    12598  private long maxInactiveCount_ = 1000L;
    12607  public boolean hasMaxInactiveCount() {
    12608  return ((bitField2_ & 0x00001000) != 0);
    12609  }
    12618  public long getMaxInactiveCount() {
    12619  return maxInactiveCount_;
    12620  }
    12629  public Builder setMaxInactiveCount(long value) {
    12630  bitField2_ |= 0x00001000;
    12631  maxInactiveCount_ = value;
    12632  onChanged();
    12633  return this;
    12634  }
    12644  bitField2_ = (bitField2_ & ~0x00001000);
    12645  maxInactiveCount_ = 1000L;
    12646  onChanged();
    12647  return this;
    12648  }
    12649 
    12650  private long constraintRemovalBatchSize_ = 100L;
    12660  return ((bitField2_ & 0x00002000) != 0);
    12661  }
    12671  return constraintRemovalBatchSize_;
    12672  }
    12682  bitField2_ |= 0x00002000;
    12683  constraintRemovalBatchSize_ = value;
    12684  onChanged();
    12685  return this;
    12686  }
    12696  bitField2_ = (bitField2_ & ~0x00002000);
    12697  constraintRemovalBatchSize_ = 100L;
    12698  onChanged();
    12699  return this;
    12700  }
    12701 
    12702  private int searchBranching_ = 0;
    12706  public boolean hasSearchBranching() {
    12707  return ((bitField2_ & 0x00004000) != 0);
    12708  }
    12713  @SuppressWarnings("deprecation")
    12715  return result == null ? com.google.ortools.sat.SatParameters.SearchBranching.AUTOMATIC_SEARCH : result;
    12716  }
    12721  if (value == null) {
    12722  throw new NullPointerException();
    12723  }
    12724  bitField2_ |= 0x00004000;
    12725  searchBranching_ = value.getNumber();
    12726  onChanged();
    12727  return this;
    12728  }
    12733  bitField2_ = (bitField2_ & ~0x00004000);
    12734  searchBranching_ = 0;
    12735  onChanged();
    12736  return this;
    12737  }
    12738 
    12739  private boolean exploitIntegerLpSolution_ = true;
    12750  public boolean hasExploitIntegerLpSolution() {
    12751  return ((bitField2_ & 0x00008000) != 0);
    12752  }
    12763  public boolean getExploitIntegerLpSolution() {
    12764  return exploitIntegerLpSolution_;
    12765  }
    12776  public Builder setExploitIntegerLpSolution(boolean value) {
    12777  bitField2_ |= 0x00008000;
    12778  exploitIntegerLpSolution_ = value;
    12779  onChanged();
    12780  return this;
    12781  }
    12793  bitField2_ = (bitField2_ & ~0x00008000);
    12794  exploitIntegerLpSolution_ = true;
    12795  onChanged();
    12796  return this;
    12797  }
    12798 
    12799  private boolean exploitAllLpSolution_ = true;
    12809  public boolean hasExploitAllLpSolution() {
    12810  return ((bitField2_ & 0x00010000) != 0);
    12811  }
    12821  public boolean getExploitAllLpSolution() {
    12822  return exploitAllLpSolution_;
    12823  }
    12833  public Builder setExploitAllLpSolution(boolean value) {
    12834  bitField2_ |= 0x00010000;
    12835  exploitAllLpSolution_ = value;
    12836  onChanged();
    12837  return this;
    12838  }
    12849  bitField2_ = (bitField2_ & ~0x00010000);
    12850  exploitAllLpSolution_ = true;
    12851  onChanged();
    12852  return this;
    12853  }
    12854 
    12855  private boolean exploitBestSolution_ ;
    12863  public boolean hasExploitBestSolution() {
    12864  return ((bitField2_ & 0x00020000) != 0);
    12865  }
    12873  public boolean getExploitBestSolution() {
    12874  return exploitBestSolution_;
    12875  }
    12883  public Builder setExploitBestSolution(boolean value) {
    12884  bitField2_ |= 0x00020000;
    12885  exploitBestSolution_ = value;
    12886  onChanged();
    12887  return this;
    12888  }
    12897  bitField2_ = (bitField2_ & ~0x00020000);
    12898  exploitBestSolution_ = false;
    12899  onChanged();
    12900  return this;
    12901  }
    12902 
    12903  private boolean exploitObjective_ = true;
    12912  public boolean hasExploitObjective() {
    12913  return ((bitField2_ & 0x00040000) != 0);
    12914  }
    12923  public boolean getExploitObjective() {
    12924  return exploitObjective_;
    12925  }
    12934  public Builder setExploitObjective(boolean value) {
    12935  bitField2_ |= 0x00040000;
    12936  exploitObjective_ = value;
    12937  onChanged();
    12938  return this;
    12939  }
    12949  bitField2_ = (bitField2_ & ~0x00040000);
    12950  exploitObjective_ = true;
    12951  onChanged();
    12952  return this;
    12953  }
    12954 
    12955  private long pseudoCostReliabilityThreshold_ = 100L;
    12965  return ((bitField2_ & 0x00080000) != 0);
    12966  }
    12976  return pseudoCostReliabilityThreshold_;
    12977  }
    12987  bitField2_ |= 0x00080000;
    12988  pseudoCostReliabilityThreshold_ = value;
    12989  onChanged();
    12990  return this;
    12991  }
    13001  bitField2_ = (bitField2_ & ~0x00080000);
    13002  pseudoCostReliabilityThreshold_ = 100L;
    13003  onChanged();
    13004  return this;
    13005  }
    13006 
    13007  private boolean optimizeWithCore_ ;
    13018  public boolean hasOptimizeWithCore() {
    13019  return ((bitField2_ & 0x00100000) != 0);
    13020  }
    13031  public boolean getOptimizeWithCore() {
    13032  return optimizeWithCore_;
    13033  }
    13044  public Builder setOptimizeWithCore(boolean value) {
    13045  bitField2_ |= 0x00100000;
    13046  optimizeWithCore_ = value;
    13047  onChanged();
    13048  return this;
    13049  }
    13061  bitField2_ = (bitField2_ & ~0x00100000);
    13062  optimizeWithCore_ = false;
    13063  onChanged();
    13064  return this;
    13065  }
    13066 
    13067  private int binarySearchNumConflicts_ = -1;
    13078  public boolean hasBinarySearchNumConflicts() {
    13079  return ((bitField2_ & 0x00200000) != 0);
    13080  }
    13092  return binarySearchNumConflicts_;
    13093  }
    13105  bitField2_ |= 0x00200000;
    13106  binarySearchNumConflicts_ = value;
    13107  onChanged();
    13108  return this;
    13109  }
    13121  bitField2_ = (bitField2_ & ~0x00200000);
    13122  binarySearchNumConflicts_ = -1;
    13123  onChanged();
    13124  return this;
    13125  }
    13126 
    13127  private boolean optimizeWithMaxHs_ ;
    13140  public boolean hasOptimizeWithMaxHs() {
    13141  return ((bitField2_ & 0x00400000) != 0);
    13142  }
    13155  public boolean getOptimizeWithMaxHs() {
    13156  return optimizeWithMaxHs_;
    13157  }
    13170  public Builder setOptimizeWithMaxHs(boolean value) {
    13171  bitField2_ |= 0x00400000;
    13172  optimizeWithMaxHs_ = value;
    13173  onChanged();
    13174  return this;
    13175  }
    13189  bitField2_ = (bitField2_ & ~0x00400000);
    13190  optimizeWithMaxHs_ = false;
    13191  onChanged();
    13192  return this;
    13193  }
    13194 
    13195  private boolean cpModelPresolve_ = true;
    13203  public boolean hasCpModelPresolve() {
    13204  return ((bitField2_ & 0x00800000) != 0);
    13205  }
    13213  public boolean getCpModelPresolve() {
    13214  return cpModelPresolve_;
    13215  }
    13223  public Builder setCpModelPresolve(boolean value) {
    13224  bitField2_ |= 0x00800000;
    13225  cpModelPresolve_ = value;
    13226  onChanged();
    13227  return this;
    13228  }
    13237  bitField2_ = (bitField2_ & ~0x00800000);
    13238  cpModelPresolve_ = true;
    13239  onChanged();
    13240  return this;
    13241  }
    13242 
    13243  private int cpModelProbingLevel_ = 2;
    13251  public boolean hasCpModelProbingLevel() {
    13252  return ((bitField2_ & 0x01000000) != 0);
    13253  }
    13261  public int getCpModelProbingLevel() {
    13262  return cpModelProbingLevel_;
    13263  }
    13271  public Builder setCpModelProbingLevel(int value) {
    13272  bitField2_ |= 0x01000000;
    13273  cpModelProbingLevel_ = value;
    13274  onChanged();
    13275  return this;
    13276  }
    13285  bitField2_ = (bitField2_ & ~0x01000000);
    13286  cpModelProbingLevel_ = 2;
    13287  onChanged();
    13288  return this;
    13289  }
    13290 
    13291  private boolean cpModelUseSatPresolve_ = true;
    13299  public boolean hasCpModelUseSatPresolve() {
    13300  return ((bitField2_ & 0x02000000) != 0);
    13301  }
    13309  public boolean getCpModelUseSatPresolve() {
    13310  return cpModelUseSatPresolve_;
    13311  }
    13319  public Builder setCpModelUseSatPresolve(boolean value) {
    13320  bitField2_ |= 0x02000000;
    13321  cpModelUseSatPresolve_ = value;
    13322  onChanged();
    13323  return this;
    13324  }
    13333  bitField2_ = (bitField2_ & ~0x02000000);
    13334  cpModelUseSatPresolve_ = true;
    13335  onChanged();
    13336  return this;
    13337  }
    13338 
    13339  private boolean enumerateAllSolutions_ ;
    13352  public boolean hasEnumerateAllSolutions() {
    13353  return ((bitField2_ & 0x04000000) != 0);
    13354  }
    13367  public boolean getEnumerateAllSolutions() {
    13368  return enumerateAllSolutions_;
    13369  }
    13382  public Builder setEnumerateAllSolutions(boolean value) {
    13383  bitField2_ |= 0x04000000;
    13384  enumerateAllSolutions_ = value;
    13385  onChanged();
    13386  return this;
    13387  }
    13401  bitField2_ = (bitField2_ & ~0x04000000);
    13402  enumerateAllSolutions_ = false;
    13403  onChanged();
    13404  return this;
    13405  }
    13406 
    13407  private boolean fillTightenedDomainsInResponse_ ;
    13420  return ((bitField2_ & 0x08000000) != 0);
    13421  }
    13434  return fillTightenedDomainsInResponse_;
    13435  }
    13448  bitField2_ |= 0x08000000;
    13449  fillTightenedDomainsInResponse_ = value;
    13450  onChanged();
    13451  return this;
    13452  }
    13465  bitField2_ = (bitField2_ & ~0x08000000);
    13466  fillTightenedDomainsInResponse_ = false;
    13467  onChanged();
    13468  return this;
    13469  }
    13470 
    13471  private boolean instantiateAllVariables_ = true;
    13480  public boolean hasInstantiateAllVariables() {
    13481  return ((bitField2_ & 0x10000000) != 0);
    13482  }
    13491  public boolean getInstantiateAllVariables() {
    13492  return instantiateAllVariables_;
    13493  }
    13502  public Builder setInstantiateAllVariables(boolean value) {
    13503  bitField2_ |= 0x10000000;
    13504  instantiateAllVariables_ = value;
    13505  onChanged();
    13506  return this;
    13507  }
    13517  bitField2_ = (bitField2_ & ~0x10000000);
    13518  instantiateAllVariables_ = true;
    13519  onChanged();
    13520  return this;
    13521  }
    13522 
    13523  private boolean autoDetectGreaterThanAtLeastOneOf_ = true;
    13535  return ((bitField2_ & 0x20000000) != 0);
    13536  }
    13548  return autoDetectGreaterThanAtLeastOneOf_;
    13549  }
    13561  bitField2_ |= 0x20000000;
    13562  autoDetectGreaterThanAtLeastOneOf_ = value;
    13563  onChanged();
    13564  return this;
    13565  }
    13577  bitField2_ = (bitField2_ & ~0x20000000);
    13578  autoDetectGreaterThanAtLeastOneOf_ = true;
    13579  onChanged();
    13580  return this;
    13581  }
    13582 
    13583  private boolean stopAfterFirstSolution_ ;
    13591  public boolean hasStopAfterFirstSolution() {
    13592  return ((bitField2_ & 0x40000000) != 0);
    13593  }
    13601  public boolean getStopAfterFirstSolution() {
    13602  return stopAfterFirstSolution_;
    13603  }
    13611  public Builder setStopAfterFirstSolution(boolean value) {
    13612  bitField2_ |= 0x40000000;
    13613  stopAfterFirstSolution_ = value;
    13614  onChanged();
    13615  return this;
    13616  }
    13625  bitField2_ = (bitField2_ & ~0x40000000);
    13626  stopAfterFirstSolution_ = false;
    13627  onChanged();
    13628  return this;
    13629  }
    13630 
    13631  private int numSearchWorkers_ = 1;
    13640  public boolean hasNumSearchWorkers() {
    13641  return ((bitField2_ & 0x80000000) != 0);
    13642  }
    13651  public int getNumSearchWorkers() {
    13652  return numSearchWorkers_;
    13653  }
    13662  public Builder setNumSearchWorkers(int value) {
    13663  bitField2_ |= 0x80000000;
    13664  numSearchWorkers_ = value;
    13665  onChanged();
    13666  return this;
    13667  }
    13677  bitField2_ = (bitField2_ & ~0x80000000);
    13678  numSearchWorkers_ = 1;
    13679  onChanged();
    13680  return this;
    13681  }
    13682 
    13683  private boolean interleaveSearch_ ;
    13694  public boolean hasInterleaveSearch() {
    13695  return ((bitField3_ & 0x00000001) != 0);
    13696  }
    13707  public boolean getInterleaveSearch() {
    13708  return interleaveSearch_;
    13709  }
    13720  public Builder setInterleaveSearch(boolean value) {
    13721  bitField3_ |= 0x00000001;
    13722  interleaveSearch_ = value;
    13723  onChanged();
    13724  return this;
    13725  }
    13737  bitField3_ = (bitField3_ & ~0x00000001);
    13738  interleaveSearch_ = false;
    13739  onChanged();
    13740  return this;
    13741  }
    13742 
    13743  private boolean deterministicParallelSearch_ ;
    13754  return ((bitField3_ & 0x00000002) != 0);
    13755  }
    13766  return deterministicParallelSearch_;
    13767  }
    13777  public Builder setDeterministicParallelSearch(boolean value) {
    13778  bitField3_ |= 0x00000002;
    13779  deterministicParallelSearch_ = value;
    13780  onChanged();
    13781  return this;
    13782  }
    13793  bitField3_ = (bitField3_ & ~0x00000002);
    13794  deterministicParallelSearch_ = false;
    13795  onChanged();
    13796  return this;
    13797  }
    13798 
    13799  private boolean shareObjectiveBounds_ = true;
    13807  public boolean hasShareObjectiveBounds() {
    13808  return ((bitField3_ & 0x00000004) != 0);
    13809  }
    13817  public boolean getShareObjectiveBounds() {
    13818  return shareObjectiveBounds_;
    13819  }
    13827  public Builder setShareObjectiveBounds(boolean value) {
    13828  bitField3_ |= 0x00000004;
    13829  shareObjectiveBounds_ = value;
    13830  onChanged();
    13831  return this;
    13832  }
    13841  bitField3_ = (bitField3_ & ~0x00000004);
    13842  shareObjectiveBounds_ = true;
    13843  onChanged();
    13844  return this;
    13845  }
    13846 
    13847  private boolean shareLevelZeroBounds_ = true;
    13855  public boolean hasShareLevelZeroBounds() {
    13856  return ((bitField3_ & 0x00000008) != 0);
    13857  }
    13865  public boolean getShareLevelZeroBounds() {
    13866  return shareLevelZeroBounds_;
    13867  }
    13875  public Builder setShareLevelZeroBounds(boolean value) {
    13876  bitField3_ |= 0x00000008;
    13877  shareLevelZeroBounds_ = value;
    13878  onChanged();
    13879  return this;
    13880  }
    13889  bitField3_ = (bitField3_ & ~0x00000008);
    13890  shareLevelZeroBounds_ = true;
    13891  onChanged();
    13892  return this;
    13893  }
    13894 
    13895  private boolean useLnsOnly_ ;
    13903  public boolean hasUseLnsOnly() {
    13904  return ((bitField3_ & 0x00000010) != 0);
    13905  }
    13913  public boolean getUseLnsOnly() {
    13914  return useLnsOnly_;
    13915  }
    13923  public Builder setUseLnsOnly(boolean value) {
    13924  bitField3_ |= 0x00000010;
    13925  useLnsOnly_ = value;
    13926  onChanged();
    13927  return this;
    13928  }
    13937  bitField3_ = (bitField3_ & ~0x00000010);
    13938  useLnsOnly_ = false;
    13939  onChanged();
    13940  return this;
    13941  }
    13942 
    13943  private boolean lnsFocusOnDecisionVariables_ ;
    13948  return ((bitField3_ & 0x00000020) != 0);
    13949  }
    13954  return lnsFocusOnDecisionVariables_;
    13955  }
    13959  public Builder setLnsFocusOnDecisionVariables(boolean value) {
    13960  bitField3_ |= 0x00000020;
    13961  lnsFocusOnDecisionVariables_ = value;
    13962  onChanged();
    13963  return this;
    13964  }
    13969  bitField3_ = (bitField3_ & ~0x00000020);
    13970  lnsFocusOnDecisionVariables_ = false;
    13971  onChanged();
    13972  return this;
    13973  }
    13974 
    13975  private boolean useRinsLns_ = true;
    13983  public boolean hasUseRinsLns() {
    13984  return ((bitField3_ & 0x00000040) != 0);
    13985  }
    13993  public boolean getUseRinsLns() {
    13994  return useRinsLns_;
    13995  }
    14003  public Builder setUseRinsLns(boolean value) {
    14004  bitField3_ |= 0x00000040;
    14005  useRinsLns_ = value;
    14006  onChanged();
    14007  return this;
    14008  }
    14017  bitField3_ = (bitField3_ & ~0x00000040);
    14018  useRinsLns_ = true;
    14019  onChanged();
    14020  return this;
    14021  }
    14022 
    14023  private boolean randomizeSearch_ ;
    14031  public boolean hasRandomizeSearch() {
    14032  return ((bitField3_ & 0x00000080) != 0);
    14033  }
    14041  public boolean getRandomizeSearch() {
    14042  return randomizeSearch_;
    14043  }
    14051  public Builder setRandomizeSearch(boolean value) {
    14052  bitField3_ |= 0x00000080;
    14053  randomizeSearch_ = value;
    14054  onChanged();
    14055  return this;
    14056  }
    14065  bitField3_ = (bitField3_ & ~0x00000080);
    14066  randomizeSearch_ = false;
    14067  onChanged();
    14068  return this;
    14069  }
    14070 
    14071  private long searchRandomizationTolerance_ ;
    14086  return ((bitField3_ & 0x00000100) != 0);
    14087  }
    14102  return searchRandomizationTolerance_;
    14103  }
    14118  bitField3_ |= 0x00000100;
    14119  searchRandomizationTolerance_ = value;
    14120  onChanged();
    14121  return this;
    14122  }
    14137  bitField3_ = (bitField3_ & ~0x00000100);
    14138  searchRandomizationTolerance_ = 0L;
    14139  onChanged();
    14140  return this;
    14141  }
    14142 
    14143  private boolean useOptionalVariables_ = true;
    14153  public boolean hasUseOptionalVariables() {
    14154  return ((bitField3_ & 0x00000200) != 0);
    14155  }
    14165  public boolean getUseOptionalVariables() {
    14166  return useOptionalVariables_;
    14167  }
    14177  public Builder setUseOptionalVariables(boolean value) {
    14178  bitField3_ |= 0x00000200;
    14179  useOptionalVariables_ = value;
    14180  onChanged();
    14181  return this;
    14182  }
    14193  bitField3_ = (bitField3_ & ~0x00000200);
    14194  useOptionalVariables_ = true;
    14195  onChanged();
    14196  return this;
    14197  }
    14198 
    14199  private boolean useExactLpReason_ = true;
    14210  public boolean hasUseExactLpReason() {
    14211  return ((bitField3_ & 0x00000400) != 0);
    14212  }
    14223  public boolean getUseExactLpReason() {
    14224  return useExactLpReason_;
    14225  }
    14236  public Builder setUseExactLpReason(boolean value) {
    14237  bitField3_ |= 0x00000400;
    14238  useExactLpReason_ = value;
    14239  onChanged();
    14240  return this;
    14241  }
    14253  bitField3_ = (bitField3_ & ~0x00000400);
    14254  useExactLpReason_ = true;
    14255  onChanged();
    14256  return this;
    14257  }
    14258 
    14259  private boolean useCombinedNoOverlap_ ;
    14269  public boolean hasUseCombinedNoOverlap() {
    14270  return ((bitField3_ & 0x00000800) != 0);
    14271  }
    14281  public boolean getUseCombinedNoOverlap() {
    14282  return useCombinedNoOverlap_;
    14283  }
    14293  public Builder setUseCombinedNoOverlap(boolean value) {
    14294  bitField3_ |= 0x00000800;
    14295  useCombinedNoOverlap_ = value;
    14296  onChanged();
    14297  return this;
    14298  }
    14309  bitField3_ = (bitField3_ & ~0x00000800);
    14310  useCombinedNoOverlap_ = false;
    14311  onChanged();
    14312  return this;
    14313  }
    14314 
    14315  private double mipMaxBound_ = 10000000D;
    14325  public boolean hasMipMaxBound() {
    14326  return ((bitField3_ & 0x00001000) != 0);
    14327  }
    14337  public double getMipMaxBound() {
    14338  return mipMaxBound_;
    14339  }
    14349  public Builder setMipMaxBound(double value) {
    14350  bitField3_ |= 0x00001000;
    14351  mipMaxBound_ = value;
    14352  onChanged();
    14353  return this;
    14354  }
    14365  bitField3_ = (bitField3_ & ~0x00001000);
    14366  mipMaxBound_ = 10000000D;
    14367  onChanged();
    14368  return this;
    14369  }
    14370 
    14371  private double mipVarScaling_ = 1D;
    14381  public boolean hasMipVarScaling() {
    14382  return ((bitField3_ & 0x00002000) != 0);
    14383  }
    14393  public double getMipVarScaling() {
    14394  return mipVarScaling_;
    14395  }
    14405  public Builder setMipVarScaling(double value) {
    14406  bitField3_ |= 0x00002000;
    14407  mipVarScaling_ = value;
    14408  onChanged();
    14409  return this;
    14410  }
    14421  bitField3_ = (bitField3_ & ~0x00002000);
    14422  mipVarScaling_ = 1D;
    14423  onChanged();
    14424  return this;
    14425  }
    14426 
    14427  private double mipWantedPrecision_ = 1e-06D;
    14443  public boolean hasMipWantedPrecision() {
    14444  return ((bitField3_ & 0x00004000) != 0);
    14445  }
    14461  public double getMipWantedPrecision() {
    14462  return mipWantedPrecision_;
    14463  }
    14479  public Builder setMipWantedPrecision(double value) {
    14480  bitField3_ |= 0x00004000;
    14481  mipWantedPrecision_ = value;
    14482  onChanged();
    14483  return this;
    14484  }
    14501  bitField3_ = (bitField3_ & ~0x00004000);
    14502  mipWantedPrecision_ = 1e-06D;
    14503  onChanged();
    14504  return this;
    14505  }
    14506 
    14507  private int mipMaxActivityExponent_ = 53;
    14521  public boolean hasMipMaxActivityExponent() {
    14522  return ((bitField3_ & 0x00008000) != 0);
    14523  }
    14538  return mipMaxActivityExponent_;
    14539  }
    14554  bitField3_ |= 0x00008000;
    14555  mipMaxActivityExponent_ = value;
    14556  onChanged();
    14557  return this;
    14558  }
    14573  bitField3_ = (bitField3_ & ~0x00008000);
    14574  mipMaxActivityExponent_ = 53;
    14575  onChanged();
    14576  return this;
    14577  }
    14578 
    14579  private double mipCheckPrecision_ = 0.0001D;
    14590  public boolean hasMipCheckPrecision() {
    14591  return ((bitField3_ & 0x00010000) != 0);
    14592  }
    14603  public double getMipCheckPrecision() {
    14604  return mipCheckPrecision_;
    14605  }
    14616  public Builder setMipCheckPrecision(double value) {
    14617  bitField3_ |= 0x00010000;
    14618  mipCheckPrecision_ = value;
    14619  onChanged();
    14620  return this;
    14621  }
    14633  bitField3_ = (bitField3_ & ~0x00010000);
    14634  mipCheckPrecision_ = 0.0001D;
    14635  onChanged();
    14636  return this;
    14637  }
    14638 
    14639  private boolean catchSigintSignal_ = true;
    14649  public boolean hasCatchSigintSignal() {
    14650  return ((bitField3_ & 0x00020000) != 0);
    14651  }
    14661  public boolean getCatchSigintSignal() {
    14662  return catchSigintSignal_;
    14663  }
    14673  public Builder setCatchSigintSignal(boolean value) {
    14674  bitField3_ |= 0x00020000;
    14675  catchSigintSignal_ = value;
    14676  onChanged();
    14677  return this;
    14678  }
    14689  bitField3_ = (bitField3_ & ~0x00020000);
    14690  catchSigintSignal_ = true;
    14691  onChanged();
    14692  return this;
    14693  }
    14694  @java.lang.Override
    14696  final com.google.protobuf.UnknownFieldSet unknownFields) {
    14697  return super.setUnknownFields(unknownFields);
    14698  }
    14699 
    14700  @java.lang.Override
    14702  final com.google.protobuf.UnknownFieldSet unknownFields) {
    14703  return super.mergeUnknownFields(unknownFields);
    14704  }
    14705 
    14706 
    14707  // @@protoc_insertion_point(builder_scope:operations_research.sat.SatParameters)
    14708  }
    14709 
    14710  // @@protoc_insertion_point(class_scope:operations_research.sat.SatParameters)
    14711  private static final com.google.ortools.sat.SatParameters DEFAULT_INSTANCE;
    14712  static {
    14713  DEFAULT_INSTANCE = new com.google.ortools.sat.SatParameters();
    14714  }
    14715 
    14717  return DEFAULT_INSTANCE;
    14718  }
    14719 
    14720  @java.lang.Deprecated public static final com.google.protobuf.Parser<SatParameters>
    14721  PARSER = new com.google.protobuf.AbstractParser<SatParameters>() {
    14722  @java.lang.Override
    14723  public SatParameters parsePartialFrom(
    14724  com.google.protobuf.CodedInputStream input,
    14725  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    14726  throws com.google.protobuf.InvalidProtocolBufferException {
    14727  return new SatParameters(input, extensionRegistry);
    14728  }
    14729  };
    14730 
    14731  public static com.google.protobuf.Parser<SatParameters> parser() {
    14732  return PARSER;
    14733  }
    14734 
    14735  @java.lang.Override
    14736  public com.google.protobuf.Parser<SatParameters> getParserForType() {
    14737  return PARSER;
    14738  }
    14739 
    14740  @java.lang.Override
    14742  return DEFAULT_INSTANCE;
    14743  }
    14744 
    14745 }
    14746 
    + +
    Builder clearGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    +
    com.google.ortools.sat.SatParameters.VariableOrder getPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    -
    boolean getLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    - +
    boolean getLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    - - -
    static final int MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER
    - + + +
    static final int MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER
    + - - + + - - + + - +
    .lang.Deprecated static MaxSatStratificationAlgorithm valueOf(int value)
    - +
    com.google.ortools.sat.SatParameters.RestartAlgorithm getRestartAlgorithms(int index)
    - - - + + +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    -
    static com.google.ortools.sat.SatParameters parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    +
    static com.google.ortools.sat.SatParameters parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - +
    static BinaryMinizationAlgorithm valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    - - - - + + + + - -
    java.util.List< com.google.ortools.sat.SatParameters.RestartAlgorithm > getRestartAlgorithmsList()
    + +
    java.util.List< com.google.ortools.sat.SatParameters.RestartAlgorithm > getRestartAlgorithmsList()
    - - -
    Builder setGlucoseDecayIncrementPeriod(int value)
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    -
    .lang.Override Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
    -
    boolean hasDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    - + + +
    Builder setGlucoseDecayIncrementPeriod(int value)
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    +
    .lang.Override Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
    +
    boolean hasDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    +
    static final int GLUCOSE_DECAY_INCREMENT_FIELD_NUMBER
    - -
    double getMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    - + +
    double getMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    + - - -
    Builder clearMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    - + + +
    Builder clearMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    +
    static final int USE_OPTIMIZATION_HINTS_FIELD_NUMBER
    -
    boolean hasGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    +
    boolean hasGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    - -
    Builder setSubsumptionDuringConflictAnalysis(boolean value)
    -
    .lang.Override Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - -
    boolean getLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    - - -
    com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm getBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    - + +
    Builder setSubsumptionDuringConflictAnalysis(boolean value)
    +
    .lang.Override Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + +
    boolean getLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    + + +
    com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm getBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    +
    static final int CLAUSE_CLEANUP_PROTECTION_FIELD_NUMBER
    static final int CLAUSE_CLEANUP_PERIOD_FIELD_NUMBER
    -
    Builder setPreferredVariableOrder(com.google.ortools.sat.SatParameters.VariableOrder value)
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    +
    Builder setPreferredVariableOrder(com.google.ortools.sat.SatParameters.VariableOrder value)
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    - + - - + + -
    com.google.ortools.sat.SatParameters.RestartAlgorithm getRestartAlgorithms(int index)
    - +
    com.google.ortools.sat.SatParameters.RestartAlgorithm getRestartAlgorithms(int index)
    + - + - +
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    - -
    static com.google.ortools.sat.SatParameters parseFrom(java.io.InputStream input)
    - + +
    static com.google.ortools.sat.SatParameters parseFrom(java.io.InputStream input)
    +
    BINARY_MINIMIZATION_WITH_REACHABILITY
    BINARY_MINIMIZATION_WITH_REACHABILITY = 2;
    - -
    com.google.ortools.sat.SatParameters.SearchBranching getSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    + +
    com.google.ortools.sat.SatParameters.SearchBranching getSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    double getMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    - + -
    boolean hasMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    - +
    boolean hasMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    + - - -
    Builder setMinimizeWithPropagationNumDecisions(int value)
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    -
    boolean hasMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    + + +
    Builder setMinimizeWithPropagationNumDecisions(int value)
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    +
    boolean hasMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    - -
    static final int CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER
    - - - - - + +
    static final int CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER
    + + + + + - -
    boolean hasSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    -
    .lang.Override com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
    - - -
    Builder setClauseCleanupProtection(com.google.ortools.sat.SatParameters.ClauseProtection value)
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    -
    static final int ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER
    -
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.ByteString data)
    -
    com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm getMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    - + +
    boolean hasSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    +
    .lang.Override com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
    + + +
    Builder setClauseCleanupProtection(com.google.ortools.sat.SatParameters.ClauseProtection value)
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    +
    static final int ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER
    +
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.ByteString data)
    +
    com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm getMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    + - + - - - + + +
    java.util.List< com.google.ortools.sat.SatParameters.RestartAlgorithm > getRestartAlgorithmsList()
    - +
    static final int MINIMIZATION_ALGORITHM_FIELD_NUMBER
    - +
    .lang.Deprecated static ConflictMinimizationAlgorithm valueOf(int value)
    static final int USE_DISJUNCTIVE_CONSTRAINT_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER
    - -
    .lang.Override Builder toBuilder()
    + +
    .lang.Override Builder toBuilder()
    - + - - - - + + + +
    boolean hasDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    - - - - - + + + + +
    static final int PREFERRED_VARIABLE_ORDER_FIELD_NUMBER
    boolean hasPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    - - - + + +
    static MaxSatAssumptionOrder valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    - +
    static final int MAX_NUMBER_OF_CONFLICTS_FIELD_NUMBER
    static final int BLOCKING_RESTART_MULTIPLIER_FIELD_NUMBER
    - - - -
    static final int INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER
    -
    Builder clearLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    - -
    boolean hasClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    + + + +
    static final int INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER
    +
    Builder clearLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    + +
    boolean hasClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    static com.google.protobuf.Internal.EnumLiteMap< BinaryMinizationAlgorithm > internalGetValueMap()
    - -
    Builder clearMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    -
    Builder setPbCleanupRatio(double value)
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    + +
    Builder clearMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    +
    Builder setPbCleanupRatio(double value)
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    - - -
    Builder setBinaryMinimizationAlgorithm(com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm value)
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    + + +
    Builder setBinaryMinimizationAlgorithm(com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm value)
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    static final int MAX_SAT_REVERSE_ASSUMPTION_ORDER_FIELD_NUMBER
    static final int BINARY_MINIMIZATION_ALGORITHM_FIELD_NUMBER
    - + - - - - + + + + - +
    double getPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    - - -
    Builder clearClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    -
    static final int MIP_WANTED_PRECISION_FIELD_NUMBER
    - + + +
    Builder clearClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    +
    static final int MIP_WANTED_PRECISION_FIELD_NUMBER
    +
    static com.google.protobuf.Internal.EnumLiteMap< SearchBranching > internalGetValueMap()
    - - - + + +
    static final int RESTART_DL_AVERAGE_RATIO_FIELD_NUMBER
    -
    .lang.Override com.google.ortools.sat.SatParameters getDefaultInstanceForType()
    - - - - +
    .lang.Override com.google.ortools.sat.SatParameters getDefaultInstanceForType()
    + + + +
    static final int COUNT_ASSUMPTION_LEVELS_IN_LBD_FIELD_NUMBER
    static ConflictMinimizationAlgorithm forNumber(int value)
    - - + +
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    -
    int getMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    - - -
    static com.google.ortools.sat.SatParameters parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - - -
    .lang.Override Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    - +
    int getMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    + + +
    static com.google.ortools.sat.SatParameters parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + + +
    .lang.Override Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    +
    boolean hasClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    - - - + + +
    static final int MAX_CLAUSE_ACTIVITY_VALUE_FIELD_NUMBER
    -
    static final int BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER
    - +
    static final int BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER
    +
    static final int CLAUSE_ACTIVITY_DECAY_FIELD_NUMBER
    static final int NUM_CONFLICTS_BEFORE_STRATEGY_CHANGES_FIELD_NUMBER
    - -
    Builder setAlsoBumpVariablesInConflictReasons(boolean value)
    -
    static final int SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER
    + +
    Builder setAlsoBumpVariablesInConflictReasons(boolean value)
    +
    static final int SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER
    static final int SUBSUMPTION_DURING_CONFLICT_ANALYSIS_FIELD_NUMBER
    - + - - - - + + + +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    - -
    double getBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    - - - - - + +
    double getBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    + + + + + - +
    static final int USE_TIMETABLE_EDGE_FINDING_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER
    com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder getMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    - +
    boolean hasClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    - + - -
    boolean hasPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    - -
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    + +
    boolean hasPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    + +
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    - + - +
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    - -
    Builder setMaxSatStratification(com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm value)
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    - - - + +
    Builder setMaxSatStratification(com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm value)
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    + + + - +
    static final int MAX_SAT_STRATIFICATION_FIELD_NUMBER
    - - -
    boolean hasRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    - - - - -
    double getGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    -
    .lang.Override com.google.protobuf.Parser< SatParameters > getParserForType()
    + + +
    boolean hasRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    + + + + +
    double getGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    +
    .lang.Override com.google.protobuf.Parser< SatParameters > getParserForType()
    - + - - + + -
    Builder setRestartAlgorithms(int index, com.google.ortools.sat.SatParameters.RestartAlgorithm value)
    - - - -
    boolean hasMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    - +
    Builder setRestartAlgorithms(int index, com.google.ortools.sat.SatParameters.RestartAlgorithm value)
    + + + +
    boolean hasMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    + - + - - + +
    static Polarity valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    -
    static final int SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER
    - - - +
    static final int SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER
    + + +
    boolean hasBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    - +
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    -
    .lang.Override com.google.ortools.sat.SatParameters build()
    -
    Builder setRestartLbdAverageRatio(double value)
    optional double restart_lbd_average_ratio = 71 [default = 1];
    - +
    .lang.Override com.google.ortools.sat.SatParameters build()
    +
    Builder setRestartLbdAverageRatio(double value)
    optional double restart_lbd_average_ratio = 71 [default = 1];
    + -
    .lang.Override void writeTo(com.google.protobuf.CodedOutputStream output)
    -
    Builder clearBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    - - +
    .lang.Override void writeTo(com.google.protobuf.CodedOutputStream output)
    +
    Builder clearBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    + +
    .lang.Deprecated static RestartAlgorithm valueOf(int value)
    boolean hasMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    - - - - - + + + + + - -
    boolean hasLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    + +
    boolean hasLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    - +
    static final int ALSO_BUMP_VARIABLES_IN_CONFLICT_REASONS_FIELD_NUMBER
    com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm getMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    static final int INITIAL_VARIABLES_ACTIVITY_FIELD_NUMBER
    - +
    static com.google.protobuf.Internal.EnumLiteMap< VariableOrder > internalGetValueMap()
    -
    static final int DETERMINISTIC_PARALLEL_SEARCH_FIELD_NUMBER
    - - +
    static final int DETERMINISTIC_PARALLEL_SEARCH_FIELD_NUMBER
    + +
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    -
    static final int MIN_ORTHOGONALITY_FOR_LP_CONSTRAINTS_FIELD_NUMBER
    +
    static final int MIN_ORTHOGONALITY_FOR_LP_CONSTRAINTS_FIELD_NUMBER
    - -
    .lang.Override Builder mergeFrom(com.google.protobuf.Message other)
    - + +
    .lang.Override Builder mergeFrom(com.google.protobuf.Message other)
    + - +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    -
    .lang.Override boolean equals(final java.lang.Object obj)
    - - - +
    .lang.Override boolean equals(final java.lang.Object obj)
    + + + - + - - + + - +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    - + -
    java.lang.String getDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    +
    java.lang.String getDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    - - + +
    int getMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    - + -
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - +
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    +
    static final int TREAT_BINARY_CLAUSES_SEPARATELY_FIELD_NUMBER
    static com.google.protobuf.Internal.EnumLiteMap< RestartAlgorithm > internalGetValueMap()
    static com.google.protobuf.Internal.EnumLiteMap< ConflictMinimizationAlgorithm > internalGetValueMap()
    -
    static com.google.protobuf.Parser< SatParameters > parser()
    -
    Builder clearMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    -
    boolean hasSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    - +
    static com.google.protobuf.Parser< SatParameters > parser()
    +
    Builder clearMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    +
    boolean hasSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    + -
    static final int CONSTRAINT_REMOVAL_BATCH_SIZE_FIELD_NUMBER
    -
    static com.google.ortools.sat.SatParameters parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    +
    static final int CONSTRAINT_REMOVAL_BATCH_SIZE_FIELD_NUMBER
    +
    static com.google.ortools.sat.SatParameters parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    -
    double getPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    -
    static final int ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER
    +
    double getPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    +
    static final int ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER
    - + -
    Builder setDefaultRestartAlgorithms(java.lang.String value)
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    -
    com.google.protobuf.ByteString getDefaultRestartAlgorithmsBytes()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    +
    Builder setDefaultRestartAlgorithms(java.lang.String value)
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    +
    com.google.protobuf.ByteString getDefaultRestartAlgorithmsBytes()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    - - + +
    static final int DEFAULT_RESTART_ALGORITHMS_FIELD_NUMBER
    -
    boolean hasGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    - -
    Builder setGlucoseDecayIncrement(double value)
    optional double glucose_decay_increment = 23 [default = 0.01];
    -
    com.google.ortools.sat.SatParameters.Polarity getInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    - - +
    boolean hasGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    + +
    Builder setGlucoseDecayIncrement(double value)
    optional double glucose_decay_increment = 23 [default = 0.01];
    +
    com.google.ortools.sat.SatParameters.Polarity getInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    + + - -
    Builder addRestartAlgorithms(com.google.ortools.sat.SatParameters.RestartAlgorithm value)
    - - - - -
    .lang.Override Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    -
    com.google.ortools.sat.SatParameters.SearchBranching getSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    + +
    Builder addRestartAlgorithms(com.google.ortools.sat.SatParameters.RestartAlgorithm value)
    + + + + +
    .lang.Override Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
    +
    com.google.ortools.sat.SatParameters.SearchBranching getSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    -
    Builder setMinimizeReductionDuringPbResolution(boolean value)
    +
    Builder setMinimizeReductionDuringPbResolution(boolean value)
    com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm getBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    - - - + + + - +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    - -
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - + +
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    +
    static ClauseOrdering valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    .lang.Deprecated static SearchBranching valueOf(int value)
    static final int MINIMIZE_WITH_PROPAGATION_RESTART_PERIOD_FIELD_NUMBER
    static MaxSatStratificationAlgorithm valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    - - - - + + + +
    EXPERIMENTAL_BINARY_MINIMIZATION
    EXPERIMENTAL_BINARY_MINIMIZATION = 3;
    - +
    double getGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    static final int RESTART_RUNNING_WINDOW_SIZE_FIELD_NUMBER
    - +
    .lang.Deprecated static ClauseProtection valueOf(int value)
    - +
    .lang.Override java.lang.Object newInstance(UnusedPrivateParameter unused)
    - - - + + +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    -
    static final int USE_OPTIONAL_VARIABLES_FIELD_NUMBER
    +
    static final int USE_OPTIONAL_VARIABLES_FIELD_NUMBER
    -
    static final int LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER
    - -
    Builder clearInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    - -
    Builder setUseDisjunctiveConstraintInCumulativeConstraint(boolean value)
    - - +
    static final int LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER
    + +
    Builder clearInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    + +
    Builder setUseDisjunctiveConstraintInCumulativeConstraint(boolean value)
    + + - - + + - - - + + +
    .lang.Deprecated static MaxSatAssumptionOrder valueOf(int value)
    - +
    static final int PRESOLVE_BVA_THRESHOLD_FIELD_NUMBER
    - + - - - + + + - - + +
    BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION
    BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION = 4;
    .lang.Deprecated static VariableOrder valueOf(int value)
    -
    .lang.Override Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
    - - - - - +
    .lang.Override Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
    + + + + +
    static final int MINIMIZE_REDUCTION_DURING_PB_RESOLUTION_FIELD_NUMBER
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    - - - -
    Builder clearRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    + + + +
    Builder clearRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    int getBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    static final int PRESOLVE_BVE_THRESHOLD_FIELD_NUMBER
    - - - -
    Builder setUseTimetableEdgeFindingInCumulativeConstraint(boolean value)
    + + + +
    Builder setUseTimetableEdgeFindingInCumulativeConstraint(boolean value)
    static final int RANDOM_POLARITY_RATIO_FIELD_NUMBER
    - - + + - +
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    - + - -
    Builder setClauseCleanupOrdering(com.google.ortools.sat.SatParameters.ClauseOrdering value)
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    - + +
    Builder setClauseCleanupOrdering(com.google.ortools.sat.SatParameters.ClauseOrdering value)
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    + - - + + - -
    static final int EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER
    + +
    static final int EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER
    - +
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    - - - - - + + + + +
    boolean hasGlucoseDecayIncrement()
    optional double glucose_decay_increment = 23 [default = 0.01];
    -
    com.google.ortools.sat.SatParameters.ClauseProtection getClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    +
    com.google.ortools.sat.SatParameters.ClauseProtection getClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    - -
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.CodedInputStream input)
    + +
    static com.google.ortools.sat.SatParameters parseFrom(com.google.protobuf.CodedInputStream input)
    - -
    static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    - + +
    static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    + - -
    boolean hasInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    -
    Builder clearClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    - + +
    boolean hasInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    +
    Builder clearClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    +
    double getRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    static MaxSatStratificationAlgorithm forNumber(int value)
    - - - + + +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    -
    com.google.ortools.sat.SatParameters.VariableOrder getPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    -
    boolean hasBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    - - - -
    boolean hasBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    +
    com.google.ortools.sat.SatParameters.VariableOrder getPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    +
    boolean hasBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    + + + +
    boolean hasBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    static final int USE_OVERLOAD_CHECKER_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER
    -
    com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder getMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    +
    com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder getMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    - - -
    .lang.Override com.google.ortools.sat.SatParameters getDefaultInstanceForType()
    + + +
    .lang.Override com.google.ortools.sat.SatParameters getDefaultInstanceForType()
    boolean hasPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    - -
    .lang.Override final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    -
    Builder setUsePrecedencesInDisjunctiveConstraint(boolean value)
    + +
    .lang.Override final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    +
    Builder setUsePrecedencesInDisjunctiveConstraint(boolean value)
    - -
    Builder clearBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    + +
    Builder clearBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    - - + + -
    static com.google.ortools.sat.SatParameters parseDelimitedFrom(java.io.InputStream input)
    - - - +
    static com.google.ortools.sat.SatParameters parseDelimitedFrom(java.io.InputStream input)
    + + +
    static final int GLUCOSE_DECAY_INCREMENT_PERIOD_FIELD_NUMBER
    -
    .lang.Deprecated static final com.google.protobuf.Parser< SatParameters > PARSER
    - - +
    .lang.Deprecated static final com.google.protobuf.Parser< SatParameters > PARSER
    + +
    static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    - -
    boolean hasMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    + +
    boolean hasMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    static final int BLOCKING_RESTART_WINDOW_SIZE_FIELD_NUMBER
    - - - + + + - - - + + +
    boolean hasGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    double getMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    - - + +
    int getGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    - - - - - - - + + + + + + + - - - - + + + + - +
    static final int BOOLEAN_ENCODING_LEVEL_FIELD_NUMBER
    - +
    static ClauseProtection valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    - -
    static final int ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER
    + +
    static final int ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER
    com.google.ortools.sat.SatParameters.Polarity getInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    static com.google.protobuf.Internal.EnumLiteMap< ClauseOrdering > internalGetValueMap()
    - +
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    - -
    Builder clearBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    -
    boolean hasBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    - - -
    static final int OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER
    - -
    Builder setDefaultRestartAlgorithmsBytes(com.google.protobuf.ByteString value)
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    -
    Builder clearGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    - + +
    Builder clearBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    +
    boolean hasBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    + + +
    static final int OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER
    + +
    Builder setDefaultRestartAlgorithmsBytes(com.google.protobuf.ByteString value)
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    +
    Builder clearGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    +
    static RestartAlgorithm valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    - - + + - - -
    com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm getMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    -
    .lang.Override Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
    - - + + +
    com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm getMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    +
    .lang.Override Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
    + +
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    - - -
    static com.google.ortools.sat.SatParameters parseFrom(byte[] data)
    + + +
    static com.google.ortools.sat.SatParameters parseFrom(byte[] data)
    - - + + - -
    .lang.Override final boolean isInitialized()
    -
    Builder setMaxClauseActivityValue(double value)
    optional double max_clause_activity_value = 18 [default = 1e+20];
    + +
    .lang.Override final boolean isInitialized()
    +
    Builder setMaxClauseActivityValue(double value)
    optional double max_clause_activity_value = 18 [default = 1e+20];
    boolean hasMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    static final int STRATEGY_CHANGE_INCREASE_RATIO_FIELD_NUMBER
    -
    Builder clearSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    - - - +
    Builder clearSearchBranching()
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    + + + - - - -
    Builder clearMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    + + + +
    Builder clearMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    - - + +
    com.google.ortools.sat.SatParameters.ClauseProtection getClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    - - + +
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    - -
    Builder clearMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    -
    double getMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    - + +
    Builder clearMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    +
    double getMaxClauseActivityValue()
    optional double max_clause_activity_value = 18 [default = 1e+20];
    +
    com.google.ortools.sat.SatParameters.ClauseOrdering getClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    boolean hasInitialPolarity()
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    - +
    static final int USE_BLOCKING_RESTART_FIELD_NUMBER
    - +
    static final int CLAUSE_CLEANUP_ORDERING_FIELD_NUMBER
    -
    .lang.Override com.google.ortools.sat.SatParameters buildPartial()
    - +
    .lang.Override com.google.ortools.sat.SatParameters buildPartial()
    +
    static final int RESTART_LBD_AVERAGE_RATIO_FIELD_NUMBER
    static com.google.protobuf.Internal.EnumLiteMap< MaxSatStratificationAlgorithm > internalGetValueMap()
    -
    .lang.Override final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    +
    .lang.Override final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)
    - - - - + + + + - - + +
    boolean hasBinaryMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorit...
    - - + + - - + +
    boolean hasBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    - - - + + +
    static com.google.protobuf.Internal.EnumLiteMap< Polarity > internalGetValueMap()
    - - - + + +
    .lang.Override final com.google.protobuf.UnknownFieldSet getUnknownFields()
    -
    static com.google.ortools.sat.SatParameters parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    - +
    static com.google.ortools.sat.SatParameters parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    + - +
    boolean hasMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    static BinaryMinizationAlgorithm forNumber(int value)
    static MaxSatAssumptionOrder forNumber(int value)
    -
    Builder addAllRestartAlgorithms(java.lang.Iterable<? extends com.google.ortools.sat.SatParameters.RestartAlgorithm > values)
    +
    Builder addAllRestartAlgorithms(java.lang.Iterable<? extends com.google.ortools.sat.SatParameters.RestartAlgorithm > values)
    static final int RANDOM_BRANCHES_RATIO_FIELD_NUMBER
    - -
    static final int EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER
    + +
    static final int EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    static final int CLAUSE_CLEANUP_LBD_BOUND_FIELD_NUMBER
    - +
    static final int VARIABLE_ACTIVITY_DECAY_FIELD_NUMBER
    -
    boolean hasMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    +
    boolean hasMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm getMaxSatStratification()
    optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification ...
    - - - + + + -
    Builder setMaxVariableActivityValue(double value)
    optional double max_variable_activity_value = 16 [default = 1e+100];
    - -
    Builder clearDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    - +
    Builder setMaxVariableActivityValue(double value)
    optional double max_variable_activity_value = 16 [default = 1e+100];
    + +
    Builder clearDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    + - +
    static SearchBranching valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    - +
    .lang.Deprecated static Polarity valueOf(int value)
    - - - -
    Builder setSearchBranching(com.google.ortools.sat.SatParameters.SearchBranching value)
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    + + + +
    Builder setSearchBranching(com.google.ortools.sat.SatParameters.SearchBranching value)
    optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTO...
    - -
    int getBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    - -
    int getGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    + +
    int getBlockingRestartWindowSize()
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    + +
    int getGlucoseDecayIncrementPeriod()
    optional int32 glucose_decay_increment_period = 24 [default = 5000];
    - -
    static Builder newBuilder(com.google.ortools.sat.SatParameters prototype)
    - -
    Builder setMaxSatAssumptionOrder(com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder value)
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    + +
    static Builder newBuilder(com.google.ortools.sat.SatParameters prototype)
    + +
    Builder setMaxSatAssumptionOrder(com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder value)
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    static final int MAX_SAT_ASSUMPTION_ORDER_FIELD_NUMBER
    - + - - + +
    boolean hasMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    - - - - + + + +
    static final int PRESOLVE_BVE_CLAUSE_WEIGHT_FIELD_NUMBER
    - - - - - - - + + + + + + +
    boolean hasMinimizationAlgorithm()
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    -
    static final int MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER
    +
    static final int MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER
    -
    static final int AUTO_DETECT_GREATER_THAN_AT_LEAST_ONE_OF_FIELD_NUMBER
    +
    static final int AUTO_DETECT_GREATER_THAN_AT_LEAST_ONE_OF_FIELD_NUMBER
    - -
    Builder setMinimizationAlgorithm(com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm value)
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    + +
    Builder setMinimizationAlgorithm(com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm value)
    optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm ...
    static final int USE_PRECEDENCES_IN_DISJUNCTIVE_CONSTRAINT_FIELD_NUMBER
    - + - - - + + + - - - - - + + + + + - -
    boolean hasLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    -
    Builder setFillTightenedDomainsInResponse(boolean value)
    + +
    boolean hasLnsFocusOnDecisionVariables()
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    +
    Builder setFillTightenedDomainsInResponse(boolean value)
    - - - - - - - + + + + + + +
    static final int MAX_VARIABLE_ACTIVITY_VALUE_FIELD_NUMBER
    -
    static final int PSEUDO_COST_RELIABILITY_THRESHOLD_FIELD_NUMBER
    +
    static final int PSEUDO_COST_RELIABILITY_THRESHOLD_FIELD_NUMBER
    -
    static com.google.ortools.sat.SatParameters getDefaultInstance()
    - - - -
    .lang.Override Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
    - -
    Builder clearPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    +
    static com.google.ortools.sat.SatParameters getDefaultInstance()
    + + + +
    .lang.Override Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
    + +
    Builder clearPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    -
    Builder setUseOverloadCheckerInCumulativeConstraint(boolean value)
    - - +
    Builder setUseOverloadCheckerInCumulativeConstraint(boolean value)
    + +
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    - -
    static final int FILL_TIGHTENED_DOMAINS_IN_RESPONSE_FIELD_NUMBER
    - + +
    static final int FILL_TIGHTENED_DOMAINS_IN_RESPONSE_FIELD_NUMBER
    +
    .lang.Override com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
    -
    static final int SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER
    - - +
    static final int SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER
    + +
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    - - -
    Builder clearMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    + + +
    Builder clearMaxSatAssumptionOrder()
    optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [...
    - - -
    static com.google.ortools.sat.SatParameters parseFrom(java.nio.ByteBuffer data)
    + + +
    static com.google.ortools.sat.SatParameters parseFrom(java.nio.ByteBuffer data)
    - - -
    Builder setAutoDetectGreaterThanAtLeastOneOf(boolean value)
    -
    static final int USE_COMBINED_NO_OVERLAP_FIELD_NUMBER
    - - -
    Builder setInitialPolarity(com.google.ortools.sat.SatParameters.Polarity value)
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    - - + + +
    Builder setAutoDetectGreaterThanAtLeastOneOf(boolean value)
    +
    static final int USE_COMBINED_NO_OVERLAP_FIELD_NUMBER
    + + +
    Builder setInitialPolarity(com.google.ortools.sat.SatParameters.Polarity value)
    optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FAL...
    + + - - - + + +
    static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    -
    .lang.Override final boolean isInitialized()
    -
    Builder setPresolveProbingDeterministicTimeLimit(double value)
    -
    Builder clearPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    - - - +
    .lang.Override final boolean isInitialized()
    +
    Builder setPresolveProbingDeterministicTimeLimit(double value)
    +
    Builder clearPreferredVariableOrder()
    optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default =...
    + + +
    .lang.Deprecated static BinaryMinizationAlgorithm valueOf(int value)
    - -
    static final int STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER
    - + +
    static final int STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER
    +
    static final int MINIMIZE_WITH_PROPAGATION_NUM_DECISIONS_FIELD_NUMBER
    -
    static final int CP_MODEL_PROBING_LEVEL_FIELD_NUMBER
    - - - +
    static final int CP_MODEL_PROBING_LEVEL_FIELD_NUMBER
    + + + - - -
    static final int EXPLOIT_BEST_SOLUTION_FIELD_NUMBER
    + + +
    static final int EXPLOIT_BEST_SOLUTION_FIELD_NUMBER
    -
    boolean hasClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    - - - - +
    boolean hasClauseCleanupProtection()
    optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [defa...
    + + + + -
    Builder setBlockingRestartMultiplier(double value)
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    +
    Builder setBlockingRestartMultiplier(double value)
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    .lang.Deprecated static ClauseOrdering valueOf(int value)
    - - - - -
    double getRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    - + + + + +
    double getRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    +
    static final int PRESOLVE_BLOCKED_CLAUSE_FIELD_NUMBER
    static ConflictMinimizationAlgorithm valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    - - + +
    static VariableOrder valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
    - - -
    com.google.ortools.sat.SatParameters.ClauseOrdering getClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    - - + + +
    com.google.ortools.sat.SatParameters.ClauseOrdering getClauseCleanupOrdering()
    optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default ...
    + +
    static final int MAX_DETERMINISTIC_TIME_FIELD_NUMBER
    - + - - - - - + + + + +
    static final int CLAUSE_CLEANUP_TARGET_FIELD_NUMBER
    - - - -
    Builder mergeFrom(com.google.ortools.sat.SatParameters other)
    - + + + +
    Builder mergeFrom(com.google.ortools.sat.SatParameters other)
    +
    static com.google.protobuf.Internal.EnumLiteMap< MaxSatAssumptionOrder > internalGetValueMap()
    -
    Builder setBlockingRestartWindowSize(int value)
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    +
    Builder setBlockingRestartWindowSize(int value)
    optional int32 blocking_restart_window_size = 65 [default = 5000];
    final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
    - - + + - - + +
    static com.google.protobuf.Internal.EnumLiteMap< ClauseProtection > internalGetValueMap()
    - - - -
    Builder setLnsFocusOnDecisionVariables(boolean value)
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    -
    .lang.Override Builder newBuilderForType()
    + + + +
    Builder setLnsFocusOnDecisionVariables(boolean value)
    optional bool lns_focus_on_decision_variables = 105 [default = false];
    +
    .lang.Override Builder newBuilderForType()
    static final int PB_CLEANUP_INCREMENT_FIELD_NUMBER
    - +
    boolean hasRestartLbdAverageRatio()
    optional double restart_lbd_average_ratio = 71 [default = 1];
    com.google.protobuf.ByteString getDefaultRestartAlgorithmsBytes()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    - -
    boolean hasPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    - + +
    boolean hasPbCleanupRatio()
    optional double pb_cleanup_ratio = 47 [default = 0.5];
    +
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    -
    boolean hasMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    - +
    boolean hasMinimizeWithPropagationNumDecisions()
    optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
    +
    final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
    - - - - - - - + + + + + + +
    static final int PRESOLVE_PROBING_DETERMINISTIC_TIME_LIMIT_FIELD_NUMBER
    - +
    java.lang.String getDefaultRestartAlgorithms()
    optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,...
    - +
    boolean hasMaxVariableActivityValue()
    optional double max_variable_activity_value = 16 [default = 1e+100];
    - +
    double getBlockingRestartMultiplier()
    optional double blocking_restart_multiplier = 66 [default = 1.4];
    - +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver-members.html index a5d1394876..f95ab21aff 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver.html b/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver.html index c6261b5bda..2ed6bd8567 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1algorithms_1_1KnapsackSolver.html @@ -31,7 +31,6 @@
    @@ -50,7 +49,7 @@
    com.google.ortools.algorithms.KnapsackSolver Class Reference
    -

    Overview

    +

    Detailed Description

    This library solves knapsack problems.



    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment-members.html index 4f38585fb7..86bba47d01 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment-members.html @@ -31,7 +31,6 @@

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment.html index ad2ca2ead3..aee66ada55 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Assignment.html @@ -31,7 +31,6 @@
    @@ -49,31 +48,11 @@
    com.google.ortools.constraintsolver.Assignment Class Reference
    -

    Overview

    +

    Detailed Description

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

    Definition at line 14 of file Assignment.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.Assignment:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.Assignment:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement-members.html index c0d679e7e3..cfac767d76 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement.html index 1f2e595bef..cdbc9fc474 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentElement.html @@ -31,7 +31,6 @@ @@ -49,21 +48,10 @@
    com.google.ortools.constraintsolver.AssignmentElement Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file AssignmentElement.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.AssignmentElement:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer-members.html index 87225a89b3..d5c4053904 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer.html index 54358e4633..9161b90ae8 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntContainer.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.AssignmentIntContainer Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file AssignmentIntContainer.java.

    Public Member Functions

    synchronized void delete ()
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer-members.html index de895cd1e9..bbc20b380c 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer.html index 12d4bda361..54ab328968 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentIntervalContainer.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.AssignmentIntervalContainer Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file AssignmentIntervalContainer.java.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer-members.html index b0611ffe6b..2285c4467e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer.html index 488a5fb5af..679a2e1106 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1AssignmentSequenceContainer.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.AssignmentSequenceContainer Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file AssignmentSequenceContainer.java.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr-members.html index 3c89992c8c..efaa0cf93d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr.html index ba05193feb..9a4a19f527 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseIntExpr.html @@ -31,7 +31,6 @@ @@ -49,34 +48,12 @@
    com.google.ortools.constraintsolver.BaseIntExpr Class Reference
    -

    Overview

    +

    Detailed Description

    This is the base class for all expressions that are not variables.

    It provides a basic 'CastToVar()' implementation. The class of expressions represent two types of objects: variables and subclasses of BaseIntExpr. Variables are stateful objects that provide a rich API (remove values, WhenBound...). On the other hand, subclasses of BaseIntExpr represent range-only stateless objects. That is, min(A + B) is recomputed each time as min(A) + min(B). Furthermore, sometimes, the propagation on an expression is not complete, and Min(), Max() are not monotonic with respect to SetMin() and SetMax(). For instance, if A is a var with domain [0 .. 5], and B another variable with domain [0 .. 5], then Plus(A, B) has domain [0, 10]. If we apply SetMax(Plus(A, B), 4)), we will deduce that both A and B have domain [0 .. 4]. In that case, Max(Plus(A, B)) is 8 and not 4. To get back monotonicity, we 'cast' the expression into a variable using the Var() method (that will call CastToVar() internally). The resulting variable will be stateful and monotonic. Finally, one should never store a pointer to a IntExpr, or BaseIntExpr in the code. The safe code should always call Var() on an expression built by the solver, and store the object as an IntVar*. This is a consequence of the stateless nature of the expressions that makes the code error-prone.

    Definition at line 14 of file BaseIntExpr.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.BaseIntExpr:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.BaseIntExpr:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns-members.html index ab8a862ede..ff0e7e60f5 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns.html index c9692b59da..de94aa6c82 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseLns.html @@ -31,7 +31,6 @@ @@ -49,36 +48,12 @@
    com.google.ortools.constraintsolver.BaseLns Class Reference
    -

    Overview

    +

    Detailed Description

    This is the base class for building an Lns operator.

    An Lns fragment is a collection of variables which will be relaxed. Fragments are built with NextFragment(), which returns false if there are no more fragments to build. Optionally one can override InitFragments, which is called from LocalSearchOperator::Start to initialize fragment data. Here's a sample relaxing one variable at a time: class OneVarLns : public BaseLns { public: OneVarLns(const std::vector<IntVar*>& vars) : BaseLns(vars), index_(0) {} virtual ~OneVarLns() {} virtual void InitFragments() { index_ = 0; } virtual bool NextFragment() { const int size = Size(); if (index_ < size) { AppendToFragment(index_); ++index_; return true; } else { return false; } } private: int index_; };

    Definition at line 14 of file BaseLns.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.BaseLns:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.BaseLns:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject-members.html index 74c89b1612..f4c06956d4 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject.html index 9c6e052b52..3c4280c21c 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BaseObject.html @@ -31,7 +31,6 @@ @@ -49,68 +48,12 @@
    com.google.ortools.constraintsolver.BaseObject Class Reference
    -

    Overview

    +

    Detailed Description

    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 14 of file BaseObject.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.BaseObject:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter-members.html index 4140af71d9..cca1cff23e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter.html index 11eba6beab..eb0dfe8562 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BasePathFilter.html @@ -31,7 +31,6 @@ @@ -49,33 +48,11 @@
    com.google.ortools.constraintsolver.BasePathFilter Class Reference
    -

    Overview

    +

    Detailed Description

    Generic path-based filter class.

    Definition at line 14 of file BasePathFilter.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.BasePathFilter:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.BasePathFilter:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar-members.html index 5b5ab18172..e224b63675 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar.html index c1691836e2..17a66caa26 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1BooleanVar.html @@ -31,7 +31,6 @@ @@ -50,34 +49,10 @@
    com.google.ortools.constraintsolver.BooleanVar Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file BooleanVar.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.BooleanVar:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.BooleanVar:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter-members.html index da12e84ade..77de0e3f26 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter.html index c50734c7b2..dd2568a12e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CPFeasibilityFilter.html @@ -31,7 +31,6 @@ @@ -49,34 +48,12 @@
    com.google.ortools.constraintsolver.CPFeasibilityFilter Class Reference
    -

    Overview

    +

    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 14 of file CPFeasibilityFilter.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.CPFeasibilityFilter:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.CPFeasibilityFilter:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint-members.html index 70ab717b27..fe76732351 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint.html index b26a496806..25c6bb5d43 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CastConstraint.html @@ -31,7 +31,6 @@ @@ -49,34 +48,12 @@
    com.google.ortools.constraintsolver.CastConstraint Class Reference
    -

    Overview

    +

    Detailed Description

    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 14 of file CastConstraint.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.CastConstraint:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.CastConstraint:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue-members.html index 13acf9d7a4..67dbaee052 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue.html index 529f5cf33e..0c10021e1d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChangeValue.html @@ -31,7 +31,6 @@ @@ -49,36 +48,12 @@
    com.google.ortools.constraintsolver.ChangeValue Class Reference
    -

    Overview

    +

    Detailed Description

    Defines operators which change the value of variables; each neighbor corresponds to one modified variable.

    Sub-classes have to define ModifyValue which determines what the new variable value is going to be (given the current value and the variable).

    Definition at line 14 of file ChangeValue.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.ChangeValue:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.ChangeValue:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder-members.html index d7bdca43e4..925b20a98d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder.html index c7fee3d9a8..57545c1bb0 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestAdditionFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,37 +48,11 @@
    com.google.ortools.constraintsolver.CheapestAdditionFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Filtered-base decision builder based on the addition heuristic, extending a path from its start node with the cheapest arc.

    Definition at line 14 of file CheapestAdditionFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.CheapestAdditionFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.CheapestAdditionFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder-members.html index 20674a78c7..aae9a226a7 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder.html index 7b168c0e13..c678746fa7 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1CheapestInsertionFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,36 +48,10 @@
    com.google.ortools.constraintsolver.CheapestInsertionFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file CheapestInsertionFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.CheapestInsertionFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.CheapestInsertionFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder-members.html index edd0e57e60..2cb3aee103 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder.html index bee7f5eb03..86c9c72243 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ChristofidesFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,36 +48,12 @@
    com.google.ortools.constraintsolver.ChristofidesFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Christofides addition heuristic.

    Initially created to solve TSPs, extended to support any model by extending routes as much as possible following the path found by the heuristic, before starting a new route.

    Definition at line 14 of file ChristofidesFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.ChristofidesFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.ChristofidesFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html index 76a969a9d7..63c5cf7194 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html index f817fa251c..e396a8a07e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ComparatorCheapestAdditionFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,37 +48,11 @@
    com.google.ortools.constraintsolver.ComparatorCheapestAdditionFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    A CheapestAdditionFilteredDecisionBuilder where the notion of 'cheapest arc' comes from an arc comparator.

    Definition at line 14 of file ComparatorCheapestAdditionFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.ComparatorCheapestAdditionFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.ComparatorCheapestAdditionFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint-members.html index dc40c46f34..313bad16ef 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint.html index 6a71face17..ab78c146c6 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Constraint.html @@ -31,7 +31,6 @@ @@ -49,37 +48,12 @@
    com.google.ortools.constraintsolver.Constraint Class Reference
    -

    Overview

    +

    Detailed Description

    A constraint is the main modeling object.

    It provides two methods: - Post() is responsible for creating the demons and attaching them to immediate demons(). - 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 14 of file gen/com/google/ortools/constraintsolver/Constraint.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.Constraint:
    -
    -
    Inheritance graph
    - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.Constraint:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters-members.html index ec7bc95948..85e957b9f9 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters.html index e360c52d1f..7e0c20b6dd 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters.html @@ -31,7 +31,6 @@ @@ -52,34 +51,12 @@
    com.google.ortools.constraintsolver.ConstraintSolverParameters Class Reference
    -

    Overview

    +

    Detailed Description

     Solver parameters.
     

    Protobuf type

    operations_research.ConstraintSolverParameters

    Definition at line 13 of file ConstraintSolverParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.ConstraintSolverParameters:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.ConstraintSolverParameters:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder-members.html index 6520f48b39..e0b34f6d37 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder.html index 4fccf58d29..12c9bbfc91 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ConstraintSolverParameters_1_1Builder.html @@ -31,7 +31,6 @@ @@ -50,34 +49,12 @@
    com.google.ortools.constraintsolver.ConstraintSolverParameters.Builder Class Reference
    -

    Overview

    +

    Detailed Description

     Solver parameters.
     

    Protobuf type

    operations_research.ConstraintSolverParameters

    Definition at line 1173 of file ConstraintSolverParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.ConstraintSolverParameters.Builder:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.ConstraintSolverParameters.Builder:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Classes

    class  Builder
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision-members.html index 3a6068c3de..ec9f6441d7 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision.html index 7534cc2ca0..6bbf6bd5fa 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Decision.html @@ -31,7 +31,6 @@ @@ -49,30 +48,12 @@
    com.google.ortools.constraintsolver.Decision Class Reference
    -

    Overview

    +

    Detailed Description

    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 14 of file Decision.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.Decision:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.Decision:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    .lang.Override Builder clear ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder-members.html index f86498eeda..3548162b3f 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder.html index 97aba86583..aeb4497857 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,43 +48,12 @@
    com.google.ortools.constraintsolver.DecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    A DecisionBuilder is responsible for creating the search tree.

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

    Definition at line 14 of file DecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.DecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.DecisionBuilder:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor-members.html index 2cad1ffae4..3cefc45d1e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor.html index 49dc4f90fc..596cfb9a38 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DecisionVisitor.html @@ -31,7 +31,6 @@ @@ -49,31 +48,12 @@
    com.google.ortools.constraintsolver.DecisionVisitor Class Reference
    -

    Overview

    +

    Detailed Description

    A DecisionVisitor is used to inspect a decision.

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

    Definition at line 14 of file DecisionVisitor.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.DecisionVisitor:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.DecisionVisitor:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters-members.html index c5c5183837..11365f3f40 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters.html index 5e32233bb1..59fb8f2d54 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DefaultPhaseParameters.html @@ -31,7 +31,6 @@ @@ -50,7 +49,7 @@
    com.google.ortools.constraintsolver.DefaultPhaseParameters Class Reference
    -

    Overview

    +

    Detailed Description

    This struct holds all parameters for the default search.

    DefaultPhaseParameters is only used by Solver::MakeDefaultPhase methods. Note this is for advanced users only.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon-members.html index 14294a0ae1..6828f804ef 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon.html index b12b81d9c7..c504db539a 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Demon.html @@ -31,7 +31,6 @@
    @@ -49,30 +48,12 @@
    com.google.ortools.constraintsolver.Demon Class Reference
    -

    Overview

    +

    Detailed Description

    A Demon is the base element of a propagation queue.

    It is the main object responsible for implementing the actual propagation of the constraint and pruning the inconsistent values in the domains of the variables. The main concept is that demons are listeners that are attached to the variables and listen to their modifications. There are two methods: - Run() is the actual method called when the demon is processed. - priority() returns its priority. Standard priorities are slow, normal or fast. "immediate" is reserved for variables and is treated separately.

    Definition at line 14 of file Demon.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.Demon:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.Demon:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint-members.html index 14f4540dc6..c51e74cc02 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint.html index a00fdd161b..9233654357 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1DisjunctiveConstraint.html @@ -31,7 +31,6 @@ @@ -49,32 +48,10 @@
    com.google.ortools.constraintsolver.DisjunctiveConstraint Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 15 of file DisjunctiveConstraint.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.DisjunctiveConstraint:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.DisjunctiveConstraint:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html index 06dcd916d2..81e205b2ac 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html index b6edc7533c..17051b7b4d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1EvaluatorCheapestAdditionFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,37 +48,11 @@
    com.google.ortools.constraintsolver.EvaluatorCheapestAdditionFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    A CheapestAdditionFilteredDecisionBuilder where the notion of 'cheapest arc' comes from an arc evaluator.

    Definition at line 14 of file EvaluatorCheapestAdditionFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.EvaluatorCheapestAdditionFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.EvaluatorCheapestAdditionFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy-members.html index 6972445e5d..38989d2ab0 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy.html index 660e8a6dad..196d9fcfe4 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy.html @@ -31,7 +31,6 @@ @@ -51,34 +50,12 @@
    com.google.ortools.constraintsolver.FirstSolutionStrategy Class Reference
    -

    Overview

    +

    Detailed Description

     First solution strategies, used as starting point of local search.
     

    Protobuf type

    operations_research.FirstSolutionStrategy

    Definition at line 13 of file FirstSolutionStrategy.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.FirstSolutionStrategy:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.FirstSolutionStrategy:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder-members.html index 4b9534be44..a05070b4e5 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder.html index f4bbc7e7af..caad41f6e3 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1FirstSolutionStrategy_1_1Builder.html @@ -31,7 +31,6 @@ @@ -50,34 +49,12 @@
    com.google.ortools.constraintsolver.FirstSolutionStrategy.Builder Class Reference
    -

    Overview

    +

    Detailed Description

     First solution strategies, used as starting point of local search.
     

    Protobuf type

    operations_research.FirstSolutionStrategy

    Definition at line 676 of file FirstSolutionStrategy.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.FirstSolutionStrategy.Builder:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.FirstSolutionStrategy.Builder:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Classes

    class  Builder
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html index 4958b54376..62f6635988 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html index 969ae640e3..4d5241fddd 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalCheapestInsertionFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,38 +48,12 @@
    com.google.ortools.constraintsolver.GlobalCheapestInsertionFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Filter-based decision builder which builds a solution by inserting nodes at their cheapest position on any route; potentially several routes can be built in parallel.

    The cost of a position is computed from an arc-based cost callback. The node selected for insertion is the one which minimizes insertion cost. If a non null penalty evaluator is passed, making nodes unperformed is also taken into account with the corresponding penalty cost.

    Definition at line 14 of file GlobalCheapestInsertionFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.GlobalCheapestInsertionFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.GlobalCheapestInsertionFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - - -
    [legend]
    -

    Public Member Functions

    .lang.Override Builder clear ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint-members.html index 7e69bb9171..e768f1f9e2 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint.html index c9a1634191..485b98ad0e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1GlobalVehicleBreaksConstraint.html @@ -31,7 +31,6 @@ @@ -49,34 +48,12 @@
    com.google.ortools.constraintsolver.GlobalVehicleBreaksConstraint Class Reference
    -

    Overview

    +

    Detailed Description

    GlobalVehicleBreaksConstraint ensures breaks constraints are enforced on all vehicles in the dimension passed to its constructor.

    It is intended to be used for dimensions representing time. A break constraint ensures break intervals fit on the route of a vehicle. For a given vehicle, it forces break intervals to be disjoint from visit intervals, where visit intervals start at CumulVar(node) and last for node_visit_transit[node]. Moreover, it ensures that there is enough time between two consecutive nodes of a route to do transit and vehicle breaks, i.e. if Next(nodeA) = nodeB, CumulVar(nodeA) = tA and CumulVar(nodeB) = tB, then SlackVar(nodeA) >= sum_{breaks [tA, tB)} duration(break).

    Definition at line 14 of file GlobalVehicleBreaksConstraint.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.GlobalVehicleBreaksConstraint:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.GlobalVehicleBreaksConstraint:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr-members.html index 52e1169bec..6148aaef23 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr.html index a1ae0d8351..928d650856 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntExpr.html @@ -31,7 +31,6 @@ @@ -49,35 +48,12 @@
    com.google.ortools.constraintsolver.IntExpr Class Reference
    -

    Overview

    +

    Detailed Description

    The class IntExpr is the base of all integer expressions in constraint programming.

    It contains the basic protocol for an expression: - setting and modifying its bound - querying if it is bound - listening to events modifying its bounds - casting it into a variable (instance of IntVar)

    Definition at line 14 of file IntExpr.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntExpr:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntExpr:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet-members.html index cffc9becbd..9a37420a6d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet.html index 770880e9af..9be0d582be 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntTupleSet.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.IntTupleSet Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file IntTupleSet.java.

    Public Member Functions

    synchronized void delete ()
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar-members.html index e437072713..6aa003b540 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar.html index 987a0e0bd6..042088ffbb 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVar.html @@ -31,7 +31,6 @@ @@ -49,35 +48,12 @@
    com.google.ortools.constraintsolver.IntVar Class Reference
    -

    Overview

    +

    Detailed Description

    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 14 of file gen/com/google/ortools/constraintsolver/IntVar.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntVar:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntVar:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement-members.html index 38d49a32c3..ef5e7e5768 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement.html index 3c7e73ae45..be0936dd00 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarElement.html @@ -31,7 +31,6 @@ @@ -49,28 +48,10 @@
    com.google.ortools.constraintsolver.IntVarElement Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file IntVarElement.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntVarElement:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntVarElement:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder-members.html index 8a28c45ab0..4ee7ed41bb 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder.html index 322c8e0458..358e682df3 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,43 +48,12 @@
    com.google.ortools.constraintsolver.IntVarFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Decision builders building a solution using local search filters to evaluate its feasibility.

    This is very fast but can eventually fail when the solution is restored if filters did not detect all infeasiblities. More details: Using local search filters to build a solution. The approach is pretty straight-forward: have a general assignment storing the current solution, build delta assigment representing possible extensions to the current solution and validate them with filters. The tricky bit comes from using the assignment and filter APIs in a way which avoids the lazy creation of internal hash_maps between variables and indices. Generic filter-based decision builder applied to IntVars. when the code is mature enough.

    Definition at line 14 of file IntVarFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntVarFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntVarFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator-members.html index 37b86120b6..8f5fe4cd92 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator.html index a198fd9ccc..bc191f6393 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarIterator.html @@ -31,7 +31,6 @@ @@ -49,30 +48,12 @@
    com.google.ortools.constraintsolver.IntVarIterator Class Reference
    -

    Overview

    +

    Detailed Description

    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 14 of file IntVarIterator.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntVarIterator:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntVarIterator:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter-members.html index 0d529dce27..feebebb618 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter.html index 69778eb5f6..db2f9ad2d5 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchFilter.html @@ -31,7 +31,6 @@ @@ -49,32 +48,10 @@
    com.google.ortools.constraintsolver.IntVarLocalSearchFilter Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 15 of file IntVarLocalSearchFilter.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntVarLocalSearchFilter:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntVarLocalSearchFilter:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler-members.html index 40eaba4e90..a875de1192 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler.html index 665d15c4e5..cfa6848d7c 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchHandler.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.IntVarLocalSearchHandler Class Reference
    -

    Overview

    +

    Detailed Description

    Base operator class for operators manipulating IntVars.

    Definition at line 14 of file IntVarLocalSearchHandler.java.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator-members.html index 18e2efbb3a..925de19076 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator.html index 0f6af09980..2fd93dac8d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperator.html @@ -31,7 +31,6 @@
    @@ -49,36 +48,10 @@
    com.google.ortools.constraintsolver.IntVarLocalSearchOperator Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file IntVarLocalSearchOperator.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntVarLocalSearchOperator:
    -
    -
    Inheritance graph
    - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntVarLocalSearchOperator:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate-members.html index 93a1d84af4..50606160ca 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate.html index f5fd241c49..0567ad78d0 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntVarLocalSearchOperatorTemplate.html @@ -31,7 +31,6 @@ @@ -49,36 +48,11 @@
    com.google.ortools.constraintsolver.IntVarLocalSearchOperatorTemplate Class Reference
    -

    Overview

    +

    Detailed Description

    Base operator class for operators manipulating variables.

    Definition at line 14 of file IntVarLocalSearchOperatorTemplate.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntVarLocalSearchOperatorTemplate:
    -
    -
    Inheritance graph
    - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntVarLocalSearchOperatorTemplate:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar-members.html index c92d278549..2cba39524f 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar.html index b0c9afd52f..c73da2f2d7 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVar.html @@ -31,7 +31,6 @@ @@ -50,32 +49,12 @@
    com.google.ortools.constraintsolver.IntervalVar Class Reference
    -

    Overview

    +

    Detailed Description

    Interval variables are often used in scheduling.

    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 14 of file gen/com/google/ortools/constraintsolver/IntervalVar.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntervalVar:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntervalVar:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement-members.html index 871b795aac..898a24f401 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement.html index e05a5f0ab1..17c944c083 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1IntervalVarElement.html @@ -31,7 +31,6 @@ @@ -49,28 +48,10 @@
    com.google.ortools.constraintsolver.IntervalVarElement Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file IntervalVarElement.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.IntervalVarElement:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.IntervalVarElement:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder-members.html index 4542530da1..3c208ff3e2 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder.html index 7e1205136d..2bf84b6707 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1JavaDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,32 +48,12 @@
    com.google.ortools.constraintsolver.JavaDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    This class acts as a intermediate step between a c++ decision builder and a java one.

    Its main purpose is to catch the java exception launched when a failure occurs during the Next() call, and to return silently a FailDecision that will propagate the failure back to the C++ code.

    Definition at line 23 of file JavaDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.JavaDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.JavaDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html index 2621bef765..3cf259b210 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder.html index ec151bf307..9c353809e5 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalCheapestInsertionFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,38 +48,12 @@
    com.google.ortools.constraintsolver.LocalCheapestInsertionFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Filter-base decision builder which builds a solution by inserting nodes at their cheapest position.

    The cost of a position is computed an arc-based cost callback. Node selected for insertion are considered in decreasing order of distance to the start/ends of the routes, i.e. farthest nodes are inserted first.

    Definition at line 14 of file LocalCheapestInsertionFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.LocalCheapestInsertionFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.LocalCheapestInsertionFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - - -
    [legend]
    -

    Public Member Functions

    final Decision nextWrap (Solver solver)
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter-members.html index 2dbd8f3c24..56a5d67b31 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter.html index fc32bf18e9..6b2dade5e1 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchFilter.html @@ -31,7 +31,6 @@ @@ -49,32 +48,11 @@
    com.google.ortools.constraintsolver.LocalSearchFilter Class Reference
    -

    Overview

    +

    Detailed Description

    Local Search Filters are used for fast neighbor pruning.

    Definition at line 14 of file LocalSearchFilter.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.LocalSearchFilter:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.LocalSearchFilter:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic-members.html index 6920adf68d..352b9df609 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic.html index 5a4cf8e5d4..89cbfe75b0 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic.html @@ -31,7 +31,6 @@ @@ -51,35 +50,13 @@
    com.google.ortools.constraintsolver.LocalSearchMetaheuristic Class Reference
    -

    Overview

    +

    Detailed Description

     Local search metaheuristics used to guide the search. Apart from greedy
     descent, they will try to escape local minima.
     

    Protobuf type

    operations_research.LocalSearchMetaheuristic

    Definition at line 14 of file LocalSearchMetaheuristic.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.LocalSearchMetaheuristic:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.LocalSearchMetaheuristic:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder-members.html index 86334738d2..f0b050ef6b 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder.html index 19b9c09e6c..db65dffc19 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMetaheuristic_1_1Builder.html @@ -31,7 +31,6 @@ @@ -50,35 +49,13 @@
    com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Builder Class Reference
    -

    Overview

    +

    Detailed Description

     Local search metaheuristics used to guide the search. Apart from greedy
     descent, they will try to escape local minima.
     

    Protobuf type

    operations_research.LocalSearchMetaheuristic

    Definition at line 457 of file LocalSearchMetaheuristic.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Builder:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Builder:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Classes

    class  Builder
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor-members.html index 06c8286281..0d3a8f1e39 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor.html index 0b563ccf17..804ff58bc6 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchMonitor.html @@ -31,7 +31,6 @@ @@ -50,30 +49,10 @@
    com.google.ortools.constraintsolver.LocalSearchMonitor Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file LocalSearchMonitor.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.LocalSearchMonitor:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.LocalSearchMonitor:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    .lang.Override Builder clear ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator-members.html index 4c68a591a2..6fff90f5a4 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator.html index ebbc0fabef..145c93aff9 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchOperator.html @@ -31,7 +31,6 @@ @@ -49,38 +48,12 @@
    com.google.ortools.constraintsolver.LocalSearchOperator Class Reference
    -

    Overview

    +

    Detailed Description

    This class represent a reversible FIFO structure.

    The main difference w.r.t a standard FIFO structure is that a Solver is given as parameter to the modifiers such that the solver can store the backtrack information Iterator's traversing order should not be changed, as some algorithm depend on it to be consistent. It's main use is to store a list of demons in the various classes of variables. The base class for all local search operators. A local search operator is an object that defines the neighborhood of a solution. In other words, a neighborhood is the set of solutions which can be reached from a given solution using an operator. The behavior of the LocalSearchOperator class is similar to iterators. The operator is synchronized with an assignment (gives the current values of the variables); this is done in the Start() method. Then one can iterate over the neighbors using the MakeNextNeighbor method. This method returns an assignment which represents the incremental changes to the current solution. It also returns a second assignment representing the changes to the last solution defined by the neighborhood operator; this assignment is empty if the neighborhood operator cannot track this information.

    Definition at line 14 of file LocalSearchOperator.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.LocalSearchOperator:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.LocalSearchOperator:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters-members.html index 1aac889922..9826cd1329 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters.html index e0b8e40893..d86e1abcc4 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1LocalSearchPhaseParameters.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.LocalSearchPhaseParameters Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file LocalSearchPhaseParameters.java.

    Public Member Functions

    synchronized void delete ()
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache-members.html index b05d2e0829..a58b28093a 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache.html index ca529fbbc5..db321391b7 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelCache.html @@ -31,7 +31,6 @@ @@ -50,7 +49,7 @@
    com.google.ortools.constraintsolver.ModelCache Class Reference
    -

    Overview

    +

    Detailed Description

    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.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor-members.html index 5a91e6413a..ede5d4adac 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor.html index a8ca112475..846be805f3 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ModelVisitor.html @@ -31,7 +31,6 @@
    @@ -50,29 +49,11 @@
    com.google.ortools.constraintsolver.ModelVisitor Class Reference
    -

    Overview

    +

    Detailed Description

    Model visitor.

    Definition at line 14 of file ModelVisitor.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.ModelVisitor:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.ModelVisitor:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar-members.html index 3703907158..c45ac8d8bb 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar.html index e60e14e719..5581c9b2ae 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1OptimizeVar.html @@ -31,7 +31,6 @@ @@ -50,32 +49,12 @@
    com.google.ortools.constraintsolver.OptimizeVar Class Reference
    -

    Overview

    +

    Detailed Description

    This class encapsulates an objective.

    It requires the direction (minimize or maximize), the variable to optimize, and the improvement step.

    Definition at line 14 of file OptimizeVar.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.OptimizeVar:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.OptimizeVar:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack-members.html index e544d3537a..76b91f8a8d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack.html index 55ca3085b7..49435d5e21 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1Pack.html @@ -31,7 +31,6 @@ @@ -49,32 +48,10 @@
    com.google.ortools.constraintsolver.Pack Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 18 of file Pack.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.Pack:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.Pack:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder-members.html index b94114121e..b8c11408a9 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder.html index b34d90dff1..cbe0674595 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1ParallelSavingsFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,36 +48,10 @@
    com.google.ortools.constraintsolver.ParallelSavingsFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file ParallelSavingsFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.ParallelSavingsFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.ParallelSavingsFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator-members.html index 0a4b5bd85f..485aab415d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator.html index 422dd7a727..d492c4adaf 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathOperator.html @@ -31,7 +31,6 @@ @@ -49,37 +48,12 @@
    com.google.ortools.constraintsolver.PathOperator Class Reference
    -

    Overview

    +

    Detailed Description

    Base class of the local search operators dedicated to path modifications (a path is a set of nodes linked together by arcs).

    This family of neighborhoods supposes they are handling next variables representing the arcs (var[i] represents the node immediately after i on a path). Several services are provided: - arc manipulators (SetNext(), ReverseChain(), MoveChain()) - path inspectors (Next(), IsPathEnd()) - path iterators: operators need a given number of nodes to define a neighbor; this class provides the iteration on a given number of (base) nodes which can be used to define a neighbor (through the BaseNode method) Subclasses only need to override MakeNeighbor to create neighbors using the services above (no direct manipulation of assignments).

    Definition at line 18 of file PathOperator.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.PathOperator:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.PathOperator:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator-members.html index d603b6c969..69ed7956c7 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator.html index 2e2fcb757a..c9dc5b820b 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PathWithPreviousNodesOperator.html @@ -31,7 +31,6 @@ @@ -49,37 +48,11 @@
    com.google.ortools.constraintsolver.PathWithPreviousNodesOperator Class Reference
    -

    Overview

    +

    Detailed Description

    Simple PathOperator wrapper that also stores the current previous nodes, and is thus able to provide the "Prev" and "IsPathStart" functions.

    Definition at line 14 of file PathWithPreviousNodesOperator.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.PathWithPreviousNodesOperator:
    -
    -
    Inheritance graph
    - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.PathWithPreviousNodesOperator:
    -
    -
    Collaboration graph
    - - - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject-members.html index c363c6547a..854892ccb1 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject.html index 8f28bfec7d..5aefb6cffb 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationBaseObject.html @@ -31,7 +31,6 @@ @@ -49,43 +48,12 @@
    com.google.ortools.constraintsolver.PropagationBaseObject Class Reference
    -

    Overview

    +

    Detailed Description

    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 14 of file PropagationBaseObject.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.PropagationBaseObject:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.PropagationBaseObject:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor-members.html index 18aef3feff..f9f6c3a38f 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor.html index e6b2d11a61..e54a3c1982 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1PropagationMonitor.html @@ -31,7 +31,6 @@ @@ -50,30 +49,10 @@
    com.google.ortools.constraintsolver.PropagationMonitor Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 11 of file PropagationMonitor.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.PropagationMonitor:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.PropagationMonitor:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit-members.html index c33ab135a9..d70ffabac0 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit.html index 578656fa83..cd140c219f 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimit.html @@ -31,7 +31,6 @@ @@ -50,33 +49,11 @@
    com.google.ortools.constraintsolver.RegularLimit Class Reference
    -

    Overview

    +

    Detailed Description

    Usual limit based on wall_time, number of explored branches and number of failures in the search tree.

    Definition at line 14 of file RegularLimit.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RegularLimit:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RegularLimit:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters-members.html index d36c391546..be38fbfa23 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters.html index c043e4e16c..84232cc1f6 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters.html @@ -31,7 +31,6 @@ @@ -52,35 +51,13 @@
    com.google.ortools.constraintsolver.RegularLimitParameters Class Reference
    -

    Overview

    +

    Detailed Description

     A search limit
     The default values for int64 fields is the maxima value, i.e., 2^63-1
     

    Protobuf type

    operations_research.RegularLimitParameters

    Definition at line 14 of file RegularLimitParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RegularLimitParameters:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RegularLimitParameters:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Public Member Functions

    synchronized void delete ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder-members.html index 084c1dc92e..d97761025a 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder.html index 618a8a99a1..23649008f7 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RegularLimitParameters_1_1Builder.html @@ -31,7 +31,6 @@ @@ -50,35 +49,13 @@
    com.google.ortools.constraintsolver.RegularLimitParameters.Builder Class Reference
    -

    Overview

    +

    Detailed Description

     A search limit
     The default values for int64 fields is the maxima value, i.e., 2^63-1
     

    Protobuf type

    operations_research.RegularLimitParameters

    Definition at line 396 of file RegularLimitParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RegularLimitParameters.Builder:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RegularLimitParameters.Builder:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Classes

    class  Builder
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool-members.html index da3f6fdfb1..92f74b85dd 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool.html index bb70b20a85..97d7855f75 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevBool.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.RevBool Class Reference
    -

    Overview

    +

    Detailed Description

    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.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger-members.html index c807768970..81c9d40bbf 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger.html index 124ee890a5..483de43193 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevInteger.html @@ -31,7 +31,6 @@
    @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.RevInteger Class Reference
    -

    Overview

    +

    Detailed Description

    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.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong-members.html index 46684cb336..c9c413aa69 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong.html index 0d3ef6f7a5..1ae70e6ce6 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevLong.html @@ -31,7 +31,6 @@
    @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.RevLong Class Reference
    -

    Overview

    +

    Detailed Description

    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.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence-members.html index a81dfe1faf..04183cbd2a 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence.html index 2e1e002200..b38ca3784e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RevPartialSequence.html @@ -31,7 +31,6 @@
    @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.RevPartialSequence Class Reference
    -

    Overview

    +

    Detailed Description

    --— RevPartialSequence --—

    Definition at line 14 of file RevPartialSequence.java.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension-members.html index 5f7148d9ae..cff6e56971 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension.html index 982a54c19d..3f875b340d 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingDimension.html @@ -31,7 +31,6 @@
    @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.RoutingDimension Class Reference
    -

    Overview

    +

    Detailed Description

    Dimensions represent quantities accumulated at nodes along the routes.

    They represent quantities such as weights or volumes carried along the route, or distance or times. Quantities at a node are represented by "cumul" variables and the increase or decrease of quantities between nodes are represented by "transit" variables. These variables are linked as follows: if j == next(i), cumuls(j) = cumuls(i) + transits(i) + slacks(i) + state_dependent_transits(i) where slack is a positive slack variable (can represent waiting times for a time dimension), and state_dependent_transits is a non-purely functional version of transits_. Favour transits over state_dependent_transits when possible, because purely functional callbacks allow more optimisations and make the model faster and easier to solve. for a given vehicle, it is passed as an external vector, it would be better to have this information here.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums-members.html index c1bee2325f..e625cdf58b 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums-members.html @@ -31,7 +31,6 @@
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums.html index f5308dc047..b4ad7deb60 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingEnums.html @@ -31,7 +31,6 @@
    @@ -48,7 +47,7 @@
    com.google.ortools.constraintsolver.RoutingEnums Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 6 of file RoutingEnums.java.

    Public Member Functions

    .lang.Override Builder clear ()
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder-members.html index 8d8c014cdf..976fd616ee 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder.html index fd46b6200a..7f38847688 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingFilteredDecisionBuilder.html @@ -31,7 +31,6 @@ @@ -49,43 +48,11 @@
    com.google.ortools.constraintsolver.RoutingFilteredDecisionBuilder Class Reference
    -

    Overview

    +

    Detailed Description

    Filter-based decision builder dedicated to routing.

    Definition at line 14 of file RoutingFilteredDecisionBuilder.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RoutingFilteredDecisionBuilder:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RoutingFilteredDecisionBuilder:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager-members.html index f378ff4554..6f2132b941 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager.html index 46e2a2e67d..a55bd83f84 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingIndexManager.html @@ -31,7 +31,6 @@ @@ -49,7 +48,7 @@
    com.google.ortools.constraintsolver.RoutingIndexManager Class Reference
    -

    Overview

    +

    Detailed Description

    Manager for any NodeIndex <-> variable index conversion.

    The routing solver uses variable indices internally and through its API. These variable indices are tricky to manage directly because one Node can correspond to a multitude of variables, depending on the number of times they appear in the model, and if they're used as start and/or end points. This class aims to simplify variable index usage, allowing users to use NodeIndex instead. Usage: .cpp} auto starts_ends = ...; /// These are NodeIndex. RoutingIndexManager manager(10, 4, starts_ends); // 10 nodes, 4 vehicles. RoutingModel model(manager);

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModel-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModel-members.html index dc8bcd5760..a65fad96b1 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModel-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModel-members.html @@ -31,7 +31,6 @@
    @@ -147,48 +146,49 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Member Functions

    synchronized void delete ()
    readAssignment(String file_name)com.google.ortools.constraintsolver.RoutingModelinline
    readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices)com.google.ortools.constraintsolver.RoutingModelinline
    registerPositiveTransitCallback(LongBinaryOperator callback)com.google.ortools.constraintsolver.RoutingModelinline
    registerTransitCallback(LongBinaryOperator callback)com.google.ortools.constraintsolver.RoutingModelinline
    registerUnaryTransitCallback(LongUnaryOperator callback)com.google.ortools.constraintsolver.RoutingModelinline
    RemainingTime()com.google.ortools.constraintsolver.RoutingModelinline
    restoreAssignment(Assignment solution)com.google.ortools.constraintsolver.RoutingModelinline
    routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment)com.google.ortools.constraintsolver.RoutingModelinline
    ROUTING_FAILcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_FAIL_TIMEOUTcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_INVALIDcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_NOT_SOLVEDcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_SUCCESScom.google.ortools.constraintsolver.RoutingModelstatic
    RoutingModel(long cPtr, boolean cMemoryOwn)com.google.ortools.constraintsolver.RoutingModelinlineprotected
    RoutingModel(RoutingIndexManager index_manager)com.google.ortools.constraintsolver.RoutingModelinline
    RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters)com.google.ortools.constraintsolver.RoutingModelinline
    setAllowedVehiclesForIndex(int[] vehicles, long index)com.google.ortools.constraintsolver.RoutingModelinline
    setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor)com.google.ortools.constraintsolver.RoutingModelinline
    setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setArcCostEvaluatorOfAllVehicles(int evaluator_index)com.google.ortools.constraintsolver.RoutingModelinline
    setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment)com.google.ortools.constraintsolver.RoutingModelinline
    setFirstSolutionEvaluator(LongBinaryOperator evaluator)com.google.ortools.constraintsolver.RoutingModelinline
    setFixedCostOfAllVehicles(long cost)com.google.ortools.constraintsolver.RoutingModelinline
    setFixedCostOfVehicle(long cost, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setPickupAndDeliveryPolicyOfAllVehicles(int policy)com.google.ortools.constraintsolver.RoutingModelinline
    setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setPrimaryConstrainedDimension(String dimension_name)com.google.ortools.constraintsolver.RoutingModelinline
    setVisitType(long index, int type)com.google.ortools.constraintsolver.RoutingModelinline
    size()com.google.ortools.constraintsolver.RoutingModelinline
    solve(Assignment assignment)com.google.ortools.constraintsolver.RoutingModelinline
    solve()com.google.ortools.constraintsolver.RoutingModelinline
    solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)com.google.ortools.constraintsolver.RoutingModelinline
    solver()com.google.ortools.constraintsolver.RoutingModelinline
    solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)com.google.ortools.constraintsolver.RoutingModelinline
    start(int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    status()com.google.ortools.constraintsolver.RoutingModelinline
    unperformedPenalty(long var_index)com.google.ortools.constraintsolver.RoutingModelinline
    unperformedPenaltyOrValue(long default_value, long var_index)com.google.ortools.constraintsolver.RoutingModelinline
    VehicleCostsConsideredVar(int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    VehicleIndex(int index)com.google.ortools.constraintsolver.RoutingModelinline
    vehicles()com.google.ortools.constraintsolver.RoutingModelinline
    vehicleVar(long index)com.google.ortools.constraintsolver.RoutingModelinline
    vehicleVars()com.google.ortools.constraintsolver.RoutingModelinline
    writeAssignment(String file_name)com.google.ortools.constraintsolver.RoutingModelinline
    RegisterPositiveUnaryTransitCallback(LongUnaryOperator callback)com.google.ortools.constraintsolver.RoutingModelinline
    registerTransitCallback(LongBinaryOperator callback)com.google.ortools.constraintsolver.RoutingModelinline
    registerUnaryTransitCallback(LongUnaryOperator callback)com.google.ortools.constraintsolver.RoutingModelinline
    RemainingTime()com.google.ortools.constraintsolver.RoutingModelinline
    restoreAssignment(Assignment solution)com.google.ortools.constraintsolver.RoutingModelinline
    routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment)com.google.ortools.constraintsolver.RoutingModelinline
    ROUTING_FAILcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_FAIL_TIMEOUTcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_INVALIDcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_NOT_SOLVEDcom.google.ortools.constraintsolver.RoutingModelstatic
    ROUTING_SUCCESScom.google.ortools.constraintsolver.RoutingModelstatic
    RoutingModel(long cPtr, boolean cMemoryOwn)com.google.ortools.constraintsolver.RoutingModelinlineprotected
    RoutingModel(RoutingIndexManager index_manager)com.google.ortools.constraintsolver.RoutingModelinline
    RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters)com.google.ortools.constraintsolver.RoutingModelinline
    setAllowedVehiclesForIndex(int[] vehicles, long index)com.google.ortools.constraintsolver.RoutingModelinline
    setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor)com.google.ortools.constraintsolver.RoutingModelinline
    setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setArcCostEvaluatorOfAllVehicles(int evaluator_index)com.google.ortools.constraintsolver.RoutingModelinline
    setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment)com.google.ortools.constraintsolver.RoutingModelinline
    setFirstSolutionEvaluator(LongBinaryOperator evaluator)com.google.ortools.constraintsolver.RoutingModelinline
    setFixedCostOfAllVehicles(long cost)com.google.ortools.constraintsolver.RoutingModelinline
    setFixedCostOfVehicle(long cost, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setPickupAndDeliveryPolicyOfAllVehicles(int policy)com.google.ortools.constraintsolver.RoutingModelinline
    setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    setPrimaryConstrainedDimension(String dimension_name)com.google.ortools.constraintsolver.RoutingModelinline
    setVisitType(long index, int type)com.google.ortools.constraintsolver.RoutingModelinline
    size()com.google.ortools.constraintsolver.RoutingModelinline
    solve(Assignment assignment)com.google.ortools.constraintsolver.RoutingModelinline
    solve()com.google.ortools.constraintsolver.RoutingModelinline
    solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)com.google.ortools.constraintsolver.RoutingModelinline
    solver()com.google.ortools.constraintsolver.RoutingModelinline
    solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)com.google.ortools.constraintsolver.RoutingModelinline
    start(int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    status()com.google.ortools.constraintsolver.RoutingModelinline
    unperformedPenalty(long var_index)com.google.ortools.constraintsolver.RoutingModelinline
    unperformedPenaltyOrValue(long default_value, long var_index)com.google.ortools.constraintsolver.RoutingModelinline
    VehicleCostsConsideredVar(int vehicle)com.google.ortools.constraintsolver.RoutingModelinline
    VehicleIndex(int index)com.google.ortools.constraintsolver.RoutingModelinline
    vehicles()com.google.ortools.constraintsolver.RoutingModelinline
    vehicleVar(long index)com.google.ortools.constraintsolver.RoutingModelinline
    vehicleVars()com.google.ortools.constraintsolver.RoutingModelinline
    writeAssignment(String file_name)com.google.ortools.constraintsolver.RoutingModelinline
    @@ -51,7 +50,7 @@
    com.google.ortools.constraintsolver.RoutingModel Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 18 of file RoutingModel.java.

    @@ -67,6 +66,8 @@ Public Member Functions + + @@ -601,7 +602,7 @@ Protected Member Functions

    Returns the active variable of the node corresponding to index.

    -

    Definition at line 715 of file RoutingModel.java.

    +

    Definition at line 719 of file RoutingModel.java.

    @@ -632,7 +633,7 @@ Protected Member Functions

    Adds a callback called each time a solution is found during the search.

    This is a shortcut to creating a monitor to call the callback on AtSolution() and adding it with AddSearchMonitor.

    -

    Definition at line 430 of file RoutingModel.java.

    +

    Definition at line 434 of file RoutingModel.java.

    @@ -682,7 +683,7 @@ Protected Member Functions
    int registerUnaryTransitCallback (LongUnaryOperator callback)
     Registers 'callback' and returns its index. More...
     
    int RegisterPositiveUnaryTransitCallback (LongUnaryOperator callback)
     
    int registerTransitCallback (LongBinaryOperator callback)
     
    int registerPositiveTransitCallback (LongBinaryOperator callback)
    -

    Definition at line 119 of file RoutingModel.java.

    +

    Definition at line 123 of file RoutingModel.java.

    @@ -741,7 +742,7 @@ Protected Member Functions

    Creates a dimension where the transit variable is constrained to be equal to 'value'; 'capacity' is the upper bound of the cumul variables.

    'name' is the name used to reference the dimension; this name is used to get cumul and transit variables from the routing model. Returns false if a dimension with the same name has already been created (and doesn't create the new dimension).

    -

    Definition at line 115 of file RoutingModel.java.

    +

    Definition at line 119 of file RoutingModel.java.

    @@ -800,7 +801,7 @@ Protected Member Functions

    Model creation Methods to add dimensions to routes; dimensions represent quantities accumulated at nodes along the routes.

    They represent quantities such as weights or volumes carried along the route, or distance or times. Quantities at a node are represented by "cumul" variables and the increase or decrease of quantities between nodes are represented by "transit" variables. These variables are linked as follows: if j == next(i), cumul(j) = cumul(i) + transit(i) + slack(i) where slack is a positive slack variable (can represent waiting times for a time dimension). Setting the value of fix_start_cumul_to_zero to true will force the "cumul" variable of the start node of all vehicles to be equal to 0. Creates a dimension where the transit variable is constrained to be equal to evaluator(i, next(i)); 'slack_max' is the upper bound of the slack variable and 'capacity' is the upper bound of the cumul variables. 'name' is the name used to reference the dimension; this name is used to get cumul and transit variables from the routing model. Returns false if a dimension with the same name has already been created (and doesn't create the new dimension). Takes ownership of the callback 'evaluator'.

    -

    Definition at line 96 of file RoutingModel.java.

    +

    Definition at line 100 of file RoutingModel.java.

    @@ -856,7 +857,7 @@ Protected Member Functions
    -

    Definition at line 104 of file RoutingModel.java.

    +

    Definition at line 108 of file RoutingModel.java.

    @@ -912,7 +913,7 @@ Protected Member Functions
    -

    Definition at line 108 of file RoutingModel.java.

    +

    Definition at line 112 of file RoutingModel.java.

    @@ -968,7 +969,7 @@ Protected Member Functions
    -

    Definition at line 100 of file RoutingModel.java.

    +

    Definition at line 104 of file RoutingModel.java.

    @@ -1015,7 +1016,7 @@ Protected Member Functions

    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.

    Start and end indices of any vehicle cannot be part of a disjunction. If a penalty is given, at most 'max_cardinality' of the indices can be active, and if less are active, 'penalty' is payed per inactive index. This is equivalent to adding the constraint: p + Sum(i)active[i] == max_cardinality where p is an integer variable, and the following cost to the cost function: p * penalty. 'penalty' must be positive to make the disjunction optional; a negative penalty will force 'max_cardinality' indices of the disjunction to be performed, and therefore p == 0. Note: passing a vector with a single index will model an optional index with a penalty cost if it is not visited.

    -

    Definition at line 188 of file RoutingModel.java.

    +

    Definition at line 192 of file RoutingModel.java.

    @@ -1056,7 +1057,7 @@ Protected Member Functions

    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.

    Start and end indices of any vehicle cannot be part of a disjunction. If a penalty is given, at most 'max_cardinality' of the indices can be active, and if less are active, 'penalty' is payed per inactive index. This is equivalent to adding the constraint: p + Sum(i)active[i] == max_cardinality where p is an integer variable, and the following cost to the cost function: p * penalty. 'penalty' must be positive to make the disjunction optional; a negative penalty will force 'max_cardinality' indices of the disjunction to be performed, and therefore p == 0. Note: passing a vector with a single index will model an optional index with a penalty cost if it is not visited.

    -

    Definition at line 195 of file RoutingModel.java.

    +

    Definition at line 199 of file RoutingModel.java.

    @@ -1087,7 +1088,7 @@ Protected Member Functions

    Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.

    Start and end indices of any vehicle cannot be part of a disjunction. If a penalty is given, at most 'max_cardinality' of the indices can be active, and if less are active, 'penalty' is payed per inactive index. This is equivalent to adding the constraint: p + Sum(i)active[i] == max_cardinality where p is an integer variable, and the following cost to the cost function: p * penalty. 'penalty' must be positive to make the disjunction optional; a negative penalty will force 'max_cardinality' indices of the disjunction to be performed, and therefore p == 0. Note: passing a vector with a single index will model an optional index with a penalty cost if it is not visited.

    -

    Definition at line 202 of file RoutingModel.java.

    +

    Definition at line 206 of file RoutingModel.java.

    @@ -1115,7 +1116,7 @@ Protected Member Functions
    -

    Definition at line 622 of file RoutingModel.java.

    +

    Definition at line 626 of file RoutingModel.java.

    @@ -1146,7 +1147,7 @@ Protected Member Functions

    Adds a custom local search filter to the list of filters used to speed up local search by pruning unfeasible variable assignments.

    Calling this method after the routing model has been closed (CloseModel() or Solve() has been called) has no effect. The routing model does not take ownership of the filter.

    -

    Definition at line 637 of file RoutingModel.java.

    +

    Definition at line 641 of file RoutingModel.java.

    @@ -1176,7 +1177,7 @@ Protected Member Functions

    Adds a local search operator to the set of operators used to solve the vehicle routing problem.

    -

    Definition at line 416 of file RoutingModel.java.

    +

    Definition at line 420 of file RoutingModel.java.

    @@ -1226,7 +1227,7 @@ Protected Member Functions
    -

    Definition at line 916 of file RoutingModel.java.

    +

    Definition at line 920 of file RoutingModel.java.

    @@ -1267,7 +1268,7 @@ Protected Member Functions

    Notifies that index1 and index2 form a pair of nodes which should belong to the same route.

    This methods helps the search find better solutions, especially in the local search phase. It should be called each time you have an equality constraint linking the vehicle variables of two node (including for instance pickup and delivery problems): Solver* const solver = routing.solver(); int64 index1 = manager.NodeToIndex(node1); int64 index2 = manager.NodeToIndex(node2); solver->AddConstraint(solver->MakeEquality( routing.VehicleVar(index1), routing.VehicleVar(index2))); routing.AddPickupAndDelivery(index1, index2);

    -

    Definition at line 272 of file RoutingModel.java.

    +

    Definition at line 276 of file RoutingModel.java.

    @@ -1307,7 +1308,7 @@ Protected Member Functions

    Same as AddPickupAndDelivery but notifying that the performed node from the disjunction of index 'pickup_disjunction' is on the same route as the performed node from the disjunction of index 'delivery_disjunction'.

    -

    Definition at line 279 of file RoutingModel.java.

    +

    Definition at line 283 of file RoutingModel.java.

    @@ -1337,7 +1338,7 @@ Protected Member Functions

    Adds a search monitor to the search used to solve the routing model.

    -

    Definition at line 423 of file RoutingModel.java.

    +

    Definition at line 427 of file RoutingModel.java.

    @@ -1378,7 +1379,7 @@ Protected Member Functions

    Adds a soft contraint to force a set of variable indices to be on the same vehicle.

    If all nodes are not on the same vehicle, each extra vehicle used adds 'cost' to the cost function.

    -

    Definition at line 251 of file RoutingModel.java.

    +

    Definition at line 255 of file RoutingModel.java.

    @@ -1408,7 +1409,7 @@ Protected Member Functions

    Adds an extra variable to the vehicle routing assignment.

    -

    Definition at line 618 of file RoutingModel.java.

    +

    Definition at line 622 of file RoutingModel.java.

    @@ -1438,7 +1439,7 @@ Protected Member Functions

    Adds a variable to maximize in the solution finalizer (see above for information on the solution finalizer).

    -

    Definition at line 444 of file RoutingModel.java.

    +

    Definition at line 448 of file RoutingModel.java.

    @@ -1469,7 +1470,7 @@ Protected Member Functions

    Adds a variable to minimize in the solution finalizer.

    The solution finalizer is called each time a solution is found during the search and allows to instantiate secondary variables (such as dimension cumul variables).

    -

    Definition at line 437 of file RoutingModel.java.

    +

    Definition at line 441 of file RoutingModel.java.

    @@ -1509,7 +1510,7 @@ Protected Member Functions

    Add a variable to set the closest possible to the target value in the solution finalizer.

    -

    Definition at line 458 of file RoutingModel.java.

    +

    Definition at line 462 of file RoutingModel.java.

    @@ -1562,7 +1563,7 @@ Protected Member Functions

    Creates a dimension where the transit variable is constrained to be equal to 'values[i]' for node i; 'capacity' is the upper bound of the cumul variables.

    'name' is the name used to reference the dimension; this name is used to get cumul and transit variables from the routing model. Returns false if a dimension with the same name has already been created (and doesn't create the new dimension).

    -

    Definition at line 126 of file RoutingModel.java.

    +

    Definition at line 130 of file RoutingModel.java.

    @@ -1602,7 +1603,7 @@ Protected Member Functions

    Adds a variable to minimize in the solution finalizer, with a weighted priority: the higher the more priority it has.

    -

    Definition at line 451 of file RoutingModel.java.

    +

    Definition at line 455 of file RoutingModel.java.

    @@ -1633,7 +1634,7 @@ Protected Member Functions

    Applies a lock chain to the next search.

    'locks' represents an ordered vector of nodes representing a partial route which will be fixed during the next search; it will constrain next variables such that: next[locks[i]] == locks[i+1]. Returns the next variable at the end of the locked chain; this variable is not locked. An assignment containing the locks can be obtained by calling PreAssignment().

    -

    Definition at line 529 of file RoutingModel.java.

    +

    Definition at line 533 of file RoutingModel.java.

    @@ -1674,7 +1675,7 @@ Protected Member Functions

    Applies lock chains to all vehicles to the next search, such that locks[p] is the lock chain for route p.

    Returns false if the locks do not contain valid routes; expects that the routes do not contain the depots, i.e. there are empty vectors in place of empty routes. If close_routes is set to true, adds the end nodes to the route of each vehicle and deactivates other nodes. An assignment containing the locks can be obtained by calling PreAssignment().

    -

    Definition at line 537 of file RoutingModel.java.

    +

    Definition at line 541 of file RoutingModel.java.

    @@ -1721,7 +1722,7 @@ Protected Member Functions

    Returns whether the arc from->to1 is more constrained than from->to2, taking into account, in order: - whether the destination node isn't an end node - whether the destination node is mandatory - whether the destination node is bound to the same vehicle as the source - the "primary constrained" dimension (see SetPrimaryConstrainedDimension) It then breaks ties using, in order: - the arc cost (taking unperformed penalties into account) - the size of the vehicle vars of "to1" and "to2" (lowest size wins) - the value: the lowest value of the indices to1 and to2 wins.

    See the .cc for details. The more constrained arc is typically preferable when building a first solution. This method is intended to be used as a callback for the BestValueByComparisonSelector value selector. Args: from: the variable index of the source node to1: the variable index of the first candidate destination node. to2: the variable index of the second candidate destination node.

    -

    Definition at line 828 of file RoutingModel.java.

    +

    Definition at line 832 of file RoutingModel.java.

    @@ -1749,7 +1750,7 @@ Protected Member Functions
    -

    Definition at line 402 of file RoutingModel.java.

    +

    Definition at line 406 of file RoutingModel.java.

    @@ -1790,7 +1791,7 @@ Protected Member Functions

    Converts the solution in the given assignment to routes for all vehicles.

    Expects that assignment contains a valid solution (i.e. routes for all vehicles end with an end index for that vehicle).

    -

    Definition at line 595 of file RoutingModel.java.

    +

    Definition at line 599 of file RoutingModel.java.

    @@ -1819,7 +1820,7 @@ Protected Member Functions

    Returns true if the search limit has been crossed.

    -

    Definition at line 850 of file RoutingModel.java.

    +

    Definition at line 854 of file RoutingModel.java.

    @@ -1849,7 +1850,7 @@ Protected Member Functions

    Closes the current routing model; after this method is called, no modification to the model can be done, but RoutesToAssignment becomes available.

    Note that CloseModel() is automatically called by Solve() and other methods that produce solution. This is equivalent to calling CloseModelWithParameters(DefaultRoutingSearchParameters()).

    -

    Definition at line 465 of file RoutingModel.java.

    +

    Definition at line 469 of file RoutingModel.java.

    @@ -1879,7 +1880,7 @@ Protected Member Functions

    Same as above taking search parameters (as of 10/2015 some the parameters have to be set when closing the model).

    -

    Definition at line 472 of file RoutingModel.java.

    +

    Definition at line 476 of file RoutingModel.java.

    @@ -1909,7 +1910,7 @@ Protected Member Functions

    Same as CompactAssignment() but also checks the validity of the final compact solution; if it is not valid, no attempts to repair it are made (instead, the method returns nullptr).

    -

    Definition at line 610 of file RoutingModel.java.

    +

    Definition at line 614 of file RoutingModel.java.

    @@ -1940,7 +1941,7 @@ Protected Member Functions

    Returns a compacted version of the given assignment, in which all vehicles with id lower or equal to some N have non-empty routes, and all vehicles with id greater than N have empty routes.

    Does not take ownership of the returned object. If found, the cost of the compact assignment is the same as in the original assignment and it preserves the values of 'active' variables. Returns nullptr if a compact assignment was not found. This method only works in homogenous mode, and it only swaps equivalent vehicles (vehicles with the same start and end nodes). When creating the compact assignment, the empty plan is replaced by the route assigned to the compatible vehicle with the highest id. Note that with more complex constraints on vehicle variables, this method might fail even if a compact solution exists. This method changes the vehicle and dimension variables as necessary. While compacting the solution, only basic checks on vehicle variables are performed; if one of these checks fails no attempts to repair it are made (instead, the method returns nullptr).

    -

    Definition at line 602 of file RoutingModel.java.

    +

    Definition at line 606 of file RoutingModel.java.

    @@ -1970,7 +1971,7 @@ Protected Member Functions

    Computes a lower bound to the routing problem solving a linear assignment problem.

    The routing model must be closed before calling this method. Note that problems with node disjunction constraints (including optional nodes) and non-homogenous costs are not supported (the method returns 0 in these cases).

    -

    Definition at line 515 of file RoutingModel.java.

    +

    Definition at line 519 of file RoutingModel.java.

    @@ -2008,7 +2009,7 @@ Protected Member Functions
    -

    Definition at line 398 of file RoutingModel.java.

    +

    Definition at line 402 of file RoutingModel.java.

    @@ -2037,7 +2038,7 @@ Protected Member Functions

    Whether costs are homogeneous across all vehicles.

    -

    Definition at line 754 of file RoutingModel.java.

    +

    Definition at line 758 of file RoutingModel.java.

    @@ -2066,7 +2067,7 @@ Protected Member Functions

    Returns the global cost variable which is being minimized.

    -

    Definition at line 739 of file RoutingModel.java.

    +

    Definition at line 743 of file RoutingModel.java.

    @@ -2107,7 +2108,7 @@ Protected Member Functions

    Print some debugging information about an assignment, including the feasible intervals of the CumulVar for dimension "dimension_to_print" at each step of the routes.

    If "dimension_to_print" is omitted, all dimensions will be printed.

    -

    Definition at line 835 of file RoutingModel.java.

    +

    Definition at line 839 of file RoutingModel.java.

    @@ -2164,7 +2165,7 @@ Protected Member Functions

    Returns the variable index of the ending node of a vehicle route.

    -

    Definition at line 651 of file RoutingModel.java.

    +

    Definition at line 655 of file RoutingModel.java.

    @@ -2191,7 +2192,7 @@ Protected Member Functions
    -

    Definition at line 390 of file RoutingModel.java.

    +

    Definition at line 394 of file RoutingModel.java.

    @@ -2218,7 +2219,7 @@ Protected Member Functions
    -

    Definition at line 394 of file RoutingModel.java.

    +

    Definition at line 398 of file RoutingModel.java.

    @@ -2265,7 +2266,7 @@ Protected Member Functions

    Returns the cost of the segment between two nodes for a given cost class.

    Input are variable indices of nodes and the cost class. Unlike GetArcCostForVehicle(), if cost_class is kNoCost, then the returned cost won't necessarily be zero: only some of the components of the cost that depend on the cost class will be omited. See the code for details.

    -

    Definition at line 775 of file RoutingModel.java.

    +

    Definition at line 779 of file RoutingModel.java.

    @@ -2306,7 +2307,7 @@ Protected Member Functions

    Returns the cost of the arc in the context of the first solution strategy.

    This is typically a simplification of the actual cost; see the .cc.

    -

    Definition at line 768 of file RoutingModel.java.

    +

    Definition at line 772 of file RoutingModel.java.

    @@ -2353,7 +2354,7 @@ Protected Member Functions

    Returns the cost of the transit arc between two nodes for a given vehicle.

    Input are variable indices of node. This returns 0 if vehicle < 0.

    -

    Definition at line 747 of file RoutingModel.java.

    +

    Definition at line 751 of file RoutingModel.java.

    @@ -2382,7 +2383,7 @@ Protected Member Functions

    Returns the number of different cost classes in the model.

    -

    Definition at line 796 of file RoutingModel.java.

    +

    Definition at line 800 of file RoutingModel.java.

    @@ -2412,7 +2413,7 @@ Protected Member Functions

    Get the cost class index of the given vehicle.

    -

    Definition at line 782 of file RoutingModel.java.

    +

    Definition at line 786 of file RoutingModel.java.

    @@ -2442,7 +2443,7 @@ Protected Member Functions

    Returns the variable index of the first starting or ending node of all routes.

    If all routes start and end at the same node (single depot), this is the node returned.

    -

    Definition at line 337 of file RoutingModel.java.

    +

    Definition at line 341 of file RoutingModel.java.

    @@ -2473,7 +2474,7 @@ Protected Member Functions

    Returns a dimension from its name.

    Dies if the dimension does not exist.

    -

    Definition at line 159 of file RoutingModel.java.

    +

    Definition at line 163 of file RoutingModel.java.

    @@ -2502,7 +2503,7 @@ Protected Member Functions

    Returns dimensions_for_[global|local]_optimizer_ if the model has been closed, and empty vectors otherwise.

    -

    Definition at line 141 of file RoutingModel.java.

    +

    Definition at line 145 of file RoutingModel.java.

    @@ -2529,7 +2530,7 @@ Protected Member Functions
    -

    Definition at line 145 of file RoutingModel.java.

    +

    Definition at line 149 of file RoutingModel.java.

    @@ -2559,7 +2560,7 @@ Protected Member Functions

    Returns the indices of the disjunctions to which an index belongs.

    -

    Definition at line 209 of file RoutingModel.java.

    +

    Definition at line 213 of file RoutingModel.java.

    @@ -2589,7 +2590,7 @@ Protected Member Functions

    Returns the variable indices of the nodes in the disjunction of index 'index'.

    -

    Definition at line 216 of file RoutingModel.java.

    +

    Definition at line 220 of file RoutingModel.java.

    @@ -2619,7 +2620,7 @@ Protected Member Functions

    Returns the maximum number of possible active nodes of the node disjunction of index 'index'.

    -

    Definition at line 230 of file RoutingModel.java.

    +

    Definition at line 234 of file RoutingModel.java.

    @@ -2649,7 +2650,7 @@ Protected Member Functions

    Returns the penalty of the node disjunction of index 'index'.

    -

    Definition at line 223 of file RoutingModel.java.

    +

    Definition at line 227 of file RoutingModel.java.

    @@ -2679,7 +2680,7 @@ Protected Member Functions

    Returns the route fixed cost taken into account if the route of the vehicle is not empty, aka there's at least one node on the route other than the first and last nodes.

    -

    Definition at line 372 of file RoutingModel.java.

    +

    Definition at line 376 of file RoutingModel.java.

    @@ -2719,7 +2720,7 @@ Protected Member Functions

    Returns the cost of the segment between two nodes supposing all vehicle costs are the same (returns the cost for the first vehicle otherwise).

    -

    Definition at line 761 of file RoutingModel.java.

    +

    Definition at line 765 of file RoutingModel.java.

    @@ -2837,7 +2838,7 @@ Protected Member Functions

    Returns a dimension from its name.

    Returns nullptr if the dimension does not exist.

    -

    Definition at line 166 of file RoutingModel.java.

    +

    Definition at line 170 of file RoutingModel.java.

    @@ -2866,7 +2867,7 @@ Protected Member Functions

    Ditto, minus the 'always zero', built-in cost class.

    -

    Definition at line 803 of file RoutingModel.java.

    +

    Definition at line 807 of file RoutingModel.java.

    @@ -2896,7 +2897,7 @@ Protected Member Functions

    Returns statistics on first solution search, number of decisions sent to filters, number of decisions rejected by filters.

    -

    Definition at line 885 of file RoutingModel.java.

    +

    Definition at line 889 of file RoutingModel.java.

    @@ -2925,7 +2926,7 @@ Protected Member Functions

    Returns the number of node disjunctions in the model.

    -

    Definition at line 237 of file RoutingModel.java.

    +

    Definition at line 241 of file RoutingModel.java.

    @@ -2953,7 +2954,7 @@ Protected Member Functions
    -

    Definition at line 889 of file RoutingModel.java.

    +

    Definition at line 893 of file RoutingModel.java.

    @@ -2980,7 +2981,7 @@ Protected Member Functions
    -

    Definition at line 316 of file RoutingModel.java.

    +

    Definition at line 320 of file RoutingModel.java.

    @@ -3009,7 +3010,7 @@ Protected Member Functions

    Returns the number of non-start/end nodes which do not appear in a pickup/delivery pair.

    -

    Definition at line 301 of file RoutingModel.java.

    +

    Definition at line 305 of file RoutingModel.java.

    @@ -3037,7 +3038,7 @@ Protected Member Functions
    -

    Definition at line 294 of file RoutingModel.java.

    +

    Definition at line 298 of file RoutingModel.java.

    @@ -3066,7 +3067,7 @@ Protected Member Functions

    Get the primary constrained dimension, or an empty std::string if it is unset.

    -

    Definition at line 181 of file RoutingModel.java.

    +

    Definition at line 185 of file RoutingModel.java.

    @@ -3096,7 +3097,7 @@ Protected Member Functions

    Returns variable indices of nodes constrained to be on the same route.

    -

    Definition at line 821 of file RoutingModel.java.

    +

    Definition at line 825 of file RoutingModel.java.

    @@ -3125,7 +3126,7 @@ Protected Member Functions

    Returns the number of different vehicle classes in the model.

    -

    Definition at line 814 of file RoutingModel.java.

    +

    Definition at line 818 of file RoutingModel.java.

    @@ -3153,7 +3154,7 @@ Protected Member Functions
    -

    Definition at line 807 of file RoutingModel.java.

    +

    Definition at line 811 of file RoutingModel.java.

    @@ -3181,7 +3182,7 @@ Protected Member Functions
    -

    Definition at line 312 of file RoutingModel.java.

    +

    Definition at line 316 of file RoutingModel.java.

    @@ -3211,7 +3212,7 @@ Protected Member Functions

    Returns true if a dimension exists for a given dimension name.

    -

    Definition at line 152 of file RoutingModel.java.

    +

    Definition at line 156 of file RoutingModel.java.

    @@ -3241,7 +3242,7 @@ Protected Member Functions

    Returns true iff the model contains a vehicle with the given cost_class_index.

    -

    Definition at line 789 of file RoutingModel.java.

    +

    Definition at line 793 of file RoutingModel.java.

    @@ -3271,7 +3272,7 @@ Protected Member Functions

    SPECIAL: Makes the solver ignore all the disjunctions whose active variables are all trivially zero (i.e.

    Max() == 0), by setting their max_cardinality to 0. This can be useful when using the BaseBinaryDisjunctionNeighborhood operators, in the context of arc-based routing.

    -

    Definition at line 244 of file RoutingModel.java.

    +

    Definition at line 248 of file RoutingModel.java.

    @@ -3301,7 +3302,7 @@ Protected Member Functions

    Returns true if 'index' represents the last node of a route.

    -

    Definition at line 665 of file RoutingModel.java.

    +

    Definition at line 669 of file RoutingModel.java.

    @@ -3330,7 +3331,7 @@ Protected Member Functions

    Returns true if a vehicle/node matching problem is detected.

    -

    Definition at line 896 of file RoutingModel.java.

    +

    Definition at line 900 of file RoutingModel.java.

    @@ -3360,7 +3361,7 @@ Protected Member Functions

    Returns true if 'index' represents the first node of a route.

    -

    Definition at line 658 of file RoutingModel.java.

    +

    Definition at line 662 of file RoutingModel.java.

    @@ -3400,7 +3401,7 @@ Protected Member Functions

    Returns true if a vehicle is allowed to visit a given node.

    -

    Definition at line 265 of file RoutingModel.java.

    +

    Definition at line 269 of file RoutingModel.java.

    @@ -3440,7 +3441,7 @@ Protected Member Functions

    Returns true if the route of 'vehicle' is non empty in 'assignment'.

    -

    Definition at line 686 of file RoutingModel.java.

    +

    Definition at line 690 of file RoutingModel.java.

    @@ -3481,7 +3482,7 @@ Protected Member Functions

    The next few members are in the public section only for testing purposes.

    MakeGuidedSlackFinalizer creates a DecisionBuilder for the slacks of a dimension using a callback to choose which values to start with. The finalizer works only when all next variables in the model have been fixed. It has the following two characteristics: 1. It follows the routes defined by the nexts variables when choosing a variable to make a decision on. 2. When it comes to choose a value for the slack of node i, the decision builder first calls the callback with argument i, and supposingly the returned value is x it creates decisions slack[i] = x, slack[i] = x + 1, slack[i] = x - 1, slack[i] = x + 2, etc.

    -

    Definition at line 903 of file RoutingModel.java.

    +

    Definition at line 907 of file RoutingModel.java.

    @@ -3530,7 +3531,7 @@ Protected Member Functions
  • if spans[vehicle] is not nullptr, constrains it to be dimension->CumulVar(end) - dimension->CumulVar(start) This does stronger propagation than a decomposition, and takes breaks into account.
  • -

    Definition at line 133 of file RoutingModel.java.

    +

    Definition at line 137 of file RoutingModel.java.

    @@ -3561,7 +3562,7 @@ Protected Member Functions

    MakeSelfDependentDimensionFinalizer is a finalizer for the slacks of a self-dependent dimension.

    It makes an extensive use of the caches of the state dependent transits. In detail, MakeSelfDependentDimensionFinalizer returns a composition of a local search decision builder with a greedy descent operator for the cumul of the start of each route and a guided slack finalizer. Provided there are no time windows and the maximum slacks are large enough, once the cumul of the start of route is fixed, the guided finalizer can find optimal values of the slacks for the rest of the route in time proportional to the length of the route. Therefore the composed finalizer generally works in time O(log(t)*n*m), where t is the latest possible departute time, n is the number of nodes in the network and m is the number of vehicles.

    -

    Definition at line 911 of file RoutingModel.java.

    +

    Definition at line 915 of file RoutingModel.java.

    @@ -3588,7 +3589,7 @@ Protected Member Functions
    -

    Definition at line 549 of file RoutingModel.java.

    +

    Definition at line 553 of file RoutingModel.java.

    @@ -3628,7 +3629,7 @@ Protected Member Functions

    Assignment inspection Returns the variable index of the node directly after the node corresponding to 'index' in 'assignment'.

    -

    Definition at line 679 of file RoutingModel.java.

    +

    Definition at line 683 of file RoutingModel.java.

    @@ -3657,7 +3658,7 @@ Protected Member Functions

    Returns all next variables of the model, such that Nexts(i) is the next variable of the node corresponding to i.

    -

    Definition at line 693 of file RoutingModel.java.

    +

    Definition at line 697 of file RoutingModel.java.

    @@ -3688,7 +3689,7 @@ Protected Member Functions

    Returns the next variable of the node corresponding to index.

    Note that NextVar(index) == index is equivalent to ActiveVar(index) == 0.

    -

    Definition at line 707 of file RoutingModel.java.

    +

    Definition at line 711 of file RoutingModel.java.

    @@ -3717,7 +3718,7 @@ Protected Member Functions

    Sizes and indices Returns the number of nodes in the model.

    -

    Definition at line 864 of file RoutingModel.java.

    +

    Definition at line 868 of file RoutingModel.java.

    @@ -3760,7 +3761,7 @@ Protected Member Functions
  • The cumuls of the ends of the routes are minimized for this given minimal cumul cost. - Given these minimal end cumuls, the route start cumuls are maximized. Returns the assignment resulting from allocating these packed cumuls with the solver, and nullptr if these cumuls could not be set by the solver.
  • -

    Definition at line 629 of file RoutingModel.java.

    +

    Definition at line 633 of file RoutingModel.java.

    @@ -3790,7 +3791,7 @@ Protected Member Functions

    Returns an assignment used to fix some of the variables of the problem.

    In practice, this assignment locks partial routes of the problem. This can be used in the context of locking the parts of the routes which have already been driven in online routing problems.

    -

    Definition at line 544 of file RoutingModel.java.

    +

    Definition at line 548 of file RoutingModel.java.

    @@ -3821,7 +3822,7 @@ Protected Member Functions

    Reads an assignment from a file and returns the current solution.

    Returns nullptr if the file cannot be opened or if the assignment is not valid.

    -

    Definition at line 564 of file RoutingModel.java.

    +

    Definition at line 568 of file RoutingModel.java.

    @@ -3862,7 +3863,7 @@ Protected Member Functions

    Restores the routes as the current solution.

    Returns nullptr if the solution cannot be restored (routes do not contain a valid solution). Note that calling this method will run the solver to assign values to the dimension variables; this may take considerable amount of time, especially when using dimensions with slack.

    -

    Definition at line 580 of file RoutingModel.java.

    +

    Definition at line 584 of file RoutingModel.java.

    @@ -3890,7 +3891,35 @@ Protected Member Functions
    -

    Definition at line 89 of file RoutingModel.java.

    +

    Definition at line 93 of file RoutingModel.java.

    + +
    + + +

    ◆ RegisterPositiveUnaryTransitCallback()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int com.google.ortools.constraintsolver.RoutingModel.RegisterPositiveUnaryTransitCallback (LongUnaryOperator callback)
    +
    +inline
    +
    + +

    Definition at line 85 of file RoutingModel.java.

    @@ -3918,7 +3947,7 @@ Protected Member Functions
    -

    Definition at line 85 of file RoutingModel.java.

    +

    Definition at line 89 of file RoutingModel.java.

    @@ -3977,7 +4006,7 @@ Protected Member Functions

    Returns the time left in the search limit.

    -

    Definition at line 857 of file RoutingModel.java.

    +

    Definition at line 861 of file RoutingModel.java.

    @@ -4008,7 +4037,7 @@ Protected Member Functions

    Restores an assignment as a solution in the routing model and returns the new solution.

    Returns nullptr if the assignment is not valid.

    -

    Definition at line 572 of file RoutingModel.java.

    +

    Definition at line 576 of file RoutingModel.java.

    @@ -4061,7 +4090,7 @@ Protected Member Functions

    Fills an assignment from a specification of the routes of the vehicles.

    The routes are specified as lists of variable indices that appear on the routes of the vehicles. The indices of the outer vector in 'routes' correspond to vehicles IDs, the inner vector contains the variable indices on the routes for the given vehicle. The inner vectors must not contain the start and end indices, as these are determined by the routing model. Sets the value of NextVars in the assignment, adding the variables to the assignment if necessary. The method does not touch other variables in the assignment. The method can only be called after the model is closed. With ignore_inactive_indices set to false, this method will fail (return nullptr) in case some of the route contain indices that are deactivated in the model; when set to true, these indices will be skipped. Returns true if routes were successfully loaded. However, such assignment still might not be a valid solution to the routing problem due to more complex constraints; it is advisible to call solver()->CheckSolution() afterwards.

    -

    Definition at line 588 of file RoutingModel.java.

    +

    Definition at line 592 of file RoutingModel.java.

    @@ -4102,7 +4131,7 @@ Protected Member Functions

    Sets the vehicles which can visit a given node.

    If the node is in a disjunction, this will not prevent it from being unperformed. Specifying an empty vector of vehicles has no effect (all vehicles will be allowed to visit the node).

    -

    Definition at line 258 of file RoutingModel.java.

    +

    Definition at line 262 of file RoutingModel.java.

    @@ -4143,7 +4172,7 @@ Protected Member Functions

    The following methods set the linear and quadratic cost factors of vehicles (must be positive values).

    The default value of these parameters is zero for all vehicles. When set, the cost_ of the model will contain terms aiming at reducing the number of vehicles used in the model, by adding the following to the objective for every vehicle v: INDICATOR(v used in the model) * [linear_cost_factor_of_vehicle_[v] - quadratic_cost_factor_of_vehicle_[v]*(square of length of route v)] i.e. for every used vehicle, we add the linear factor as fixed cost, and subtract the square of the route length multiplied by the quadratic factor. This second term aims at making the routes as dense as possible. Sets the linear and quadratic cost factor of all vehicles.

    -

    Definition at line 379 of file RoutingModel.java.

    +

    Definition at line 383 of file RoutingModel.java.

    @@ -4189,7 +4218,7 @@ Protected Member Functions

    Sets the linear and quadratic cost factor of the given vehicle.

    -

    Definition at line 386 of file RoutingModel.java.

    +

    Definition at line 390 of file RoutingModel.java.

    @@ -4219,7 +4248,7 @@ Protected Member Functions

    Sets the cost function of the model such that the cost of a segment of a route between node 'from' and 'to' is evaluator(from, to), whatever the route or vehicle performing the route.

    -

    Definition at line 344 of file RoutingModel.java.

    +

    Definition at line 348 of file RoutingModel.java.

    @@ -4259,7 +4288,7 @@ Protected Member Functions

    Sets the cost function for a given vehicle route.

    -

    Definition at line 351 of file RoutingModel.java.

    +

    Definition at line 355 of file RoutingModel.java.

    @@ -4306,7 +4335,7 @@ Protected Member Functions

    Given a "source_model" and its "source_assignment", resets "target_assignment" with the IntVar variables (nexts_, and vehicle_vars_ if costs aren't homogeneous across vehicles) of "this" model, with the values set according to those in "other_assignment".

    The objective_element of target_assignment is set to this->cost_.

    -

    Definition at line 508 of file RoutingModel.java.

    +

    Definition at line 512 of file RoutingModel.java.

    @@ -4337,7 +4366,7 @@ Protected Member Functions

    Gets/sets the evaluator used during the search.

    Only relevant when RoutingSearchParameters.first_solution_strategy = EVALUATOR_STRATEGY. Takes ownership of evaluator.

    -

    Definition at line 409 of file RoutingModel.java.

    +

    Definition at line 413 of file RoutingModel.java.

    @@ -4368,7 +4397,7 @@ Protected Member Functions

    Sets the fixed cost of all vehicle routes.

    It is equivalent to calling SetFixedCostOfVehicle on all vehicle routes.

    -

    Definition at line 358 of file RoutingModel.java.

    +

    Definition at line 362 of file RoutingModel.java.

    @@ -4408,7 +4437,7 @@ Protected Member Functions

    Sets the fixed cost of one vehicle route.

    -

    Definition at line 365 of file RoutingModel.java.

    +

    Definition at line 369 of file RoutingModel.java.

    @@ -4439,7 +4468,7 @@ Protected Member Functions

    Sets the Pickup and delivery policy of all vehicles.

    It is equivalent to calling SetPickupAndDeliveryPolicyOfVehicle on all vehicles.

    -

    Definition at line 286 of file RoutingModel.java.

    +

    Definition at line 290 of file RoutingModel.java.

    @@ -4477,7 +4506,7 @@ Protected Member Functions
    -

    Definition at line 290 of file RoutingModel.java.

    +

    Definition at line 294 of file RoutingModel.java.

    @@ -4508,7 +4537,7 @@ Protected Member Functions

    Set the given dimension as "primary constrained".

    As of August 2013, this is only used by ArcIsMoreConstrainedThanArc(). "dimension" must be the name of an existing dimension, or be empty, in which case there will not be a primary dimension after this call.

    -

    Definition at line 174 of file RoutingModel.java.

    +

    Definition at line 178 of file RoutingModel.java.

    @@ -4549,7 +4578,7 @@ Protected Member Functions

    Set the node visit types and incompatibilities/requirements between the types (see below).

    NOTE: The visit type of a node must be positive, and all nodes belonging to the same pickup/delivery pair must have the same type (or no type at all). NOTE: Before adding any incompatibilities and/or requirements on types: 1) All corresponding node types must have been set. 2) CloseVisitTypes() must be called so all containers are resized accordingly. NOTE: These incompatibilities and requirements are only handled when each node index appears in at most one pickup/delivery pair, i.e. when the same node isn't a pickup and/or delivery in multiple pickup/delivery pairs.

    -

    Definition at line 308 of file RoutingModel.java.

    +

    Definition at line 312 of file RoutingModel.java.

    @@ -4578,7 +4607,7 @@ Protected Member Functions

    Returns the number of next variables in the model.

    -

    Definition at line 878 of file RoutingModel.java.

    +

    Definition at line 882 of file RoutingModel.java.

    @@ -4609,7 +4638,7 @@ Protected Member Functions

    Solves the current routing model; closes the current model.

    This is equivalent to calling SolveWithParameters(DefaultRoutingSearchParameters()) or SolveFromAssignmentWithParameters(assignment, DefaultRoutingSearchParameters()).

    -

    Definition at line 479 of file RoutingModel.java.

    +

    Definition at line 483 of file RoutingModel.java.

    @@ -4639,7 +4668,7 @@ Protected Member Functions

    Solves the current routing model; closes the current model.

    This is equivalent to calling SolveWithParameters(DefaultRoutingSearchParameters()) or SolveFromAssignmentWithParameters(assignment, DefaultRoutingSearchParameters()).

    -

    Definition at line 487 of file RoutingModel.java.

    +

    Definition at line 491 of file RoutingModel.java.

    @@ -4677,7 +4706,7 @@ Protected Member Functions
    -

    Definition at line 500 of file RoutingModel.java.

    +

    Definition at line 504 of file RoutingModel.java.

    @@ -4707,7 +4736,7 @@ Protected Member Functions

    Returns the underlying constraint solver.

    Can be used to add extra constraints and/or modify search algoithms.

    -

    Definition at line 842 of file RoutingModel.java.

    +

    Definition at line 846 of file RoutingModel.java.

    @@ -4738,7 +4767,7 @@ Protected Member Functions

    Solves the current routing model with the given parameters.

    If 'solutions' is specified, it will contain the k best solutions found during the search (from worst to best, including the one returned by this method), where k corresponds to the 'number_of_solutions_to_collect' in 'search_parameters'. Note that the Assignment returned by the method and the ones in solutions are owned by the underlying solver and should not be deleted.

    -

    Definition at line 495 of file RoutingModel.java.

    +

    Definition at line 499 of file RoutingModel.java.

    @@ -4769,7 +4798,7 @@ Protected Member Functions

    Model inspection.

    Returns the variable index of the starting node of a vehicle route.

    -

    Definition at line 644 of file RoutingModel.java.

    +

    Definition at line 648 of file RoutingModel.java.

    @@ -4798,7 +4827,7 @@ Protected Member Functions

    Returns the current status of the routing model.

    -

    Definition at line 522 of file RoutingModel.java.

    +

    Definition at line 526 of file RoutingModel.java.

    @@ -4829,7 +4858,7 @@ Protected Member Functions

    Get the "unperformed" penalty of a node.

    This is only well defined if the node is only part of a single Disjunction involving only itself, and that disjunction has a penalty. In all other cases, including forced active nodes, this returns 0.

    -

    Definition at line 323 of file RoutingModel.java.

    +

    Definition at line 327 of file RoutingModel.java.

    @@ -4869,7 +4898,7 @@ Protected Member Functions

    Same as above except that it returns default_value instead of 0 when penalty is not well defined (default value is passed as first argument to simplify the usage of the method in a callback).

    -

    Definition at line 330 of file RoutingModel.java.

    +

    Definition at line 334 of file RoutingModel.java.

    @@ -4899,7 +4928,7 @@ Protected Member Functions

    Returns the variable specifying whether or not costs are considered for vehicle.

    -

    Definition at line 723 of file RoutingModel.java.

    +

    Definition at line 727 of file RoutingModel.java.

    @@ -4929,7 +4958,7 @@ Protected Member Functions

    Returns the vehicle of the given start/end index, and -1 if the given index is not a vehicle start/end.

    -

    Definition at line 672 of file RoutingModel.java.

    +

    Definition at line 676 of file RoutingModel.java.

    @@ -4958,7 +4987,7 @@ Protected Member Functions

    Returns the number of vehicle routes in the model.

    -

    Definition at line 871 of file RoutingModel.java.

    +

    Definition at line 875 of file RoutingModel.java.

    @@ -4989,7 +5018,7 @@ Protected Member Functions

    Returns the vehicle variable of the node corresponding to index.

    Note that VehicleVar(index) == -1 is equivalent to ActiveVar(index) == 0.

    -

    Definition at line 731 of file RoutingModel.java.

    +

    Definition at line 735 of file RoutingModel.java.

    @@ -5018,7 +5047,7 @@ Protected Member Functions

    Returns all vehicle variables of the model, such that VehicleVars(i) is the vehicle variable of the node corresponding to i.

    -

    Definition at line 700 of file RoutingModel.java.

    +

    Definition at line 704 of file RoutingModel.java.

    @@ -5049,7 +5078,7 @@ Protected Member Functions

    Writes the current solution to a file containing an AssignmentProto.

    Returns false if the file cannot be opened or if there is no current solution.

    -

    Definition at line 557 of file RoutingModel.java.

    +

    Definition at line 561 of file RoutingModel.java.

    @@ -5076,7 +5105,7 @@ Protected Member Functions

    Deliveries must be performed in the same order as pickups.

    -

    Definition at line 962 of file RoutingModel.java.

    +

    Definition at line 966 of file RoutingModel.java.

    @@ -5102,7 +5131,7 @@ Protected Member Functions

    Deliveries must be performed in reverse order of pickups.

    -

    Definition at line 958 of file RoutingModel.java.

    +

    Definition at line 962 of file RoutingModel.java.

    @@ -5129,7 +5158,7 @@ Protected Member Functions

    Types of precedence policy applied to pickup and delivery pairs.

    Any precedence is accepted.

    -

    Definition at line 954 of file RoutingModel.java.

    +

    Definition at line 958 of file RoutingModel.java.

    @@ -5155,7 +5184,7 @@ Protected Member Functions

    No solution found to the problem after calling RoutingModel::Solve().

    -

    Definition at line 936 of file RoutingModel.java.

    +

    Definition at line 940 of file RoutingModel.java.

    @@ -5181,7 +5210,7 @@ Protected Member Functions

    Time limit reached before finding a solution with RoutingModel::Solve().

    -

    Definition at line 940 of file RoutingModel.java.

    +

    Definition at line 944 of file RoutingModel.java.

    @@ -5207,7 +5236,7 @@ Protected Member Functions

    Model, model parameters or flags are not valid.

    -

    Definition at line 944 of file RoutingModel.java.

    +

    Definition at line 948 of file RoutingModel.java.

    @@ -5234,7 +5263,7 @@ Protected Member Functions

    Status of the search.

    Problem not solved yet (before calling RoutingModel::Solve()).

    -

    Definition at line 928 of file RoutingModel.java.

    +

    Definition at line 932 of file RoutingModel.java.

    @@ -5260,7 +5289,7 @@ Protected Member Functions

    Problem solved successfully after calling RoutingModel::Solve().

    -

    Definition at line 932 of file RoutingModel.java.

    +

    Definition at line 936 of file RoutingModel.java.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters-members.html index 7f8cd40c29..64d6da664f 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters.html index f8a6a3d12c..b9b187becf 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters.html @@ -31,7 +31,6 @@ @@ -52,34 +51,12 @@
    com.google.ortools.constraintsolver.RoutingModelParameters Class Reference
    -

    Overview

    +

    Detailed Description

     Parameters which have to be set when creating a RoutingModel.
     

    Protobuf type

    operations_research.RoutingModelParameters

    Definition at line 13 of file RoutingModelParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RoutingModelParameters:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RoutingModelParameters:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    - +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder-members.html index d90539f998..aef031f4ee 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder.html index 21662f8e1f..9e27d81b2f 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelParameters_1_1Builder.html @@ -31,7 +31,6 @@ @@ -50,34 +49,12 @@
    com.google.ortools.constraintsolver.RoutingModelParameters.Builder Class Reference
    -

    Overview

    +

    Detailed Description

     Parameters which have to be set when creating a RoutingModel.
     

    Protobuf type

    operations_research.RoutingModelParameters

    Definition at line 363 of file RoutingModelParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RoutingModelParameters.Builder:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RoutingModelParameters.Builder:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -

    Classes

    class  Builder
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor-members.html index 79de570730..35cad0fea2 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor.html index 386a4be00f..3262cb39f9 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingModelVisitor.html @@ -31,7 +31,6 @@ @@ -50,29 +49,11 @@
    com.google.ortools.constraintsolver.RoutingModelVisitor Class Reference
    -

    Overview

    +

    Detailed Description

    Routing model visitor.

    Definition at line 14 of file RoutingModelVisitor.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RoutingModelVisitor:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RoutingModelVisitor:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -

    Public Member Functions

    .lang.Override Builder clear ()
    +
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters-members.html index 70d4908527..2a53cd0335 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters.html index 40a21d8f90..0d34d76631 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingParameters.html @@ -31,7 +31,6 @@ @@ -48,7 +47,7 @@
    com.google.ortools.constraintsolver.RoutingParameters Class Reference
    -

    Overview

    +

    Detailed Description

    Definition at line 6 of file RoutingParameters.java.

    Public Member Functions

    synchronized void delete ()
    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters-members.html index 5afac7ed24..945c63c9c3 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters-members.html @@ -31,7 +31,6 @@ @@ -66,39 +65,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters.html index 4f3f59c849..ff50f59d75 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters.html @@ -31,7 +31,6 @@ @@ -52,7 +51,7 @@
    com.google.ortools.constraintsolver.RoutingSearchParameters Class Reference
    -

    Overview

    +

    Detailed Description

     Parameters defining the search used to solve vehicle routing problems.
     If a parameter is unset (or, equivalently, set to its default value),
    @@ -61,29 +60,7 @@ automatically: this should be the case for most parameters.
     To see those "default" parameters, call GetDefaultRoutingSearchParameters().
     

    Protobuf type

    operations_research.RoutingSearchParameters

    Definition at line 17 of file RoutingSearchParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RoutingSearchParameters:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RoutingSearchParameters:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    -
    getLocalSearchMetaheuristicValue()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getLocalSearchOperators()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getLocalSearchOperatorsOrBuilder()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getLogCostScalingFactor()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getLogSearch()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getNumberOfSolutionsToCollect()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getOptimizationStep()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getParserForType()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getRelocateExpensiveChainNumArcsToConsider()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsAddReverseArcs()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsArcCoefficient()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsMaxMemoryUsageBytes()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsNeighborsRatio()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsParallelRoutes()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSerializedSize()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSolutionLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getTimeLimitOrBuilder()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUnknownFields()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCp()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCpSat()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCpSatValue()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCpValue()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseDepthFirstSearch()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseFullPropagation()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseUnfilteredFirstSolutionStrategy()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    GUIDED_LOCAL_SEARCH_LAMBDA_COEFFICIENT_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    hashCode()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    hasLnsTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    hasLocalSearchOperators()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    hasTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    internalGetFieldAccessorTable()com.google.ortools.constraintsolver.RoutingSearchParametersinlineprotected
    isInitialized()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    LNS_TIME_LIMIT_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    LOCAL_SEARCH_OPERATORS_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    getLogCostOffset()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getLogCostScalingFactor()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getLogSearch()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getNumberOfSolutionsToCollect()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getOptimizationStep()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getParserForType()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getRelocateExpensiveChainNumArcsToConsider()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsAddReverseArcs()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsArcCoefficient()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsMaxMemoryUsageBytes()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsNeighborsRatio()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSavingsParallelRoutes()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSerializedSize()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getSolutionLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getTimeLimitOrBuilder()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUnknownFields()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCp()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCpSat()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCpSatValue()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseCpValue()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseDepthFirstSearch()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseFullPropagation()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    getUseUnfilteredFirstSolutionStrategy()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    GUIDED_LOCAL_SEARCH_LAMBDA_COEFFICIENT_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    hashCode()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    hasLnsTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    hasLocalSearchOperators()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    hasTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    internalGetFieldAccessorTable()com.google.ortools.constraintsolver.RoutingSearchParametersinlineprotected
    isInitialized()com.google.ortools.constraintsolver.RoutingSearchParametersinline
    LNS_TIME_LIMIT_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    LOCAL_SEARCH_OPERATORS_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    LOG_COST_OFFSET_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    LOG_COST_SCALING_FACTOR_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    LOG_SEARCH_FIELD_NUMBERcom.google.ortools.constraintsolver.RoutingSearchParametersstatic
    newBuilder()com.google.ortools.constraintsolver.RoutingSearchParametersinlinestatic
    +
    @@ -168,6 +145,9 @@ Public Member Functions + + + @@ -274,6 +254,8 @@ Static Public Attributes + +

    Classes

    class  Builder
     
    double getLogCostScalingFactor ()
     
    double getLogCostOffset ()
     double log_cost_offset = 29; More...
     
    .lang.Override final boolean isInitialized ()
     
    .lang.Override void writeTo (com.google.protobuf.CodedOutputStream output) throws java.io.IOException
     
    static final int LOG_COST_SCALING_FACTOR_FIELD_NUMBER = 22
     
    static final int LOG_COST_OFFSET_FIELD_NUMBER = 29
     
    @@ -309,7 +291,7 @@ Protected Member Functions

    Protected Member Functions

    -

    Definition at line 6271 of file RoutingSearchParameters.java.

    +

    Definition at line 6293 of file RoutingSearchParameters.java.

    @@ -343,7 +325,7 @@ GlobalCheapestInsertion first solution heuristic.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5727 of file RoutingSearchParameters.java.

    +

    Definition at line 5732 of file RoutingSearchParameters.java.

    @@ -378,7 +360,7 @@ considered.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5743 of file RoutingSearchParameters.java.

    +

    Definition at line 5748 of file RoutingSearchParameters.java.

    @@ -405,7 +387,7 @@ considered.
    -

    Definition at line 8379 of file RoutingSearchParameters.java.

    +

    Definition at line 8442 of file RoutingSearchParameters.java.

    @@ -432,7 +414,7 @@ considered.
    -

    Definition at line 8404 of file RoutingSearchParameters.java.

    +

    Definition at line 8467 of file RoutingSearchParameters.java.

    @@ -459,7 +441,7 @@ considered.
    -

    Definition at line 231 of file RoutingSearchParameters.java.

    +

    Definition at line 236 of file RoutingSearchParameters.java.

    @@ -491,7 +473,7 @@ First solution strategies, used as starting point of local search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5618 of file RoutingSearchParameters.java.

    +

    Definition at line 5623 of file RoutingSearchParameters.java.

    @@ -523,7 +505,7 @@ First solution strategies, used as starting point of local search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5608 of file RoutingSearchParameters.java.

    +

    Definition at line 5613 of file RoutingSearchParameters.java.

    @@ -558,7 +540,7 @@ used. Must be positive.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5824 of file RoutingSearchParameters.java.

    +

    Definition at line 5829 of file RoutingSearchParameters.java.

    @@ -591,7 +573,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6001 of file RoutingSearchParameters.java.

    +

    Definition at line 6006 of file RoutingSearchParameters.java.

    @@ -624,7 +606,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6012 of file RoutingSearchParameters.java.

    +

    Definition at line 6017 of file RoutingSearchParameters.java.

    @@ -656,7 +638,7 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5806 of file RoutingSearchParameters.java.

    +

    Definition at line 5811 of file RoutingSearchParameters.java.

    @@ -688,7 +670,7 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5796 of file RoutingSearchParameters.java.

    +

    Definition at line 5801 of file RoutingSearchParameters.java.

    @@ -719,7 +701,7 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5758 of file RoutingSearchParameters.java.

    +

    Definition at line 5763 of file RoutingSearchParameters.java.

    @@ -750,7 +732,38 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5764 of file RoutingSearchParameters.java.

    +

    Definition at line 5769 of file RoutingSearchParameters.java.

    + + + + +

    ◆ getLogCostOffset()

    + +
    +
    + + + + + +
    + + + + + + + +
    double com.google.ortools.constraintsolver.RoutingSearchParameters.getLogCostOffset ()
    +
    +inline
    +
    + +

    double log_cost_offset = 29;

    + +

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    + +

    Definition at line 6085 of file RoutingSearchParameters.java.

    @@ -777,12 +790,13 @@ Local search metaheuristics used to guide the search.
    -In logs, cost values will be unscaled by this factor.
    +In logs, cost values will be unscaled by this factor and reduced by the
    +offset.
     

    double log_cost_scaling_factor = 22;

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6070 of file RoutingSearchParameters.java.

    +

    Definition at line 6076 of file RoutingSearchParameters.java.

    @@ -825,7 +839,7 @@ search done.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6057 of file RoutingSearchParameters.java.

    +

    Definition at line 6062 of file RoutingSearchParameters.java.

    @@ -858,7 +872,7 @@ solutions found during the search. 0 means "unspecified".

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5928 of file RoutingSearchParameters.java.

    +

    Definition at line 5933 of file RoutingSearchParameters.java.

    @@ -892,7 +906,7 @@ the nearest integer.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5914 of file RoutingSearchParameters.java.

    +

    Definition at line 5919 of file RoutingSearchParameters.java.

    @@ -919,7 +933,7 @@ the nearest integer.
    -

    Definition at line 8399 of file RoutingSearchParameters.java.

    +

    Definition at line 8462 of file RoutingSearchParameters.java.

    @@ -957,7 +971,7 @@ K*(K-1)/2 * number_of_routes * number_of_nodes.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5783 of file RoutingSearchParameters.java.

    +

    Definition at line 5788 of file RoutingSearchParameters.java.

    @@ -990,7 +1004,7 @@ of the nodes.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5682 of file RoutingSearchParameters.java.

    +

    Definition at line 5687 of file RoutingSearchParameters.java.

    @@ -1028,7 +1042,7 @@ This parameter must be greater than 0, and its default value is 1.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5699 of file RoutingSearchParameters.java.

    +

    Definition at line 5704 of file RoutingSearchParameters.java.

    @@ -1065,7 +1079,7 @@ minimum of the two numbers determined by these parameters.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5668 of file RoutingSearchParameters.java.

    +

    Definition at line 5673 of file RoutingSearchParameters.java.

    @@ -1099,7 +1113,7 @@ the savings. If unspecified, its value is considered to be 1.0.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5650 of file RoutingSearchParameters.java.

    +

    Definition at line 5655 of file RoutingSearchParameters.java.

    @@ -1131,7 +1145,7 @@ When true, the routes are built in parallel, sequentially otherwise.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5712 of file RoutingSearchParameters.java.

    +

    Definition at line 5717 of file RoutingSearchParameters.java.

    @@ -1158,7 +1172,7 @@ When true, the routes are built in parallel, sequentially otherwise.
    -

    Definition at line 6164 of file RoutingSearchParameters.java.

    +

    Definition at line 6182 of file RoutingSearchParameters.java.

    @@ -1192,7 +1206,7 @@ Limit to the number of solutions generated during the search. 0 means

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5943 of file RoutingSearchParameters.java.

    +

    Definition at line 5948 of file RoutingSearchParameters.java.

    @@ -1224,7 +1238,7 @@ Limit to the time spent in the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5966 of file RoutingSearchParameters.java.

    +

    Definition at line 5971 of file RoutingSearchParameters.java.

    @@ -1256,7 +1270,7 @@ Limit to the time spent in the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5976 of file RoutingSearchParameters.java.

    +

    Definition at line 5981 of file RoutingSearchParameters.java.

    @@ -1317,7 +1331,7 @@ be run before the CP-SAT solver (cf. use_cp_sat).

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5866 of file RoutingSearchParameters.java.

    +

    Definition at line 5871 of file RoutingSearchParameters.java.

    @@ -1352,7 +1366,7 @@ As of 5/2019, only TSP models can be solved.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5897 of file RoutingSearchParameters.java.

    +

    Definition at line 5902 of file RoutingSearchParameters.java.

    @@ -1387,7 +1401,7 @@ As of 5/2019, only TSP models can be solved.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5884 of file RoutingSearchParameters.java.

    +

    Definition at line 5889 of file RoutingSearchParameters.java.

    @@ -1421,7 +1435,7 @@ be run before the CP-SAT solver (cf. use_cp_sat).

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5854 of file RoutingSearchParameters.java.

    +

    Definition at line 5859 of file RoutingSearchParameters.java.

    @@ -1455,7 +1469,7 @@ to solve the problem.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5839 of file RoutingSearchParameters.java.

    +

    Definition at line 5844 of file RoutingSearchParameters.java.

    @@ -1495,7 +1509,7 @@ increase memory consumption in all cases.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6033 of file RoutingSearchParameters.java.

    +

    Definition at line 6038 of file RoutingSearchParameters.java.

    @@ -1529,7 +1543,7 @@ Use filtered version of first solution strategy if available.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5635 of file RoutingSearchParameters.java.

    +

    Definition at line 5640 of file RoutingSearchParameters.java.

    @@ -1556,7 +1570,7 @@ Use filtered version of first solution strategy if available.
    -

    Definition at line 6346 of file RoutingSearchParameters.java.

    +

    Definition at line 6371 of file RoutingSearchParameters.java.

    @@ -1589,7 +1603,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5990 of file RoutingSearchParameters.java.

    +

    Definition at line 5995 of file RoutingSearchParameters.java.

    @@ -1620,7 +1634,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5752 of file RoutingSearchParameters.java.

    +

    Definition at line 5757 of file RoutingSearchParameters.java.

    @@ -1652,7 +1666,7 @@ Limit to the time spent in the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 5956 of file RoutingSearchParameters.java.

    +

    Definition at line 5961 of file RoutingSearchParameters.java.

    @@ -1679,7 +1693,7 @@ Limit to the time spent in the search.
    -

    Definition at line 237 of file RoutingSearchParameters.java.

    +

    Definition at line 242 of file RoutingSearchParameters.java.

    @@ -1706,7 +1720,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6076 of file RoutingSearchParameters.java.

    +

    Definition at line 6091 of file RoutingSearchParameters.java.

    @@ -1733,7 +1747,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6498 of file RoutingSearchParameters.java.

    +

    Definition at line 6526 of file RoutingSearchParameters.java.

    @@ -1761,7 +1775,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6501 of file RoutingSearchParameters.java.

    +

    Definition at line 6529 of file RoutingSearchParameters.java.

    @@ -1788,7 +1802,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6497 of file RoutingSearchParameters.java.

    +

    Definition at line 6525 of file RoutingSearchParameters.java.

    @@ -1816,7 +1830,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6511 of file RoutingSearchParameters.java.

    +

    Definition at line 6539 of file RoutingSearchParameters.java.

    @@ -1872,7 +1886,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6470 of file RoutingSearchParameters.java.

    +

    Definition at line 6498 of file RoutingSearchParameters.java.

    @@ -1910,7 +1924,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6475 of file RoutingSearchParameters.java.

    +

    Definition at line 6503 of file RoutingSearchParameters.java.

    @@ -1938,7 +1952,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6426 of file RoutingSearchParameters.java.

    +

    Definition at line 6454 of file RoutingSearchParameters.java.

    @@ -1976,7 +1990,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6431 of file RoutingSearchParameters.java.

    +

    Definition at line 6459 of file RoutingSearchParameters.java.

    @@ -2004,7 +2018,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6437 of file RoutingSearchParameters.java.

    +

    Definition at line 6465 of file RoutingSearchParameters.java.

    @@ -2042,7 +2056,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6442 of file RoutingSearchParameters.java.

    +

    Definition at line 6470 of file RoutingSearchParameters.java.

    @@ -2070,7 +2084,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6448 of file RoutingSearchParameters.java.

    +

    Definition at line 6476 of file RoutingSearchParameters.java.

    @@ -2108,7 +2122,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6452 of file RoutingSearchParameters.java.

    +

    Definition at line 6480 of file RoutingSearchParameters.java.

    @@ -2136,7 +2150,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6458 of file RoutingSearchParameters.java.

    +

    Definition at line 6486 of file RoutingSearchParameters.java.

    @@ -2174,7 +2188,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6463 of file RoutingSearchParameters.java.

    +

    Definition at line 6491 of file RoutingSearchParameters.java.

    @@ -2202,7 +2216,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6482 of file RoutingSearchParameters.java.

    +

    Definition at line 6510 of file RoutingSearchParameters.java.

    @@ -2240,7 +2254,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6488 of file RoutingSearchParameters.java.

    +

    Definition at line 6516 of file RoutingSearchParameters.java.

    @@ -2267,7 +2281,7 @@ Limit to the time spent in the search.
    -

    Definition at line 8394 of file RoutingSearchParameters.java.

    +

    Definition at line 8457 of file RoutingSearchParameters.java.

    @@ -2294,7 +2308,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6505 of file RoutingSearchParameters.java.

    +

    Definition at line 6533 of file RoutingSearchParameters.java.

    @@ -2322,7 +2336,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6086 of file RoutingSearchParameters.java.

    +

    Definition at line 6101 of file RoutingSearchParameters.java.

    @@ -2347,7 +2361,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5716 of file RoutingSearchParameters.java.

    +

    Definition at line 5721 of file RoutingSearchParameters.java.

    @@ -2371,7 +2385,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5731 of file RoutingSearchParameters.java.

    +

    Definition at line 5736 of file RoutingSearchParameters.java.

    @@ -2395,7 +2409,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5599 of file RoutingSearchParameters.java.

    +

    Definition at line 5604 of file RoutingSearchParameters.java.

    @@ -2419,7 +2433,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5812 of file RoutingSearchParameters.java.

    +

    Definition at line 5817 of file RoutingSearchParameters.java.

    @@ -2443,7 +2457,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5980 of file RoutingSearchParameters.java.

    +

    Definition at line 5985 of file RoutingSearchParameters.java.

    @@ -2467,7 +2481,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5787 of file RoutingSearchParameters.java.

    +

    Definition at line 5792 of file RoutingSearchParameters.java.

    @@ -2491,7 +2505,31 @@ Limit to the time spent in the search.
    -

    Definition at line 5747 of file RoutingSearchParameters.java.

    +

    Definition at line 5752 of file RoutingSearchParameters.java.

    + +
    + + +

    ◆ LOG_COST_OFFSET_FIELD_NUMBER

    + +
    +
    + + + + + +
    + + + + +
    final int com.google.ortools.constraintsolver.RoutingSearchParameters.LOG_COST_OFFSET_FIELD_NUMBER = 29
    +
    +static
    +
    + +

    Definition at line 6080 of file RoutingSearchParameters.java.

    @@ -2515,7 +2553,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6061 of file RoutingSearchParameters.java.

    +

    Definition at line 6066 of file RoutingSearchParameters.java.

    @@ -2539,7 +2577,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6037 of file RoutingSearchParameters.java.

    +

    Definition at line 6042 of file RoutingSearchParameters.java.

    @@ -2563,7 +2601,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5918 of file RoutingSearchParameters.java.

    +

    Definition at line 5923 of file RoutingSearchParameters.java.

    @@ -2587,7 +2625,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5903 of file RoutingSearchParameters.java.

    +

    Definition at line 5908 of file RoutingSearchParameters.java.

    @@ -2611,7 +2649,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5768 of file RoutingSearchParameters.java.

    +

    Definition at line 5773 of file RoutingSearchParameters.java.

    @@ -2635,7 +2673,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5672 of file RoutingSearchParameters.java.

    +

    Definition at line 5677 of file RoutingSearchParameters.java.

    @@ -2659,7 +2697,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5686 of file RoutingSearchParameters.java.

    +

    Definition at line 5691 of file RoutingSearchParameters.java.

    @@ -2683,7 +2721,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5654 of file RoutingSearchParameters.java.

    +

    Definition at line 5659 of file RoutingSearchParameters.java.

    @@ -2707,7 +2745,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5639 of file RoutingSearchParameters.java.

    +

    Definition at line 5644 of file RoutingSearchParameters.java.

    @@ -2731,7 +2769,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5703 of file RoutingSearchParameters.java.

    +

    Definition at line 5708 of file RoutingSearchParameters.java.

    @@ -2755,7 +2793,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5932 of file RoutingSearchParameters.java.

    +

    Definition at line 5937 of file RoutingSearchParameters.java.

    @@ -2779,7 +2817,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5947 of file RoutingSearchParameters.java.

    +

    Definition at line 5952 of file RoutingSearchParameters.java.

    @@ -2803,7 +2841,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5843 of file RoutingSearchParameters.java.

    +

    Definition at line 5848 of file RoutingSearchParameters.java.

    @@ -2827,7 +2865,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5872 of file RoutingSearchParameters.java.

    +

    Definition at line 5877 of file RoutingSearchParameters.java.

    @@ -2851,7 +2889,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5828 of file RoutingSearchParameters.java.

    +

    Definition at line 5833 of file RoutingSearchParameters.java.

    @@ -2875,7 +2913,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6016 of file RoutingSearchParameters.java.

    +

    Definition at line 6021 of file RoutingSearchParameters.java.

    @@ -2899,7 +2937,7 @@ Limit to the time spent in the search.
    -

    Definition at line 5624 of file RoutingSearchParameters.java.

    +

    Definition at line 5629 of file RoutingSearchParameters.java.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1Builder-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1Builder-members.html index 921e0bb224..1f689e806a 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1Builder-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1Builder-members.html @@ -31,7 +31,6 @@ @@ -60,41 +59,43 @@ clearLnsTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline clearLocalSearchMetaheuristic()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline clearLocalSearchOperators()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearLogCostScalingFactor()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearLogSearch()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearNumberOfSolutionsToCollect()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearOptimizationStep()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearRelocateExpensiveChainNumArcsToConsider()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearSavingsAddReverseArcs()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearSavingsArcCoefficient()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearSavingsMaxMemoryUsageBytes()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearSavingsNeighborsRatio()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearSavingsParallelRoutes()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearSolutionLimit()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearUseCp()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearUseCpSat()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearUseDepthFirstSearch()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearUseFullPropagation()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clearUseUnfilteredFirstSolutionStrategy()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - clone()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getCheapestInsertionFarthestSeedsRatio()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getCheapestInsertionNeighborsRatio()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getDefaultInstanceForType()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getDescriptor()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinlinestatic - getDescriptorForType()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getFirstSolutionStrategy()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getFirstSolutionStrategyValue()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getGuidedLocalSearchLambdaCoefficient()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLnsTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLnsTimeLimitBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLnsTimeLimitOrBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLocalSearchMetaheuristic()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLocalSearchMetaheuristicValue()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLocalSearchOperators()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLocalSearchOperatorsBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - getLocalSearchOperatorsOrBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearLogCostOffset()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearLogCostScalingFactor()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearLogSearch()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearNumberOfSolutionsToCollect()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearOptimizationStep()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearRelocateExpensiveChainNumArcsToConsider()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearSavingsAddReverseArcs()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearSavingsArcCoefficient()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearSavingsMaxMemoryUsageBytes()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearSavingsNeighborsRatio()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearSavingsParallelRoutes()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearSolutionLimit()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearUseCp()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearUseCpSat()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearUseDepthFirstSearch()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearUseFullPropagation()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clearUseUnfilteredFirstSolutionStrategy()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + clone()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getCheapestInsertionFarthestSeedsRatio()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getCheapestInsertionNeighborsRatio()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getDefaultInstanceForType()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getDescriptor()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinlinestatic + getDescriptorForType()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getFirstSolutionStrategy()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getFirstSolutionStrategyValue()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getGuidedLocalSearchLambdaCoefficient()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLnsTimeLimit()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLnsTimeLimitBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLnsTimeLimitOrBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLocalSearchMetaheuristic()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLocalSearchMetaheuristicValue()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLocalSearchOperators()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLocalSearchOperatorsBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLocalSearchOperatorsOrBuilder()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + getLogCostOffset()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline getLogCostScalingFactor()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline getLogSearch()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline getNumberOfSolutionsToCollect()com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline @@ -140,28 +141,29 @@ setLocalSearchMetaheuristicValue(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline setLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline setLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder builderForValue)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setLogCostScalingFactor(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setLogSearch(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setNumberOfSolutionsToCollect(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setOptimizationStep(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setRelocateExpensiveChainNumArcsToConsider(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setSavingsAddReverseArcs(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setSavingsArcCoefficient(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setSavingsMaxMemoryUsageBytes(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setSavingsNeighborsRatio(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setSavingsParallelRoutes(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setSolutionLimit(long value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setTimeLimit(com.google.protobuf.Duration value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setTimeLimit(com.google.protobuf.Duration.Builder builderForValue)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUseCp(com.google.ortools.util.OptionalBoolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUseCpSat(com.google.ortools.util.OptionalBoolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUseCpSatValue(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUseCpValue(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUseDepthFirstSearch(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUseFullPropagation(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline - setUseUnfilteredFirstSolutionStrategy(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setLogCostOffset(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setLogCostScalingFactor(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setLogSearch(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setNumberOfSolutionsToCollect(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setOptimizationStep(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setRelocateExpensiveChainNumArcsToConsider(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setSavingsAddReverseArcs(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setSavingsArcCoefficient(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setSavingsMaxMemoryUsageBytes(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setSavingsNeighborsRatio(double value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setSavingsParallelRoutes(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setSolutionLimit(long value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setTimeLimit(com.google.protobuf.Duration value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setTimeLimit(com.google.protobuf.Duration.Builder builderForValue)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUseCp(com.google.ortools.util.OptionalBoolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUseCpSat(com.google.ortools.util.OptionalBoolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUseCpSatValue(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUseCpValue(int value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUseDepthFirstSearch(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUseFullPropagation(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline + setUseUnfilteredFirstSolutionStrategy(boolean value)com.google.ortools.constraintsolver.RoutingSearchParameters.Builderinline @@ -50,7 +49,7 @@
    com.google.ortools.constraintsolver.RoutingSearchParameters.Builder Class Reference
    -

    Overview

    +

    Detailed Description

     Parameters defining the search used to solve vehicle routing problems.
     If a parameter is unset (or, equivalently, set to its default value),
    @@ -58,30 +57,8 @@ then the routing library will pick its preferred value for that parameter
     automatically: this should be the case for most parameters.
     To see those "default" parameters, call GetDefaultRoutingSearchParameters().
     

    Protobuf type

    operations_research.RoutingSearchParameters
    -

    Definition at line 6527 of file RoutingSearchParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RoutingSearchParameters.Builder:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RoutingSearchParameters.Builder:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    - +

    Definition at line 6555 of file RoutingSearchParameters.java.

    +
    @@ -312,6 +289,15 @@ Public Member Functions + + + + + + + + + @@ -362,7 +348,7 @@ Protected Member Functions

    Public Member Functions

    .lang.Override Builder clear ()
     
    Builder clearLogCostScalingFactor ()
     
    double getLogCostOffset ()
     double log_cost_offset = 29; More...
     
    Builder setLogCostOffset (double value)
     double log_cost_offset = 29; More...
     
    Builder clearLogCostOffset ()
     double log_cost_offset = 29; More...
     
    .lang.Override final Builder setUnknownFields (final com.google.protobuf.UnknownFieldSet unknownFields)
     
    .lang.Override final Builder mergeUnknownFields (final com.google.protobuf.UnknownFieldSet unknownFields)
    -

    Definition at line 6715 of file RoutingSearchParameters.java.

    +

    Definition at line 6746 of file RoutingSearchParameters.java.

    @@ -389,7 +375,7 @@ Protected Member Functions
    -

    Definition at line 6637 of file RoutingSearchParameters.java.

    +

    Definition at line 6667 of file RoutingSearchParameters.java.

    @@ -416,7 +402,7 @@ Protected Member Functions
    -

    Definition at line 6646 of file RoutingSearchParameters.java.

    +

    Definition at line 6676 of file RoutingSearchParameters.java.

    @@ -443,7 +429,7 @@ Protected Member Functions
    -

    Definition at line 6560 of file RoutingSearchParameters.java.

    +

    Definition at line 6588 of file RoutingSearchParameters.java.

    @@ -475,7 +461,7 @@ farthest nodes of the model are inserted as seeds in the GlobalCheapestInsertion first solution heuristic.

    double cheapest_insertion_farthest_seeds_ratio = 16;

    -

    Definition at line 7205 of file RoutingSearchParameters.java.

    +

    Definition at line 7239 of file RoutingSearchParameters.java.

    @@ -508,7 +494,7 @@ If not overridden, its default value is 1, meaning all neighbors will be considered.

    double cheapest_insertion_neighbors_ratio = 21;

    -

    Definition at line 7252 of file RoutingSearchParameters.java.

    +

    Definition at line 7286 of file RoutingSearchParameters.java.

    @@ -536,7 +522,7 @@ considered.
    -

    Definition at line 6699 of file RoutingSearchParameters.java.

    +

    Definition at line 6730 of file RoutingSearchParameters.java.

    @@ -566,7 +552,7 @@ considered. First solution strategies, used as starting point of local search.

    .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;

    -

    Definition at line 6891 of file RoutingSearchParameters.java.

    +

    Definition at line 6925 of file RoutingSearchParameters.java.

    @@ -599,7 +585,7 @@ Lambda coefficient used to penalize arc costs when GUIDED_LOCAL_SEARCH is used. Must be positive.

    double guided_local_search_lambda_coefficient = 5;

    -

    Definition at line 7537 of file RoutingSearchParameters.java.

    +

    Definition at line 7571 of file RoutingSearchParameters.java.

    @@ -630,7 +616,7 @@ Limit to the time spent in the completion search for each local search neighbor.

    .google.protobuf.Duration lns_time_limit = 10;

    -

    Definition at line 8125 of file RoutingSearchParameters.java.

    +

    Definition at line 8159 of file RoutingSearchParameters.java.

    @@ -660,7 +646,7 @@ neighbor. Local search metaheuristics used to guide the search.

    .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;

    -

    Definition at line 7490 of file RoutingSearchParameters.java.

    +

    Definition at line 7524 of file RoutingSearchParameters.java.

    @@ -689,7 +675,36 @@ Local search metaheuristics used to guide the search.

    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;

    -

    Definition at line 7329 of file RoutingSearchParameters.java.

    +

    Definition at line 7363 of file RoutingSearchParameters.java.

    + + + + +

    ◆ clearLogCostOffset()

    + +
    +
    + + + + + +
    + + + + + + + +
    Builder com.google.ortools.constraintsolver.RoutingSearchParameters.Builder.clearLogCostOffset ()
    +
    +inline
    +
    + +

    double log_cost_offset = 29;

    + +

    Definition at line 8414 of file RoutingSearchParameters.java.

    @@ -716,10 +731,11 @@ Local search metaheuristics used to guide the search.
    -In logs, cost values will be unscaled by this factor.
    +In logs, cost values will be unscaled by this factor and reduced by the
    +offset.
     

    double log_cost_scaling_factor = 22;

    -

    Definition at line 8351 of file RoutingSearchParameters.java.

    +

    Definition at line 8388 of file RoutingSearchParameters.java.

    @@ -760,7 +776,7 @@ search neighbors accepted, the total memory used and the percentage of the search done.

    bool log_search = 13;

    -

    Definition at line 8313 of file RoutingSearchParameters.java.

    +

    Definition at line 8347 of file RoutingSearchParameters.java.

    @@ -791,7 +807,7 @@ Number of solutions to collect during the search. Corresponds to the best solutions found during the search. 0 means "unspecified".

    int32 number_of_solutions_to_collect = 17;

    -

    Definition at line 7821 of file RoutingSearchParameters.java.

    +

    Definition at line 7855 of file RoutingSearchParameters.java.

    @@ -819,7 +835,7 @@ solutions found during the search. 0 means "unspecified".
    -

    Definition at line 6704 of file RoutingSearchParameters.java.

    +

    Definition at line 6735 of file RoutingSearchParameters.java.

    @@ -851,7 +867,7 @@ means "unspecified". If this value is fractional, it will get rounded to the nearest integer.

    double optimization_step = 7;

    -

    Definition at line 7780 of file RoutingSearchParameters.java.

    +

    Definition at line 7814 of file RoutingSearchParameters.java.

    @@ -887,7 +903,7 @@ relocate_expensive_chain_num_arcs_to_consider = K is around K*(K-1)/2 * number_of_routes * number_of_nodes.

    int32 relocate_expensive_chain_num_arcs_to_consider = 20;

    -

    Definition at line 7425 of file RoutingSearchParameters.java.

    +

    Definition at line 7459 of file RoutingSearchParameters.java.

    @@ -918,7 +934,7 @@ Add savings related to reverse arcs when finding the nearest neighbors of the nodes.

    bool savings_add_reverse_arcs = 15;

    -

    Definition at line 7073 of file RoutingSearchParameters.java.

    +

    Definition at line 7107 of file RoutingSearchParameters.java.

    @@ -954,7 +970,7 @@ This parameter must be greater than 0, and its default value is 1.
    double savings_arc_coefficient = 18;
     
    -

    Definition at line 7123 of file RoutingSearchParameters.java.

    +

    Definition at line 7157 of file RoutingSearchParameters.java.

    @@ -989,7 +1005,7 @@ are specified, the number of neighbors considered for each node will be the minimum of the two numbers determined by these parameters.

    double savings_max_memory_usage_bytes = 23;

    -

    Definition at line 7032 of file RoutingSearchParameters.java.

    +

    Definition at line 7066 of file RoutingSearchParameters.java.

    @@ -1021,7 +1037,7 @@ Ratio (in ]0, 1]) of neighbors to consider for each node when constructing the savings. If unspecified, its value is considered to be 1.0.

    double savings_neighbors_ratio = 14;

    -

    Definition at line 6979 of file RoutingSearchParameters.java.

    +

    Definition at line 7013 of file RoutingSearchParameters.java.

    @@ -1051,7 +1067,7 @@ the savings. If unspecified, its value is considered to be 1.0. When true, the routes are built in parallel, sequentially otherwise.

    bool savings_parallel_routes = 19;

    -

    Definition at line 7161 of file RoutingSearchParameters.java.

    +

    Definition at line 7195 of file RoutingSearchParameters.java.

    @@ -1083,7 +1099,7 @@ Limit to the number of solutions generated during the search. 0 means "unspecified".

    int64 solution_limit = 8;

    -

    Definition at line 7865 of file RoutingSearchParameters.java.

    +

    Definition at line 7899 of file RoutingSearchParameters.java.

    @@ -1113,7 +1129,7 @@ Limit to the number of solutions generated during the search. 0 means Limit to the time spent in the search.

    .google.protobuf.Duration time_limit = 9;

    -

    Definition at line 7966 of file RoutingSearchParameters.java.

    +

    Definition at line 8000 of file RoutingSearchParameters.java.

    @@ -1145,7 +1161,7 @@ search will be used depending on the value of use_depth_first_search. Will be run before the CP-SAT solver (cf. use_cp_sat).

    .operations_research.OptionalBoolean use_cp = 28;

    -

    Definition at line 7656 of file RoutingSearchParameters.java.

    +

    Definition at line 7690 of file RoutingSearchParameters.java.

    @@ -1178,7 +1194,7 @@ remaining and will use the CP solution as a hint for the CP-SAT search. As of 5/2019, only TSP models can be solved.

    .operations_research.OptionalBoolean use_cp_sat = 27;

    -

    Definition at line 7736 of file RoutingSearchParameters.java.

    +

    Definition at line 7770 of file RoutingSearchParameters.java.

    @@ -1210,7 +1226,7 @@ If true, the solver should use depth-first search rather than local search to solve the problem.

    bool use_depth_first_search = 6;

    -

    Definition at line 7581 of file RoutingSearchParameters.java.

    +

    Definition at line 7615 of file RoutingSearchParameters.java.

    @@ -1248,7 +1264,7 @@ Changing this setting to true will slow down the search in most cases and increase memory consumption in all cases.

    bool use_full_propagation = 11;

    -

    Definition at line 8242 of file RoutingSearchParameters.java.

    +

    Definition at line 8276 of file RoutingSearchParameters.java.

    @@ -1280,7 +1296,7 @@ Don't touch these unless you know what you are doing. Use filtered version of first solution strategy if available.

    bool use_unfiltered_first_solution_strategy = 2;

    -

    Definition at line 6935 of file RoutingSearchParameters.java.

    +

    Definition at line 6969 of file RoutingSearchParameters.java.

    @@ -1307,7 +1323,7 @@ Use filtered version of first solution strategy if available.
    -

    Definition at line 6689 of file RoutingSearchParameters.java.

    +

    Definition at line 6720 of file RoutingSearchParameters.java.

    @@ -1341,7 +1357,7 @@ GlobalCheapestInsertion first solution heuristic.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7178 of file RoutingSearchParameters.java.

    +

    Definition at line 7212 of file RoutingSearchParameters.java.

    @@ -1376,7 +1392,7 @@ considered.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7223 of file RoutingSearchParameters.java.

    +

    Definition at line 7257 of file RoutingSearchParameters.java.

    @@ -1403,7 +1419,7 @@ considered.
    -

    Definition at line 6632 of file RoutingSearchParameters.java.

    +

    Definition at line 6662 of file RoutingSearchParameters.java.

    @@ -1430,7 +1446,7 @@ considered.
    -

    Definition at line 6532 of file RoutingSearchParameters.java.

    +

    Definition at line 6560 of file RoutingSearchParameters.java.

    @@ -1457,7 +1473,7 @@ considered.
    -

    Definition at line 6627 of file RoutingSearchParameters.java.

    +

    Definition at line 6657 of file RoutingSearchParameters.java.

    @@ -1489,7 +1505,7 @@ First solution strategies, used as starting point of local search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6863 of file RoutingSearchParameters.java.

    +

    Definition at line 6897 of file RoutingSearchParameters.java.

    @@ -1521,7 +1537,7 @@ First solution strategies, used as starting point of local search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6841 of file RoutingSearchParameters.java.

    +

    Definition at line 6875 of file RoutingSearchParameters.java.

    @@ -1556,7 +1572,7 @@ used. Must be positive.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7508 of file RoutingSearchParameters.java.

    +

    Definition at line 7542 of file RoutingSearchParameters.java.

    @@ -1589,7 +1605,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 8047 of file RoutingSearchParameters.java.

    +

    Definition at line 8081 of file RoutingSearchParameters.java.

    @@ -1620,7 +1636,7 @@ Limit to the time spent in the completion search for each local search neighbor.

    .google.protobuf.Duration lns_time_limit = 10;

    -

    Definition at line 8144 of file RoutingSearchParameters.java.

    +

    Definition at line 8178 of file RoutingSearchParameters.java.

    @@ -1653,7 +1669,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 8157 of file RoutingSearchParameters.java.

    +

    Definition at line 8191 of file RoutingSearchParameters.java.

    @@ -1685,7 +1701,7 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7462 of file RoutingSearchParameters.java.

    +

    Definition at line 7496 of file RoutingSearchParameters.java.

    @@ -1717,7 +1733,7 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7440 of file RoutingSearchParameters.java.

    +

    Definition at line 7474 of file RoutingSearchParameters.java.

    @@ -1748,7 +1764,7 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7271 of file RoutingSearchParameters.java.

    +

    Definition at line 7305 of file RoutingSearchParameters.java.

    @@ -1777,7 +1793,7 @@ Local search metaheuristics used to guide the search.

    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;

    -

    Definition at line 7343 of file RoutingSearchParameters.java.

    +

    Definition at line 7377 of file RoutingSearchParameters.java.

    @@ -1808,7 +1824,38 @@ Local search metaheuristics used to guide the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7351 of file RoutingSearchParameters.java.

    +

    Definition at line 7385 of file RoutingSearchParameters.java.

    + + + + +

    ◆ getLogCostOffset()

    + +
    +
    + + + + + +
    + + + + + + + +
    double com.google.ortools.constraintsolver.RoutingSearchParameters.Builder.getLogCostOffset ()
    +
    +inline
    +
    + +

    double log_cost_offset = 29;

    + +

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    + +

    Definition at line 8399 of file RoutingSearchParameters.java.

    @@ -1835,12 +1882,13 @@ Local search metaheuristics used to guide the search.
    -In logs, cost values will be unscaled by this factor.
    +In logs, cost values will be unscaled by this factor and reduced by the
    +offset.
     

    double log_cost_scaling_factor = 22;

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 8328 of file RoutingSearchParameters.java.

    +

    Definition at line 8363 of file RoutingSearchParameters.java.

    @@ -1883,7 +1931,7 @@ search done.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 8268 of file RoutingSearchParameters.java.

    +

    Definition at line 8302 of file RoutingSearchParameters.java.

    @@ -1916,7 +1964,7 @@ solutions found during the search. 0 means "unspecified".

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7796 of file RoutingSearchParameters.java.

    +

    Definition at line 7830 of file RoutingSearchParameters.java.

    @@ -1950,7 +1998,7 @@ the nearest integer.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7753 of file RoutingSearchParameters.java.

    +

    Definition at line 7787 of file RoutingSearchParameters.java.

    @@ -1988,7 +2036,7 @@ K*(K-1)/2 * number_of_routes * number_of_nodes.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7390 of file RoutingSearchParameters.java.

    +

    Definition at line 7424 of file RoutingSearchParameters.java.

    @@ -2021,7 +2069,7 @@ of the nodes.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7048 of file RoutingSearchParameters.java.

    +

    Definition at line 7082 of file RoutingSearchParameters.java.

    @@ -2059,7 +2107,7 @@ This parameter must be greater than 0, and its default value is 1.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7092 of file RoutingSearchParameters.java.

    +

    Definition at line 7126 of file RoutingSearchParameters.java.

    @@ -2096,7 +2144,7 @@ minimum of the two numbers determined by these parameters.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6999 of file RoutingSearchParameters.java.

    +

    Definition at line 7033 of file RoutingSearchParameters.java.

    @@ -2130,7 +2178,7 @@ the savings. If unspecified, its value is considered to be 1.0.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6952 of file RoutingSearchParameters.java.

    +

    Definition at line 6986 of file RoutingSearchParameters.java.

    @@ -2162,7 +2210,7 @@ When true, the routes are built in parallel, sequentially otherwise.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7138 of file RoutingSearchParameters.java.

    +

    Definition at line 7172 of file RoutingSearchParameters.java.

    @@ -2196,7 +2244,7 @@ Limit to the number of solutions generated during the search. 0 means

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7838 of file RoutingSearchParameters.java.

    +

    Definition at line 7872 of file RoutingSearchParameters.java.

    @@ -2228,7 +2276,7 @@ Limit to the time spent in the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7892 of file RoutingSearchParameters.java.

    +

    Definition at line 7926 of file RoutingSearchParameters.java.

    @@ -2258,7 +2306,7 @@ Limit to the time spent in the search. Limit to the time spent in the search.

    .google.protobuf.Duration time_limit = 9;

    -

    Definition at line 7984 of file RoutingSearchParameters.java.

    +

    Definition at line 8018 of file RoutingSearchParameters.java.

    @@ -2290,7 +2338,7 @@ Limit to the time spent in the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7996 of file RoutingSearchParameters.java.

    +

    Definition at line 8030 of file RoutingSearchParameters.java.

    @@ -2324,7 +2372,7 @@ be run before the CP-SAT solver (cf. use_cp_sat).

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7624 of file RoutingSearchParameters.java.

    +

    Definition at line 7658 of file RoutingSearchParameters.java.

    @@ -2359,7 +2407,7 @@ As of 5/2019, only TSP models can be solved.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7702 of file RoutingSearchParameters.java.

    +

    Definition at line 7736 of file RoutingSearchParameters.java.

    @@ -2394,7 +2442,7 @@ As of 5/2019, only TSP models can be solved.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7674 of file RoutingSearchParameters.java.

    +

    Definition at line 7708 of file RoutingSearchParameters.java.

    @@ -2428,7 +2476,7 @@ be run before the CP-SAT solver (cf. use_cp_sat).

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7598 of file RoutingSearchParameters.java.

    +

    Definition at line 7632 of file RoutingSearchParameters.java.

    @@ -2462,7 +2510,7 @@ to solve the problem.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7554 of file RoutingSearchParameters.java.

    +

    Definition at line 7588 of file RoutingSearchParameters.java.

    @@ -2502,7 +2550,7 @@ increase memory consumption in all cases.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 8203 of file RoutingSearchParameters.java.

    +

    Definition at line 8237 of file RoutingSearchParameters.java.

    @@ -2536,7 +2584,7 @@ Use filtered version of first solution strategy if available.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 6908 of file RoutingSearchParameters.java.

    +

    Definition at line 6942 of file RoutingSearchParameters.java.

    @@ -2569,7 +2617,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 8036 of file RoutingSearchParameters.java.

    +

    Definition at line 8070 of file RoutingSearchParameters.java.

    @@ -2600,7 +2648,7 @@ neighbor.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7265 of file RoutingSearchParameters.java.

    +

    Definition at line 7299 of file RoutingSearchParameters.java.

    @@ -2632,7 +2680,7 @@ Limit to the time spent in the search.

    Implements com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder.

    -

    Definition at line 7882 of file RoutingSearchParameters.java.

    +

    Definition at line 7916 of file RoutingSearchParameters.java.

    @@ -2659,7 +2707,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6538 of file RoutingSearchParameters.java.

    +

    Definition at line 6566 of file RoutingSearchParameters.java.

    @@ -2686,7 +2734,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6810 of file RoutingSearchParameters.java.

    +

    Definition at line 6844 of file RoutingSearchParameters.java.

    @@ -2714,7 +2762,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6721 of file RoutingSearchParameters.java.

    +

    Definition at line 6752 of file RoutingSearchParameters.java.

    @@ -2742,7 +2790,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6730 of file RoutingSearchParameters.java.

    +

    Definition at line 6761 of file RoutingSearchParameters.java.

    @@ -2780,7 +2828,7 @@ Limit to the time spent in the search.
    -

    Definition at line 6815 of file RoutingSearchParameters.java.

    +

    Definition at line 6849 of file RoutingSearchParameters.java.

    @@ -2812,7 +2860,7 @@ Limit to the time spent in the completion search for each local search neighbor.

    .google.protobuf.Duration lns_time_limit = 10;

    -

    Definition at line 8102 of file RoutingSearchParameters.java.

    +

    Definition at line 8136 of file RoutingSearchParameters.java.

    @@ -2842,7 +2890,7 @@ neighbor.

    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;

    -

    Definition at line 7311 of file RoutingSearchParameters.java.

    +

    Definition at line 7345 of file RoutingSearchParameters.java.

    @@ -2873,7 +2921,7 @@ neighbor. Limit to the time spent in the search.

    .google.protobuf.Duration time_limit = 9;

    -

    Definition at line 7944 of file RoutingSearchParameters.java.

    +

    Definition at line 7978 of file RoutingSearchParameters.java.

    @@ -2901,7 +2949,7 @@ Limit to the time spent in the search.
    -

    Definition at line 8364 of file RoutingSearchParameters.java.

    +

    Definition at line 8427 of file RoutingSearchParameters.java.

    @@ -2934,7 +2982,7 @@ farthest nodes of the model are inserted as seeds in the GlobalCheapestInsertion first solution heuristic.

    double cheapest_insertion_farthest_seeds_ratio = 16;

    -

    Definition at line 7190 of file RoutingSearchParameters.java.

    +

    Definition at line 7224 of file RoutingSearchParameters.java.

    @@ -2968,7 +3016,7 @@ If not overridden, its default value is 1, meaning all neighbors will be considered.

    double cheapest_insertion_neighbors_ratio = 21;

    -

    Definition at line 7236 of file RoutingSearchParameters.java.

    +

    Definition at line 7270 of file RoutingSearchParameters.java.

    @@ -3006,7 +3054,7 @@ considered.
    -

    Definition at line 6693 of file RoutingSearchParameters.java.

    +

    Definition at line 6724 of file RoutingSearchParameters.java.

    @@ -3037,7 +3085,7 @@ considered. First solution strategies, used as starting point of local search.

    .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;

    -

    Definition at line 6875 of file RoutingSearchParameters.java.

    +

    Definition at line 6909 of file RoutingSearchParameters.java.

    @@ -3068,7 +3116,7 @@ First solution strategies, used as starting point of local search. First solution strategies, used as starting point of local search.

    .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;

    -

    Definition at line 6851 of file RoutingSearchParameters.java.

    +

    Definition at line 6885 of file RoutingSearchParameters.java.

    @@ -3102,7 +3150,7 @@ Lambda coefficient used to penalize arc costs when GUIDED_LOCAL_SEARCH is used. Must be positive.

    double guided_local_search_lambda_coefficient = 5;

    -

    Definition at line 7521 of file RoutingSearchParameters.java.

    +

    Definition at line 7555 of file RoutingSearchParameters.java.

    @@ -3134,7 +3182,7 @@ Limit to the time spent in the completion search for each local search neighbor.

    .google.protobuf.Duration lns_time_limit = 10;

    -

    Definition at line 8062 of file RoutingSearchParameters.java.

    +

    Definition at line 8096 of file RoutingSearchParameters.java.

    @@ -3166,7 +3214,7 @@ Limit to the time spent in the completion search for each local search neighbor.

    .google.protobuf.Duration lns_time_limit = 10;

    -

    Definition at line 8083 of file RoutingSearchParameters.java.

    +

    Definition at line 8117 of file RoutingSearchParameters.java.

    @@ -3197,7 +3245,7 @@ neighbor. Local search metaheuristics used to guide the search.

    .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;

    -

    Definition at line 7474 of file RoutingSearchParameters.java.

    +

    Definition at line 7508 of file RoutingSearchParameters.java.

    @@ -3228,7 +3276,7 @@ Local search metaheuristics used to guide the search. Local search metaheuristics used to guide the search.

    .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;

    -

    Definition at line 7450 of file RoutingSearchParameters.java.

    +

    Definition at line 7484 of file RoutingSearchParameters.java.

    @@ -3258,7 +3306,7 @@ Local search metaheuristics used to guide the search.

    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;

    -

    Definition at line 7281 of file RoutingSearchParameters.java.

    +

    Definition at line 7315 of file RoutingSearchParameters.java.

    @@ -3288,7 +3336,37 @@ Local search metaheuristics used to guide the search.

    .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;

    -

    Definition at line 7297 of file RoutingSearchParameters.java.

    +

    Definition at line 7331 of file RoutingSearchParameters.java.

    + + + + +

    ◆ setLogCostOffset()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Builder com.google.ortools.constraintsolver.RoutingSearchParameters.Builder.setLogCostOffset (double value)
    +
    +inline
    +
    + +

    double log_cost_offset = 29;

    + +

    Definition at line 8405 of file RoutingSearchParameters.java.

    @@ -3316,10 +3394,11 @@ Local search metaheuristics used to guide the search.
    -In logs, cost values will be unscaled by this factor.
    +In logs, cost values will be unscaled by this factor and reduced by the
    +offset.
     

    double log_cost_scaling_factor = 22;

    -

    Definition at line 8338 of file RoutingSearchParameters.java.

    +

    Definition at line 8374 of file RoutingSearchParameters.java.

    @@ -3361,7 +3440,7 @@ search neighbors accepted, the total memory used and the percentage of the search done.

    bool log_search = 13;

    -

    Definition at line 8289 of file RoutingSearchParameters.java.

    +

    Definition at line 8323 of file RoutingSearchParameters.java.

    @@ -3393,7 +3472,7 @@ Number of solutions to collect during the search. Corresponds to the best solutions found during the search. 0 means "unspecified".

    int32 number_of_solutions_to_collect = 17;

    -

    Definition at line 7807 of file RoutingSearchParameters.java.

    +

    Definition at line 7841 of file RoutingSearchParameters.java.

    @@ -3426,7 +3505,7 @@ means "unspecified". If this value is fractional, it will get rounded to the nearest integer.

    double optimization_step = 7;

    -

    Definition at line 7765 of file RoutingSearchParameters.java.

    +

    Definition at line 7799 of file RoutingSearchParameters.java.

    @@ -3463,7 +3542,7 @@ relocate_expensive_chain_num_arcs_to_consider = K is around K*(K-1)/2 * number_of_routes * number_of_nodes.

    int32 relocate_expensive_chain_num_arcs_to_consider = 20;

    -

    Definition at line 7406 of file RoutingSearchParameters.java.

    +

    Definition at line 7440 of file RoutingSearchParameters.java.

    @@ -3507,7 +3586,7 @@ K*(K-1)/2 * number_of_routes * number_of_nodes.
    -

    Definition at line 6709 of file RoutingSearchParameters.java.

    +

    Definition at line 6740 of file RoutingSearchParameters.java.

    @@ -3539,7 +3618,7 @@ Add savings related to reverse arcs when finding the nearest neighbors of the nodes.

    bool savings_add_reverse_arcs = 15;

    -

    Definition at line 7059 of file RoutingSearchParameters.java.

    +

    Definition at line 7093 of file RoutingSearchParameters.java.

    @@ -3576,7 +3655,7 @@ This parameter must be greater than 0, and its default value is 1.
    double savings_arc_coefficient = 18;
     
    -

    Definition at line 7106 of file RoutingSearchParameters.java.

    +

    Definition at line 7140 of file RoutingSearchParameters.java.

    @@ -3612,7 +3691,7 @@ are specified, the number of neighbors considered for each node will be the minimum of the two numbers determined by these parameters.

    double savings_max_memory_usage_bytes = 23;

    -

    Definition at line 7014 of file RoutingSearchParameters.java.

    +

    Definition at line 7048 of file RoutingSearchParameters.java.

    @@ -3645,7 +3724,7 @@ Ratio (in ]0, 1]) of neighbors to consider for each node when constructing the savings. If unspecified, its value is considered to be 1.0.

    double savings_neighbors_ratio = 14;

    -

    Definition at line 6964 of file RoutingSearchParameters.java.

    +

    Definition at line 6998 of file RoutingSearchParameters.java.

    @@ -3676,7 +3755,7 @@ the savings. If unspecified, its value is considered to be 1.0. When true, the routes are built in parallel, sequentially otherwise.

    bool savings_parallel_routes = 19;

    -

    Definition at line 7148 of file RoutingSearchParameters.java.

    +

    Definition at line 7182 of file RoutingSearchParameters.java.

    @@ -3709,7 +3788,7 @@ Limit to the number of solutions generated during the search. 0 means "unspecified".

    int64 solution_limit = 8;

    -

    Definition at line 7850 of file RoutingSearchParameters.java.

    +

    Definition at line 7884 of file RoutingSearchParameters.java.

    @@ -3740,7 +3819,7 @@ Limit to the number of solutions generated during the search. 0 means Limit to the time spent in the search.

    .google.protobuf.Duration time_limit = 9;

    -

    Definition at line 7906 of file RoutingSearchParameters.java.

    +

    Definition at line 7940 of file RoutingSearchParameters.java.

    @@ -3771,7 +3850,7 @@ Limit to the time spent in the search. Limit to the time spent in the search.

    .google.protobuf.Duration time_limit = 9;

    -

    Definition at line 7926 of file RoutingSearchParameters.java.

    +

    Definition at line 7960 of file RoutingSearchParameters.java.

    @@ -3799,7 +3878,7 @@ Limit to the time spent in the search.
    -

    Definition at line 8358 of file RoutingSearchParameters.java.

    +

    Definition at line 8421 of file RoutingSearchParameters.java.

    @@ -3832,7 +3911,7 @@ search will be used depending on the value of use_depth_first_search. Will be run before the CP-SAT solver (cf. use_cp_sat).

    .operations_research.OptionalBoolean use_cp = 28;

    -

    Definition at line 7638 of file RoutingSearchParameters.java.

    +

    Definition at line 7672 of file RoutingSearchParameters.java.

    @@ -3866,7 +3945,7 @@ remaining and will use the CP solution as a hint for the CP-SAT search. As of 5/2019, only TSP models can be solved.

    .operations_research.OptionalBoolean use_cp_sat = 27;

    -

    Definition at line 7717 of file RoutingSearchParameters.java.

    +

    Definition at line 7751 of file RoutingSearchParameters.java.

    @@ -3900,7 +3979,7 @@ remaining and will use the CP solution as a hint for the CP-SAT search. As of 5/2019, only TSP models can be solved.

    .operations_research.OptionalBoolean use_cp_sat = 27;

    -

    Definition at line 7687 of file RoutingSearchParameters.java.

    +

    Definition at line 7721 of file RoutingSearchParameters.java.

    @@ -3933,7 +4012,7 @@ search will be used depending on the value of use_depth_first_search. Will be run before the CP-SAT solver (cf. use_cp_sat).

    .operations_research.OptionalBoolean use_cp = 28;

    -

    Definition at line 7610 of file RoutingSearchParameters.java.

    +

    Definition at line 7644 of file RoutingSearchParameters.java.

    @@ -3966,7 +4045,7 @@ If true, the solver should use depth-first search rather than local search to solve the problem.

    bool use_depth_first_search = 6;

    -

    Definition at line 7566 of file RoutingSearchParameters.java.

    +

    Definition at line 7600 of file RoutingSearchParameters.java.

    @@ -4005,7 +4084,7 @@ Changing this setting to true will slow down the search in most cases and increase memory consumption in all cases.

    bool use_full_propagation = 11;

    -

    Definition at line 8221 of file RoutingSearchParameters.java.

    +

    Definition at line 8255 of file RoutingSearchParameters.java.

    @@ -4038,7 +4117,7 @@ Don't touch these unless you know what you are doing. Use filtered version of first solution strategy if available.

    bool use_unfiltered_first_solution_strategy = 2;

    -

    Definition at line 6920 of file RoutingSearchParameters.java.

    +

    Definition at line 6954 of file RoutingSearchParameters.java.

    diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeigh1ddde2979ba9541ef1853d37306a859e.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeigh1ddde2979ba9541ef1853d37306a859e.html index 86b43b6f82..1ba968e63e 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeigh1ddde2979ba9541ef1853d37306a859e.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeigh1ddde2979ba9541ef1853d37306a859e.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators-members.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators-members.html index 101572b91d..3852276013 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators-members.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators-members.html @@ -31,7 +31,6 @@ diff --git a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators.html b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators.html index dc66189a60..417dbf6289 100644 --- a/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators.html +++ b/docs/java/classcom_1_1google_1_1ortools_1_1constraintsolver_1_1RoutingSearchParameters_1_1LocalSearchNeighborhoodOperators.html @@ -31,7 +31,6 @@ @@ -52,35 +51,13 @@
    com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators Class Reference
    -

    Overview

    +

    Detailed Description

     Local search neighborhood operators used to build a solutions neighborhood.
     Next ID: 27
     

    Protobuf type

    operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators
    -

    Definition at line 1041 of file RoutingSearchParameters.java.

    -
    -Inheritance diagram for com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    -
    -Collaboration diagram for com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    - +

    Definition at line 1046 of file RoutingSearchParameters.java.

    +
    @@ -339,7 +316,7 @@ Protected Member Functions

    Classes

    class  Builder
    -

    Definition at line 2502 of file RoutingSearchParameters.java.

    +

    Definition at line 2507 of file RoutingSearchParameters.java.

    @@ -366,7 +343,7 @@ Protected Member Functions
    -

    Definition at line 5568 of file RoutingSearchParameters.java.

    +

    Definition at line 5573 of file RoutingSearchParameters.java.

    @@ -393,7 +370,7 @@ Protected Member Functions
    -

    Definition at line 5593 of file RoutingSearchParameters.java.

    +

    Definition at line 5598 of file RoutingSearchParameters.java.

    @@ -420,7 +397,7 @@ Protected Member Functions
    -

    Definition at line 1285 of file RoutingSearchParameters.java.

    +

    Definition at line 1290 of file RoutingSearchParameters.java.

    @@ -447,7 +424,7 @@ Protected Member Functions
    -

    Definition at line 5588 of file RoutingSearchParameters.java.

    +

    Definition at line 5593 of file RoutingSearchParameters.java.

    @@ -474,7 +451,7 @@ Protected Member Functions
    -

    Definition at line 2387 of file RoutingSearchParameters.java.

    +

    Definition at line 2392 of file RoutingSearchParameters.java.

    @@ -501,7 +478,7 @@ Protected Member Functions
    -

    Definition at line 1088 of file RoutingSearchParameters.java.

    +

    Definition at line 1093 of file RoutingSearchParameters.java.

    @@ -541,7 +518,7 @@ therefore not be moved):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1666 of file RoutingSearchParameters.java.

    +

    Definition at line 1671 of file RoutingSearchParameters.java.

    @@ -573,7 +550,7 @@ Not implemented yet. TODO(b/68128619): Implement.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1691 of file RoutingSearchParameters.java.

    +

    Definition at line 1696 of file RoutingSearchParameters.java.

    @@ -605,7 +582,7 @@ Not implemented yet. TODO(b/68128619): Implement.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1681 of file RoutingSearchParameters.java.

    +

    Definition at line 1686 of file RoutingSearchParameters.java.

    @@ -645,7 +622,7 @@ therefore not be moved):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1648 of file RoutingSearchParameters.java.

    +

    Definition at line 1653 of file RoutingSearchParameters.java.

    @@ -683,7 +660,7 @@ be moved):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1561 of file RoutingSearchParameters.java.

    +

    Definition at line 1566 of file RoutingSearchParameters.java.

    @@ -721,7 +698,7 @@ therefore not be moved, and (A, B) and (C,D) are pairs of nodes):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1598 of file RoutingSearchParameters.java.

    +

    Definition at line 1603 of file RoutingSearchParameters.java.

    @@ -759,7 +736,7 @@ therefore not be moved, and (A, B) and (C,D) are pairs of nodes):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1582 of file RoutingSearchParameters.java.

    +

    Definition at line 1587 of file RoutingSearchParameters.java.

    @@ -792,7 +769,7 @@ see use_relocate_subtrip for a definition of subtrips.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1625 of file RoutingSearchParameters.java.

    +

    Definition at line 1630 of file RoutingSearchParameters.java.

    @@ -825,7 +802,7 @@ see use_relocate_subtrip for a definition of subtrips.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1614 of file RoutingSearchParameters.java.

    +

    Definition at line 1619 of file RoutingSearchParameters.java.

    @@ -863,7 +840,7 @@ be moved):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1545 of file RoutingSearchParameters.java.

    +

    Definition at line 1550 of file RoutingSearchParameters.java.

    @@ -904,7 +881,7 @@ Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2112 of file RoutingSearchParameters.java.

    +

    Definition at line 2117 of file RoutingSearchParameters.java.

    @@ -945,7 +922,7 @@ Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2093 of file RoutingSearchParameters.java.

    +

    Definition at line 2098 of file RoutingSearchParameters.java.

    @@ -977,7 +954,7 @@ Operator which relaxes one entire path and all unactive nodes.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2221 of file RoutingSearchParameters.java.

    +

    Definition at line 2226 of file RoutingSearchParameters.java.

    @@ -1009,7 +986,7 @@ Operator which relaxes one entire path and all unactive nodes.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2211 of file RoutingSearchParameters.java.

    +

    Definition at line 2216 of file RoutingSearchParameters.java.

    @@ -1043,7 +1020,7 @@ nodes or swaping arcs.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2285 of file RoutingSearchParameters.java.

    +

    Definition at line 2290 of file RoutingSearchParameters.java.

    @@ -1077,7 +1054,7 @@ nodes or swaping arcs.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2273 of file RoutingSearchParameters.java.

    +

    Definition at line 2278 of file RoutingSearchParameters.java.

    @@ -1115,7 +1092,7 @@ be moved, and (A, B) and (C, D) are pair of nodes):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1410 of file RoutingSearchParameters.java.

    +

    Definition at line 1415 of file RoutingSearchParameters.java.

    @@ -1153,7 +1130,7 @@ be moved, and (A, B) and (C, D) are pair of nodes):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1394 of file RoutingSearchParameters.java.

    +

    Definition at line 1399 of file RoutingSearchParameters.java.

    @@ -1188,7 +1165,7 @@ the global gain is positive.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1853 of file RoutingSearchParameters.java.

    +

    Definition at line 1858 of file RoutingSearchParameters.java.

    @@ -1223,7 +1200,7 @@ the global gain is positive.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1840 of file RoutingSearchParameters.java.

    +

    Definition at line 1845 of file RoutingSearchParameters.java.

    @@ -1261,7 +1238,7 @@ Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1925 of file RoutingSearchParameters.java.

    +

    Definition at line 1930 of file RoutingSearchParameters.java.

    @@ -1299,7 +1276,7 @@ Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1909 of file RoutingSearchParameters.java.

    +

    Definition at line 1914 of file RoutingSearchParameters.java.

    @@ -1336,7 +1313,7 @@ and last nodes of the path) are:

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2036 of file RoutingSearchParameters.java.

    +

    Definition at line 2041 of file RoutingSearchParameters.java.

    @@ -1373,7 +1350,7 @@ and last nodes of the path) are:

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2021 of file RoutingSearchParameters.java.

    +

    Definition at line 2026 of file RoutingSearchParameters.java.

    @@ -1409,7 +1386,7 @@ and last nodes of the path) are:

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2001 of file RoutingSearchParameters.java.

    +

    Definition at line 2006 of file RoutingSearchParameters.java.

    @@ -1445,7 +1422,7 @@ and last nodes of the path) are:

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1987 of file RoutingSearchParameters.java.

    +

    Definition at line 1992 of file RoutingSearchParameters.java.

    @@ -1487,7 +1464,7 @@ of nodes) are:

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2157 of file RoutingSearchParameters.java.

    +

    Definition at line 2162 of file RoutingSearchParameters.java.

    @@ -1529,7 +1506,7 @@ of nodes) are:

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2137 of file RoutingSearchParameters.java.

    +

    Definition at line 2142 of file RoutingSearchParameters.java.

    @@ -1571,7 +1548,7 @@ path).

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1822 of file RoutingSearchParameters.java.

    +

    Definition at line 1827 of file RoutingSearchParameters.java.

    @@ -1613,7 +1590,7 @@ path).

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1802 of file RoutingSearchParameters.java.

    +

    Definition at line 1807 of file RoutingSearchParameters.java.

    @@ -1652,7 +1629,7 @@ overlap.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2196 of file RoutingSearchParameters.java.

    +

    Definition at line 2201 of file RoutingSearchParameters.java.

    @@ -1691,7 +1668,7 @@ overlap.

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 2179 of file RoutingSearchParameters.java.

    +

    Definition at line 2184 of file RoutingSearchParameters.java.

    @@ -1731,7 +1708,7 @@ be moved):

    Implements com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder.

    -

    Definition at line 1332 of file RoutingSearchParameters.java.

    +

    Definition at line 1337 of file RoutingSearchParameters.java.

    @@ -1774,7 +1751,7 @@ As of 3/2017, the operator is limited to two kinds of moves: