com.google.ortools.sat.SatParameters Maven / Gradle / Ivy
The newest version!
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ortools/sat/sat_parameters.proto
package com.google.ortools.sat;
/**
*
* Contains the definitions for all the sat algorithm parameters and their
* default values.
* NEXT TAG: 167
*
*
* Protobuf type {@code operations_research.sat.SatParameters}
*/
public final class SatParameters extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:operations_research.sat.SatParameters)
SatParametersOrBuilder {
private static final long serialVersionUID = 0L;
// Use SatParameters.newBuilder() to construct.
private SatParameters(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
super(builder);
}
private SatParameters() {
preferredVariableOrder_ = 0;
initialPolarity_ = 1;
usePhaseSaving_ = true;
minimizationAlgorithm_ = 2;
binaryMinimizationAlgorithm_ = 1;
subsumptionDuringConflictAnalysis_ = true;
clauseCleanupPeriod_ = 10000;
clauseCleanupTarget_ = 10000;
clauseCleanupProtection_ = 0;
clauseCleanupLbdBound_ = 5;
clauseCleanupOrdering_ = 0;
pbCleanupIncrement_ = 200;
pbCleanupRatio_ = 0.5D;
minimizeWithPropagationRestartPeriod_ = 10;
minimizeWithPropagationNumDecisions_ = 1000;
variableActivityDecay_ = 0.8D;
maxVariableActivityValue_ = 1e+100D;
glucoseMaxDecay_ = 0.95D;
glucoseDecayIncrement_ = 0.01D;
glucoseDecayIncrementPeriod_ = 5000;
clauseActivityDecay_ = 0.999D;
maxClauseActivityValue_ = 1e+20D;
restartAlgorithms_ = java.util.Collections.emptyList();
defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
restartPeriod_ = 50;
restartRunningWindowSize_ = 50;
restartDlAverageRatio_ = 1D;
restartLbdAverageRatio_ = 1D;
blockingRestartWindowSize_ = 5000;
blockingRestartMultiplier_ = 1.4D;
maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
maxDeterministicTime_ = Double.POSITIVE_INFINITY;
maxNumberOfConflicts_ = 9223372036854775807L;
maxMemoryInMb_ = 10000L;
treatBinaryClausesSeparately_ = true;
randomSeed_ = 1;
countAssumptionLevelsInLbd_ = true;
presolveBveThreshold_ = 500;
presolveBveClauseWeight_ = 3;
presolveProbingDeterministicTimeLimit_ = 30D;
presolveBlockedClause_ = true;
presolveUseBva_ = true;
presolveBvaThreshold_ = 1;
maxPresolveIterations_ = 3;
cpModelPresolve_ = true;
cpModelProbingLevel_ = 2;
cpModelUseSatPresolve_ = true;
expandElementConstraints_ = true;
expandAutomatonConstraints_ = true;
expandTableConstraints_ = true;
mergeNoOverlapWorkLimit_ = 1000000000000D;
mergeAtMostOneWorkLimit_ = 100000000D;
presolveSubstitutionLevel_ = 1;
useOptimizationHints_ = true;
minimizeCore_ = true;
findMultipleCores_ = true;
coverOptimization_ = true;
maxSatAssumptionOrder_ = 0;
maxSatStratification_ = 1;
usePrecedencesInDisjunctiveConstraint_ = true;
useDisjunctiveConstraintInCumulativeConstraint_ = true;
linearizationLevel_ = 1;
booleanEncodingLevel_ = 1;
maxNumCuts_ = 10000;
addCgCuts_ = true;
addMirCuts_ = true;
maxAllDiffCutSize_ = 7;
addLinMaxCuts_ = true;
maxIntegerRoundingScaling_ = 600;
addLpConstraintsLazily_ = true;
minOrthogonalityForLpConstraints_ = 0.05D;
maxCutRoundsAtLevelZero_ = 1;
maxConsecutiveInactiveCount_ = 100;
cutMaxActiveCountValue_ = 10000000000D;
cutActiveCountDecay_ = 0.8D;
cutCleanupTarget_ = 1000;
newConstraintsBatchSize_ = 50;
searchBranching_ = 0;
hintConflictLimit_ = 10;
exploitIntegerLpSolution_ = true;
exploitAllLpSolution_ = true;
exploitObjective_ = true;
pseudoCostReliabilityThreshold_ = 100L;
binarySearchNumConflicts_ = -1;
instantiateAllVariables_ = true;
autoDetectGreaterThanAtLeastOneOf_ = true;
numSearchWorkers_ = 1;
interleaveBatchSize_ = 1;
shareObjectiveBounds_ = true;
shareLevelZeroBounds_ = true;
useRinsLns_ = true;
useFeasibilityPump_ = true;
fpRounding_ = 2;
useOptionalVariables_ = true;
useExactLpReason_ = true;
catchSigintSignal_ = true;
useImpliedBounds_ = true;
mipMaxBound_ = 10000000D;
mipVarScaling_ = 1D;
mipAutomaticallyScaleVariables_ = true;
mipWantedPrecision_ = 1e-06D;
mipMaxActivityExponent_ = 53;
mipCheckPrecision_ = 0.0001D;
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new SatParameters();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private SatParameters(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
this();
if (extensionRegistry == null) {
throw new java.lang.NullPointerException();
}
int mutable_bitField0_ = 0;
int mutable_bitField1_ = 0;
int mutable_bitField2_ = 0;
int mutable_bitField3_ = 0;
int mutable_bitField4_ = 0;
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
case 8: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.VariableOrder value = com.google.ortools.sat.SatParameters.VariableOrder.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(1, rawValue);
} else {
bitField0_ |= 0x00000001;
preferredVariableOrder_ = rawValue;
}
break;
}
case 16: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.Polarity value = com.google.ortools.sat.SatParameters.Polarity.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(2, rawValue);
} else {
bitField0_ |= 0x00000002;
initialPolarity_ = rawValue;
}
break;
}
case 32: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm value = com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(4, rawValue);
} else {
bitField0_ |= 0x00000100;
minimizationAlgorithm_ = rawValue;
}
break;
}
case 88: {
bitField0_ |= 0x00000800;
clauseCleanupPeriod_ = input.readInt32();
break;
}
case 104: {
bitField0_ |= 0x00001000;
clauseCleanupTarget_ = input.readInt32();
break;
}
case 121: {
bitField0_ |= 0x00100000;
variableActivityDecay_ = input.readDouble();
break;
}
case 129: {
bitField0_ |= 0x00200000;
maxVariableActivityValue_ = input.readDouble();
break;
}
case 137: {
bitField0_ |= 0x02000000;
clauseActivityDecay_ = input.readDouble();
break;
}
case 145: {
bitField0_ |= 0x04000000;
maxClauseActivityValue_ = input.readDouble();
break;
}
case 177: {
bitField0_ |= 0x00400000;
glucoseMaxDecay_ = input.readDouble();
break;
}
case 185: {
bitField0_ |= 0x00800000;
glucoseDecayIncrement_ = input.readDouble();
break;
}
case 192: {
bitField0_ |= 0x01000000;
glucoseDecayIncrementPeriod_ = input.readInt32();
break;
}
case 240: {
bitField0_ |= 0x10000000;
restartPeriod_ = input.readInt32();
break;
}
case 248: {
bitField1_ |= 0x00001000;
randomSeed_ = input.readInt32();
break;
}
case 257: {
bitField0_ |= 0x00000010;
randomBranchesRatio_ = input.readDouble();
break;
}
case 264: {
bitField1_ |= 0x00000800;
treatBinaryClausesSeparately_ = input.readBool();
break;
}
case 272: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm value = com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(34, rawValue);
} else {
bitField0_ |= 0x00000200;
binaryMinimizationAlgorithm_ = rawValue;
}
break;
}
case 280: {
bitField2_ |= 0x00000010;
useOptimizationHints_ = input.readBool();
break;
}
case 289: {
bitField1_ |= 0x00000020;
maxTimeInSeconds_ = input.readDouble();
break;
}
case 296: {
bitField1_ |= 0x00000080;
maxNumberOfConflicts_ = input.readInt64();
break;
}
case 320: {
bitField1_ |= 0x00000100;
maxMemoryInMb_ = input.readInt64();
break;
}
case 328: {
bitField1_ |= 0x00002000;
logSearchProgress_ = input.readBool();
break;
}
case 344: {
bitField1_ |= 0x00004000;
usePbResolution_ = input.readBool();
break;
}
case 352: {
bitField0_ |= 0x00000004;
usePhaseSaving_ = input.readBool();
break;
}
case 361: {
bitField0_ |= 0x00000008;
randomPolarityRatio_ = input.readDouble();
break;
}
case 368: {
bitField0_ |= 0x00010000;
pbCleanupIncrement_ = input.readInt32();
break;
}
case 377: {
bitField0_ |= 0x00020000;
pbCleanupRatio_ = input.readDouble();
break;
}
case 384: {
bitField1_ |= 0x00008000;
minimizeReductionDuringPbResolution_ = input.readBool();
break;
}
case 392: {
bitField1_ |= 0x00010000;
countAssumptionLevelsInLbd_ = input.readBool();
break;
}
case 400: {
bitField2_ |= 0x00000020;
minimizeCore_ = input.readBool();
break;
}
case 408: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder value = com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(51, rawValue);
} else {
bitField2_ |= 0x00000100;
maxSatAssumptionOrder_ = rawValue;
}
break;
}
case 416: {
bitField2_ |= 0x00000200;
maxSatReverseAssumptionOrder_ = input.readBool();
break;
}
case 424: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm value = com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(53, rawValue);
} else {
bitField2_ |= 0x00000400;
maxSatStratification_ = rawValue;
}
break;
}
case 432: {
bitField1_ |= 0x00020000;
presolveBveThreshold_ = input.readInt32();
break;
}
case 440: {
bitField1_ |= 0x00040000;
presolveBveClauseWeight_ = input.readInt32();
break;
}
case 448: {
bitField0_ |= 0x00000400;
subsumptionDuringConflictAnalysis_ = input.readBool();
break;
}
case 457: {
bitField1_ |= 0x00080000;
presolveProbingDeterministicTimeLimit_ = input.readDouble();
break;
}
case 464: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ClauseProtection value = com.google.ortools.sat.SatParameters.ClauseProtection.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(58, rawValue);
} else {
bitField0_ |= 0x00002000;
clauseCleanupProtection_ = rawValue;
}
break;
}
case 472: {
bitField0_ |= 0x00004000;
clauseCleanupLbdBound_ = input.readInt32();
break;
}
case 480: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ClauseOrdering value = com.google.ortools.sat.SatParameters.ClauseOrdering.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(60, rawValue);
} else {
bitField0_ |= 0x00008000;
clauseCleanupOrdering_ = rawValue;
}
break;
}
case 488: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.RestartAlgorithm value = com.google.ortools.sat.SatParameters.RestartAlgorithm.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(61, rawValue);
} else {
if (!((mutable_bitField0_ & 0x08000000) != 0)) {
restartAlgorithms_ = new java.util.ArrayList();
mutable_bitField0_ |= 0x08000000;
}
restartAlgorithms_.add(rawValue);
}
break;
}
case 490: {
int length = input.readRawVarint32();
int oldLimit = input.pushLimit(length);
while(input.getBytesUntilLimit() > 0) {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.RestartAlgorithm value = com.google.ortools.sat.SatParameters.RestartAlgorithm.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(61, rawValue);
} else {
if (!((mutable_bitField0_ & 0x08000000) != 0)) {
restartAlgorithms_ = new java.util.ArrayList();
mutable_bitField0_ |= 0x08000000;
}
restartAlgorithms_.add(rawValue);
}
}
input.popLimit(oldLimit);
break;
}
case 496: {
bitField0_ |= 0x20000000;
restartRunningWindowSize_ = input.readInt32();
break;
}
case 505: {
bitField0_ |= 0x40000000;
restartDlAverageRatio_ = input.readDouble();
break;
}
case 512: {
bitField1_ |= 0x00000001;
useBlockingRestart_ = input.readBool();
break;
}
case 520: {
bitField1_ |= 0x00000002;
blockingRestartWindowSize_ = input.readInt32();
break;
}
case 529: {
bitField1_ |= 0x00000004;
blockingRestartMultiplier_ = input.readDouble();
break;
}
case 537: {
bitField1_ |= 0x00000040;
maxDeterministicTime_ = input.readDouble();
break;
}
case 544: {
bitField1_ |= 0x00000008;
numConflictsBeforeStrategyChanges_ = input.readInt32();
break;
}
case 553: {
bitField1_ |= 0x00000010;
strategyChangeIncreaseRatio_ = input.readDouble();
break;
}
case 562: {
com.google.protobuf.ByteString bs = input.readBytes();
bitField0_ |= 0x08000000;
defaultRestartAlgorithms_ = bs;
break;
}
case 569: {
bitField0_ |= 0x80000000;
restartLbdAverageRatio_ = input.readDouble();
break;
}
case 576: {
bitField1_ |= 0x00200000;
presolveUseBva_ = input.readBool();
break;
}
case 584: {
bitField1_ |= 0x00400000;
presolveBvaThreshold_ = input.readInt32();
break;
}
case 592: {
bitField2_ |= 0x00000800;
usePrecedencesInDisjunctiveConstraint_ = input.readBool();
break;
}
case 600: {
bitField0_ |= 0x00000020;
useErwaHeuristic_ = input.readBool();
break;
}
case 609: {
bitField0_ |= 0x00000040;
initialVariablesActivity_ = input.readDouble();
break;
}
case 616: {
bitField0_ |= 0x00000080;
alsoBumpVariablesInConflictReasons_ = input.readBool();
break;
}
case 624: {
bitField2_ |= 0x00001000;
useOverloadCheckerInCumulativeConstraint_ = input.readBool();
break;
}
case 632: {
bitField2_ |= 0x00002000;
useTimetableEdgeFindingInCumulativeConstraint_ = input.readBool();
break;
}
case 640: {
bitField2_ |= 0x00004000;
useDisjunctiveConstraintInCumulativeConstraint_ = input.readBool();
break;
}
case 656: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.SearchBranching value = com.google.ortools.sat.SatParameters.SearchBranching.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(82, rawValue);
} else {
bitField3_ |= 0x00000002;
searchBranching_ = rawValue;
}
break;
}
case 664: {
bitField3_ |= 0x00000400;
optimizeWithCore_ = input.readBool();
break;
}
case 672: {
bitField2_ |= 0x00000040;
findMultipleCores_ = input.readBool();
break;
}
case 680: {
bitField3_ |= 0x00001000;
optimizeWithMaxHs_ = input.readBool();
break;
}
case 688: {
bitField1_ |= 0x01000000;
cpModelPresolve_ = input.readBool();
break;
}
case 696: {
bitField3_ |= 0x00002000;
enumerateAllSolutions_ = input.readBool();
break;
}
case 704: {
bitField1_ |= 0x00100000;
presolveBlockedClause_ = input.readBool();
break;
}
case 712: {
bitField2_ |= 0x00000080;
coverOptimization_ = input.readBool();
break;
}
case 720: {
bitField2_ |= 0x00008000;
linearizationLevel_ = input.readInt32();
break;
}
case 728: {
bitField2_ |= 0x00020000;
maxNumCuts_ = input.readInt32();
break;
}
case 736: {
bitField2_ |= 0x00040000;
onlyAddCutsAtLevelZero_ = input.readBool();
break;
}
case 744: {
bitField1_ |= 0x10000000;
cpModelUseSatPresolve_ = input.readBool();
break;
}
case 752: {
bitField3_ |= 0x00000008;
exploitIntegerLpSolution_ = input.readBool();
break;
}
case 760: {
bitField3_ |= 0x00010000;
autoDetectGreaterThanAtLeastOneOf_ = input.readBool();
break;
}
case 768: {
bitField0_ |= 0x00040000;
minimizeWithPropagationRestartPeriod_ = input.readInt32();
break;
}
case 776: {
bitField0_ |= 0x00080000;
minimizeWithPropagationNumDecisions_ = input.readInt32();
break;
}
case 784: {
bitField3_ |= 0x00020000;
stopAfterFirstSolution_ = input.readBool();
break;
}
case 792: {
bitField3_ |= 0x00000800;
binarySearchNumConflicts_ = input.readInt32();
break;
}
case 800: {
bitField3_ |= 0x00080000;
numSearchWorkers_ = input.readInt32();
break;
}
case 808: {
bitField3_ |= 0x02000000;
useLnsOnly_ = input.readBool();
break;
}
case 824: {
bitField4_ |= 0x00000001;
randomizeSearch_ = input.readBool();
break;
}
case 832: {
bitField4_ |= 0x00000002;
searchRandomizationTolerance_ = input.readInt64();
break;
}
case 840: {
bitField3_ |= 0x04000000;
lnsFocusOnDecisionVariables_ = input.readBool();
break;
}
case 848: {
bitField3_ |= 0x00008000;
instantiateAllVariables_ = input.readBool();
break;
}
case 856: {
bitField2_ |= 0x00010000;
booleanEncodingLevel_ = input.readInt32();
break;
}
case 864: {
bitField4_ |= 0x00000004;
useOptionalVariables_ = input.readBool();
break;
}
case 872: {
bitField4_ |= 0x00000008;
useExactLpReason_ = input.readBool();
break;
}
case 880: {
bitField1_ |= 0x08000000;
cpModelProbingLevel_ = input.readInt32();
break;
}
case 888: {
bitField2_ |= 0x00080000;
addKnapsackCuts_ = input.readBool();
break;
}
case 896: {
bitField2_ |= 0x02000000;
addLpConstraintsLazily_ = input.readBool();
break;
}
case 904: {
bitField3_ |= 0x00800000;
shareObjectiveBounds_ = input.readBool();
break;
}
case 912: {
bitField3_ |= 0x01000000;
shareLevelZeroBounds_ = input.readBool();
break;
}
case 921: {
bitField2_ |= 0x04000000;
minOrthogonalityForLpConstraints_ = input.readDouble();
break;
}
case 928: {
bitField3_ |= 0x00000010;
exploitAllLpSolution_ = input.readBool();
break;
}
case 936: {
bitField2_ |= 0x00100000;
addCgCuts_ = input.readBool();
break;
}
case 952: {
bitField2_ |= 0x01000000;
maxIntegerRoundingScaling_ = input.readInt32();
break;
}
case 960: {
bitField2_ |= 0x00200000;
addMirCuts_ = input.readBool();
break;
}
case 968: {
bitField2_ |= 0x10000000;
maxConsecutiveInactiveCount_ = input.readInt32();
break;
}
case 976: {
bitField3_ |= 0x00000001;
newConstraintsBatchSize_ = input.readInt32();
break;
}
case 984: {
bitField3_ |= 0x00000200;
pseudoCostReliabilityThreshold_ = input.readInt64();
break;
}
case 993: {
bitField4_ |= 0x00000100;
mipMaxBound_ = input.readDouble();
break;
}
case 1001: {
bitField4_ |= 0x00000200;
mipVarScaling_ = input.readDouble();
break;
}
case 1009: {
bitField4_ |= 0x00000800;
mipWantedPrecision_ = input.readDouble();
break;
}
case 1016: {
bitField4_ |= 0x00001000;
mipMaxActivityExponent_ = input.readInt32();
break;
}
case 1025: {
bitField4_ |= 0x00002000;
mipCheckPrecision_ = input.readDouble();
break;
}
case 1032: {
bitField3_ |= 0x08000000;
useRinsLns_ = input.readBool();
break;
}
case 1040: {
bitField3_ |= 0x00000020;
exploitBestSolution_ = input.readBool();
break;
}
case 1048: {
bitField3_ |= 0x00000080;
exploitObjective_ = input.readBool();
break;
}
case 1056: {
bitField3_ |= 0x00004000;
fillTightenedDomainsInResponse_ = input.readBool();
break;
}
case 1064: {
bitField4_ |= 0x00000020;
useCombinedNoOverlap_ = input.readBool();
break;
}
case 1072: {
bitField3_ |= 0x00200000;
interleaveBatchSize_ = input.readInt32();
break;
}
case 1080: {
bitField4_ |= 0x00000040;
catchSigintSignal_ = input.readBool();
break;
}
case 1088: {
bitField3_ |= 0x00100000;
interleaveSearch_ = input.readBool();
break;
}
case 1096: {
bitField3_ |= 0x80000000;
diversifyLnsParams_ = input.readBool();
break;
}
case 1104: {
bitField1_ |= 0x00800000;
maxPresolveIterations_ = input.readInt32();
break;
}
case 1112: {
bitField4_ |= 0x00000010;
useBranchingInLp_ = input.readBool();
break;
}
case 1120: {
bitField1_ |= 0x40000000;
expandElementConstraints_ = input.readBool();
break;
}
case 1128: {
bitField3_ |= 0x00400000;
reduceMemoryUsageInInterleaveMode_ = input.readBool();
break;
}
case 1136: {
bitField3_ |= 0x00000100;
probingPeriodAtRoot_ = input.readInt64();
break;
}
case 1144: {
bitField1_ |= 0x80000000;
expandAutomatonConstraints_ = input.readBool();
break;
}
case 1152: {
bitField4_ |= 0x00000080;
useImpliedBounds_ = input.readBool();
break;
}
case 1161: {
bitField2_ |= 0x00000002;
mergeNoOverlapWorkLimit_ = input.readDouble();
break;
}
case 1169: {
bitField2_ |= 0x00000004;
mergeAtMostOneWorkLimit_ = input.readDouble();
break;
}
case 1176: {
bitField2_ |= 0x00000008;
presolveSubstitutionLevel_ = input.readInt32();
break;
}
case 1184: {
bitField2_ |= 0x00400000;
maxAllDiffCutSize_ = input.readInt32();
break;
}
case 1192: {
bitField3_ |= 0x00040000;
stopAfterPresolve_ = input.readBool();
break;
}
case 1200: {
bitField3_ |= 0x40000000;
useRelaxationLns_ = input.readBool();
break;
}
case 1208: {
bitField1_ |= 0x04000000;
cpModelMaxNumPresolveOperations_ = input.readInt32();
break;
}
case 1216: {
bitField2_ |= 0x00800000;
addLinMaxCuts_ = input.readBool();
break;
}
case 1224: {
bitField3_ |= 0x00000004;
hintConflictLimit_ = input.readInt32();
break;
}
case 1232: {
bitField2_ |= 0x08000000;
maxCutRoundsAtLevelZero_ = input.readInt32();
break;
}
case 1241: {
bitField2_ |= 0x20000000;
cutMaxActiveCountValue_ = input.readDouble();
break;
}
case 1249: {
bitField2_ |= 0x40000000;
cutActiveCountDecay_ = input.readDouble();
break;
}
case 1256: {
bitField2_ |= 0x80000000;
cutCleanupTarget_ = input.readInt32();
break;
}
case 1264: {
bitField2_ |= 0x00000001;
expandTableConstraints_ = input.readBool();
break;
}
case 1273: {
bitField1_ |= 0x00000200;
absoluteGapLimit_ = input.readDouble();
break;
}
case 1281: {
bitField1_ |= 0x00000400;
relativeGapLimit_ = input.readDouble();
break;
}
case 1288: {
bitField3_ |= 0x00000040;
exploitRelaxationSolution_ = input.readBool();
break;
}
case 1296: {
bitField1_ |= 0x02000000;
cpModelPostsolveWithFullSolver_ = input.readBool();
break;
}
case 1304: {
bitField1_ |= 0x20000000;
useSatInprocessing_ = input.readBool();
break;
}
case 1312: {
bitField3_ |= 0x10000000;
useFeasibilityPump_ = input.readBool();
break;
}
case 1320: {
int rawValue = input.readEnum();
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.FPRoundingMethod value = com.google.ortools.sat.SatParameters.FPRoundingMethod.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(165, rawValue);
} else {
bitField3_ |= 0x20000000;
fpRounding_ = rawValue;
}
break;
}
case 1328: {
bitField4_ |= 0x00000400;
mipAutomaticallyScaleVariables_ = input.readBool();
break;
}
default: {
if (!parseUnknownField(
input, unknownFields, extensionRegistry, tag)) {
done = true;
}
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
e).setUnfinishedMessage(this);
} finally {
if (((mutable_bitField0_ & 0x08000000) != 0)) {
restartAlgorithms_ = java.util.Collections.unmodifiableList(restartAlgorithms_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.google.ortools.sat.SatParameters.class, com.google.ortools.sat.SatParameters.Builder.class);
}
/**
*
* Variables without activity (i.e. at the beginning of the search) will be
* tried in this preferred order.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.VariableOrder}
*/
public enum VariableOrder
implements com.google.protobuf.ProtocolMessageEnum {
/**
*
* As specified by the problem.
*
*
* IN_ORDER = 0;
*/
IN_ORDER(0),
/**
* IN_REVERSE_ORDER = 1;
*/
IN_REVERSE_ORDER(1),
/**
* IN_RANDOM_ORDER = 2;
*/
IN_RANDOM_ORDER(2),
;
/**
*
* As specified by the problem.
*
*
* IN_ORDER = 0;
*/
public static final int IN_ORDER_VALUE = 0;
/**
* IN_REVERSE_ORDER = 1;
*/
public static final int IN_REVERSE_ORDER_VALUE = 1;
/**
* IN_RANDOM_ORDER = 2;
*/
public static final int IN_RANDOM_ORDER_VALUE = 2;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static VariableOrder valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static VariableOrder forNumber(int value) {
switch (value) {
case 0: return IN_ORDER;
case 1: return IN_REVERSE_ORDER;
case 2: return IN_RANDOM_ORDER;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
VariableOrder> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public VariableOrder findValueByNumber(int number) {
return VariableOrder.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(0);
}
private static final VariableOrder[] VALUES = values();
public static VariableOrder valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private VariableOrder(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.VariableOrder)
}
/**
*
* Specifies the initial polarity (true/false) when the solver branches on a
* variable. This can be modified later by the user, or the phase saving
* heuristic.
* Note(user): POLARITY_FALSE is usually a good choice because of the
* "natural" way to express a linear boolean problem.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.Polarity}
*/
public enum Polarity
implements com.google.protobuf.ProtocolMessageEnum {
/**
* POLARITY_TRUE = 0;
*/
POLARITY_TRUE(0),
/**
* POLARITY_FALSE = 1;
*/
POLARITY_FALSE(1),
/**
* POLARITY_RANDOM = 2;
*/
POLARITY_RANDOM(2),
/**
*
* Choose the sign that tends to satisfy the most constraints. This is
* computed using a weighted sum: if a literal l appears in a constraint of
* the form: ... + coeff * l +... <= rhs with positive coefficients and
* rhs, then -sign(l) * coeff / rhs is added to the weight of l.variable().
*
*
* POLARITY_WEIGHTED_SIGN = 3;
*/
POLARITY_WEIGHTED_SIGN(3),
/**
*
* The opposite choice of POLARITY_WEIGHTED_SIGN.
*
*
* POLARITY_REVERSE_WEIGHTED_SIGN = 4;
*/
POLARITY_REVERSE_WEIGHTED_SIGN(4),
;
/**
* POLARITY_TRUE = 0;
*/
public static final int POLARITY_TRUE_VALUE = 0;
/**
* POLARITY_FALSE = 1;
*/
public static final int POLARITY_FALSE_VALUE = 1;
/**
* POLARITY_RANDOM = 2;
*/
public static final int POLARITY_RANDOM_VALUE = 2;
/**
*
* Choose the sign that tends to satisfy the most constraints. This is
* computed using a weighted sum: if a literal l appears in a constraint of
* the form: ... + coeff * l +... <= rhs with positive coefficients and
* rhs, then -sign(l) * coeff / rhs is added to the weight of l.variable().
*
*
* POLARITY_WEIGHTED_SIGN = 3;
*/
public static final int POLARITY_WEIGHTED_SIGN_VALUE = 3;
/**
*
* The opposite choice of POLARITY_WEIGHTED_SIGN.
*
*
* POLARITY_REVERSE_WEIGHTED_SIGN = 4;
*/
public static final int POLARITY_REVERSE_WEIGHTED_SIGN_VALUE = 4;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static Polarity valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static Polarity forNumber(int value) {
switch (value) {
case 0: return POLARITY_TRUE;
case 1: return POLARITY_FALSE;
case 2: return POLARITY_RANDOM;
case 3: return POLARITY_WEIGHTED_SIGN;
case 4: return POLARITY_REVERSE_WEIGHTED_SIGN;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
Polarity> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public Polarity findValueByNumber(int number) {
return Polarity.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(1);
}
private static final Polarity[] VALUES = values();
public static Polarity valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private Polarity(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.Polarity)
}
/**
*
* Do we try to minimize conflicts (greedily) when creating them.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.ConflictMinimizationAlgorithm}
*/
public enum ConflictMinimizationAlgorithm
implements com.google.protobuf.ProtocolMessageEnum {
/**
* NONE = 0;
*/
NONE(0),
/**
* SIMPLE = 1;
*/
SIMPLE(1),
/**
* RECURSIVE = 2;
*/
RECURSIVE(2),
/**
* EXPERIMENTAL = 3;
*/
EXPERIMENTAL(3),
;
/**
* NONE = 0;
*/
public static final int NONE_VALUE = 0;
/**
* SIMPLE = 1;
*/
public static final int SIMPLE_VALUE = 1;
/**
* RECURSIVE = 2;
*/
public static final int RECURSIVE_VALUE = 2;
/**
* EXPERIMENTAL = 3;
*/
public static final int EXPERIMENTAL_VALUE = 3;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static ConflictMinimizationAlgorithm valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static ConflictMinimizationAlgorithm forNumber(int value) {
switch (value) {
case 0: return NONE;
case 1: return SIMPLE;
case 2: return RECURSIVE;
case 3: return EXPERIMENTAL;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
ConflictMinimizationAlgorithm> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public ConflictMinimizationAlgorithm findValueByNumber(int number) {
return ConflictMinimizationAlgorithm.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(2);
}
private static final ConflictMinimizationAlgorithm[] VALUES = values();
public static ConflictMinimizationAlgorithm valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private ConflictMinimizationAlgorithm(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ConflictMinimizationAlgorithm)
}
/**
*
* Whether to expoit the binary clause to minimize learned clauses further.
* This will have an effect only if treat_binary_clauses_separately is true.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.BinaryMinizationAlgorithm}
*/
public enum BinaryMinizationAlgorithm
implements com.google.protobuf.ProtocolMessageEnum {
/**
* NO_BINARY_MINIMIZATION = 0;
*/
NO_BINARY_MINIMIZATION(0),
/**
* BINARY_MINIMIZATION_FIRST = 1;
*/
BINARY_MINIMIZATION_FIRST(1),
/**
* BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION = 4;
*/
BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION(4),
/**
* BINARY_MINIMIZATION_WITH_REACHABILITY = 2;
*/
BINARY_MINIMIZATION_WITH_REACHABILITY(2),
/**
* EXPERIMENTAL_BINARY_MINIMIZATION = 3;
*/
EXPERIMENTAL_BINARY_MINIMIZATION(3),
;
/**
* NO_BINARY_MINIMIZATION = 0;
*/
public static final int NO_BINARY_MINIMIZATION_VALUE = 0;
/**
* BINARY_MINIMIZATION_FIRST = 1;
*/
public static final int BINARY_MINIMIZATION_FIRST_VALUE = 1;
/**
* BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION = 4;
*/
public static final int BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION_VALUE = 4;
/**
* BINARY_MINIMIZATION_WITH_REACHABILITY = 2;
*/
public static final int BINARY_MINIMIZATION_WITH_REACHABILITY_VALUE = 2;
/**
* EXPERIMENTAL_BINARY_MINIMIZATION = 3;
*/
public static final int EXPERIMENTAL_BINARY_MINIMIZATION_VALUE = 3;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static BinaryMinizationAlgorithm valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static BinaryMinizationAlgorithm forNumber(int value) {
switch (value) {
case 0: return NO_BINARY_MINIMIZATION;
case 1: return BINARY_MINIMIZATION_FIRST;
case 4: return BINARY_MINIMIZATION_FIRST_WITH_TRANSITIVE_REDUCTION;
case 2: return BINARY_MINIMIZATION_WITH_REACHABILITY;
case 3: return EXPERIMENTAL_BINARY_MINIMIZATION;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
BinaryMinizationAlgorithm> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public BinaryMinizationAlgorithm findValueByNumber(int number) {
return BinaryMinizationAlgorithm.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(3);
}
private static final BinaryMinizationAlgorithm[] VALUES = values();
public static BinaryMinizationAlgorithm valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private BinaryMinizationAlgorithm(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.BinaryMinizationAlgorithm)
}
/**
*
* Each time a clause activity is bumped, the clause has a chance to be
* protected during the next cleanup phase. Note that clauses used as a reason
* are always protected.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.ClauseProtection}
*/
public enum ClauseProtection
implements com.google.protobuf.ProtocolMessageEnum {
/**
*
* No protection.
*
*
* PROTECTION_NONE = 0;
*/
PROTECTION_NONE(0),
/**
*
* Protect all clauses whose activity is bumped.
*
*
* PROTECTION_ALWAYS = 1;
*/
PROTECTION_ALWAYS(1),
/**
*
* Only protect clause with a better LBD.
*
*
* PROTECTION_LBD = 2;
*/
PROTECTION_LBD(2),
;
/**
*
* No protection.
*
*
* PROTECTION_NONE = 0;
*/
public static final int PROTECTION_NONE_VALUE = 0;
/**
*
* Protect all clauses whose activity is bumped.
*
*
* PROTECTION_ALWAYS = 1;
*/
public static final int PROTECTION_ALWAYS_VALUE = 1;
/**
*
* Only protect clause with a better LBD.
*
*
* PROTECTION_LBD = 2;
*/
public static final int PROTECTION_LBD_VALUE = 2;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static ClauseProtection valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static ClauseProtection forNumber(int value) {
switch (value) {
case 0: return PROTECTION_NONE;
case 1: return PROTECTION_ALWAYS;
case 2: return PROTECTION_LBD;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
ClauseProtection> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public ClauseProtection findValueByNumber(int number) {
return ClauseProtection.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(4);
}
private static final ClauseProtection[] VALUES = values();
public static ClauseProtection valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private ClauseProtection(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ClauseProtection)
}
/**
*
* The clauses that will be kept during a cleanup are the ones that come
* first under this order. We always keep or exclude ties together.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.ClauseOrdering}
*/
public enum ClauseOrdering
implements com.google.protobuf.ProtocolMessageEnum {
/**
*
* Order clause by decreasing activity, then by increasing LBD.
*
*
* CLAUSE_ACTIVITY = 0;
*/
CLAUSE_ACTIVITY(0),
/**
*
* Order clause by increasing LBD, then by decreasing activity.
*
*
* CLAUSE_LBD = 1;
*/
CLAUSE_LBD(1),
;
/**
*
* Order clause by decreasing activity, then by increasing LBD.
*
*
* CLAUSE_ACTIVITY = 0;
*/
public static final int CLAUSE_ACTIVITY_VALUE = 0;
/**
*
* Order clause by increasing LBD, then by decreasing activity.
*
*
* CLAUSE_LBD = 1;
*/
public static final int CLAUSE_LBD_VALUE = 1;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static ClauseOrdering valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static ClauseOrdering forNumber(int value) {
switch (value) {
case 0: return CLAUSE_ACTIVITY;
case 1: return CLAUSE_LBD;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
ClauseOrdering> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public ClauseOrdering findValueByNumber(int number) {
return ClauseOrdering.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(5);
}
private static final ClauseOrdering[] VALUES = values();
public static ClauseOrdering valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private ClauseOrdering(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.ClauseOrdering)
}
/**
*
* Restart algorithms.
* A reference for the more advanced ones is:
* Gilles Audemard, Laurent Simon, "Refining Restarts Strategies for SAT
* and UNSAT", Principles and Practice of Constraint Programming Lecture
* Notes in Computer Science 2012, pp 118-126
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.RestartAlgorithm}
*/
public enum RestartAlgorithm
implements com.google.protobuf.ProtocolMessageEnum {
/**
* NO_RESTART = 0;
*/
NO_RESTART(0),
/**
*
* Just follow a Luby sequence times restart_period.
*
*
* LUBY_RESTART = 1;
*/
LUBY_RESTART(1),
/**
*
* Moving average restart based on the decision level of conflicts.
*
*
* DL_MOVING_AVERAGE_RESTART = 2;
*/
DL_MOVING_AVERAGE_RESTART(2),
/**
*
* Moving average restart based on the LBD of conflicts.
*
*
* LBD_MOVING_AVERAGE_RESTART = 3;
*/
LBD_MOVING_AVERAGE_RESTART(3),
/**
*
* Fixed period restart every restart period.
*
*
* FIXED_RESTART = 4;
*/
FIXED_RESTART(4),
;
/**
* NO_RESTART = 0;
*/
public static final int NO_RESTART_VALUE = 0;
/**
*
* Just follow a Luby sequence times restart_period.
*
*
* LUBY_RESTART = 1;
*/
public static final int LUBY_RESTART_VALUE = 1;
/**
*
* Moving average restart based on the decision level of conflicts.
*
*
* DL_MOVING_AVERAGE_RESTART = 2;
*/
public static final int DL_MOVING_AVERAGE_RESTART_VALUE = 2;
/**
*
* Moving average restart based on the LBD of conflicts.
*
*
* LBD_MOVING_AVERAGE_RESTART = 3;
*/
public static final int LBD_MOVING_AVERAGE_RESTART_VALUE = 3;
/**
*
* Fixed period restart every restart period.
*
*
* FIXED_RESTART = 4;
*/
public static final int FIXED_RESTART_VALUE = 4;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static RestartAlgorithm valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static RestartAlgorithm forNumber(int value) {
switch (value) {
case 0: return NO_RESTART;
case 1: return LUBY_RESTART;
case 2: return DL_MOVING_AVERAGE_RESTART;
case 3: return LBD_MOVING_AVERAGE_RESTART;
case 4: return FIXED_RESTART;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
RestartAlgorithm> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public RestartAlgorithm findValueByNumber(int number) {
return RestartAlgorithm.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(6);
}
private static final RestartAlgorithm[] VALUES = values();
public static RestartAlgorithm valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private RestartAlgorithm(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.RestartAlgorithm)
}
/**
*
* In what order do we add the assumptions in a core-based max-sat algorithm
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.MaxSatAssumptionOrder}
*/
public enum MaxSatAssumptionOrder
implements com.google.protobuf.ProtocolMessageEnum {
/**
* DEFAULT_ASSUMPTION_ORDER = 0;
*/
DEFAULT_ASSUMPTION_ORDER(0),
/**
* ORDER_ASSUMPTION_BY_DEPTH = 1;
*/
ORDER_ASSUMPTION_BY_DEPTH(1),
/**
* ORDER_ASSUMPTION_BY_WEIGHT = 2;
*/
ORDER_ASSUMPTION_BY_WEIGHT(2),
;
/**
* DEFAULT_ASSUMPTION_ORDER = 0;
*/
public static final int DEFAULT_ASSUMPTION_ORDER_VALUE = 0;
/**
* ORDER_ASSUMPTION_BY_DEPTH = 1;
*/
public static final int ORDER_ASSUMPTION_BY_DEPTH_VALUE = 1;
/**
* ORDER_ASSUMPTION_BY_WEIGHT = 2;
*/
public static final int ORDER_ASSUMPTION_BY_WEIGHT_VALUE = 2;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static MaxSatAssumptionOrder valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static MaxSatAssumptionOrder forNumber(int value) {
switch (value) {
case 0: return DEFAULT_ASSUMPTION_ORDER;
case 1: return ORDER_ASSUMPTION_BY_DEPTH;
case 2: return ORDER_ASSUMPTION_BY_WEIGHT;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
MaxSatAssumptionOrder> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public MaxSatAssumptionOrder findValueByNumber(int number) {
return MaxSatAssumptionOrder.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(7);
}
private static final MaxSatAssumptionOrder[] VALUES = values();
public static MaxSatAssumptionOrder valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private MaxSatAssumptionOrder(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.MaxSatAssumptionOrder)
}
/**
*
* What stratification algorithm we use in the presence of weight.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.MaxSatStratificationAlgorithm}
*/
public enum MaxSatStratificationAlgorithm
implements com.google.protobuf.ProtocolMessageEnum {
/**
*
* No stratification of the problem.
*
*
* STRATIFICATION_NONE = 0;
*/
STRATIFICATION_NONE(0),
/**
*
* Start with literals with the highest weight, and when SAT, add the
* literals with the next highest weight and so on.
*
*
* STRATIFICATION_DESCENT = 1;
*/
STRATIFICATION_DESCENT(1),
/**
*
* Start with all literals. Each time a core is found with a given minimum
* weight, do not consider literals with a lower weight for the next core
* computation. If the subproblem is SAT, do like in STRATIFICATION_DESCENT
* and just add the literals with the next highest weight.
*
*
* STRATIFICATION_ASCENT = 2;
*/
STRATIFICATION_ASCENT(2),
;
/**
*
* No stratification of the problem.
*
*
* STRATIFICATION_NONE = 0;
*/
public static final int STRATIFICATION_NONE_VALUE = 0;
/**
*
* Start with literals with the highest weight, and when SAT, add the
* literals with the next highest weight and so on.
*
*
* STRATIFICATION_DESCENT = 1;
*/
public static final int STRATIFICATION_DESCENT_VALUE = 1;
/**
*
* Start with all literals. Each time a core is found with a given minimum
* weight, do not consider literals with a lower weight for the next core
* computation. If the subproblem is SAT, do like in STRATIFICATION_DESCENT
* and just add the literals with the next highest weight.
*
*
* STRATIFICATION_ASCENT = 2;
*/
public static final int STRATIFICATION_ASCENT_VALUE = 2;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static MaxSatStratificationAlgorithm valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static MaxSatStratificationAlgorithm forNumber(int value) {
switch (value) {
case 0: return STRATIFICATION_NONE;
case 1: return STRATIFICATION_DESCENT;
case 2: return STRATIFICATION_ASCENT;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
MaxSatStratificationAlgorithm> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public MaxSatStratificationAlgorithm findValueByNumber(int number) {
return MaxSatStratificationAlgorithm.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(8);
}
private static final MaxSatStratificationAlgorithm[] VALUES = values();
public static MaxSatStratificationAlgorithm valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private MaxSatStratificationAlgorithm(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.MaxSatStratificationAlgorithm)
}
/**
*
* The search branching will be used to decide how to branch on unfixed nodes.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.SearchBranching}
*/
public enum SearchBranching
implements com.google.protobuf.ProtocolMessageEnum {
/**
*
* Try to fix all literals using the underlying SAT solver's heuristics,
* then generate and fix literals until integer variables are fixed.
*
*
* AUTOMATIC_SEARCH = 0;
*/
AUTOMATIC_SEARCH(0),
/**
*
* If used then all decisions taken by the solver are made using a fixed
* order as specified in the API or in the CpModelProto search_strategy
* field.
*
*
* FIXED_SEARCH = 1;
*/
FIXED_SEARCH(1),
/**
*
* If used, the solver will use various generic heuristics in turn.
*
*
* PORTFOLIO_SEARCH = 2;
*/
PORTFOLIO_SEARCH(2),
/**
*
* If used, the solver will use heuristics from the LP relaxation. This
* exploit the reduced costs of the variables in the relaxation.
* TODO(user): Maybe rename REDUCED_COST_SEARCH?
*
*
* LP_SEARCH = 3;
*/
LP_SEARCH(3),
/**
*
* If used, the solver uses the pseudo costs for branching. Pseudo costs
* are computed using the historical change in objective bounds when some
* decision are taken.
*
*
* PSEUDO_COST_SEARCH = 4;
*/
PSEUDO_COST_SEARCH(4),
/**
*
* Mainly exposed here for testing. This quickly tries a lot of randomized
* heuristics with a low conflict limit. It usually provides a good first
* solution.
*
*
* PORTFOLIO_WITH_QUICK_RESTART_SEARCH = 5;
*/
PORTFOLIO_WITH_QUICK_RESTART_SEARCH(5),
/**
*
* Mainly used internally. This is like FIXED_SEARCH, except we follow the
* solution_hint field of the CpModelProto rather than using the information
* provided in the search_strategy.
*
*
* HINT_SEARCH = 6;
*/
HINT_SEARCH(6),
;
/**
*
* Try to fix all literals using the underlying SAT solver's heuristics,
* then generate and fix literals until integer variables are fixed.
*
*
* AUTOMATIC_SEARCH = 0;
*/
public static final int AUTOMATIC_SEARCH_VALUE = 0;
/**
*
* If used then all decisions taken by the solver are made using a fixed
* order as specified in the API or in the CpModelProto search_strategy
* field.
*
*
* FIXED_SEARCH = 1;
*/
public static final int FIXED_SEARCH_VALUE = 1;
/**
*
* If used, the solver will use various generic heuristics in turn.
*
*
* PORTFOLIO_SEARCH = 2;
*/
public static final int PORTFOLIO_SEARCH_VALUE = 2;
/**
*
* If used, the solver will use heuristics from the LP relaxation. This
* exploit the reduced costs of the variables in the relaxation.
* TODO(user): Maybe rename REDUCED_COST_SEARCH?
*
*
* LP_SEARCH = 3;
*/
public static final int LP_SEARCH_VALUE = 3;
/**
*
* If used, the solver uses the pseudo costs for branching. Pseudo costs
* are computed using the historical change in objective bounds when some
* decision are taken.
*
*
* PSEUDO_COST_SEARCH = 4;
*/
public static final int PSEUDO_COST_SEARCH_VALUE = 4;
/**
*
* Mainly exposed here for testing. This quickly tries a lot of randomized
* heuristics with a low conflict limit. It usually provides a good first
* solution.
*
*
* PORTFOLIO_WITH_QUICK_RESTART_SEARCH = 5;
*/
public static final int PORTFOLIO_WITH_QUICK_RESTART_SEARCH_VALUE = 5;
/**
*
* Mainly used internally. This is like FIXED_SEARCH, except we follow the
* solution_hint field of the CpModelProto rather than using the information
* provided in the search_strategy.
*
*
* HINT_SEARCH = 6;
*/
public static final int HINT_SEARCH_VALUE = 6;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static SearchBranching valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static SearchBranching forNumber(int value) {
switch (value) {
case 0: return AUTOMATIC_SEARCH;
case 1: return FIXED_SEARCH;
case 2: return PORTFOLIO_SEARCH;
case 3: return LP_SEARCH;
case 4: return PSEUDO_COST_SEARCH;
case 5: return PORTFOLIO_WITH_QUICK_RESTART_SEARCH;
case 6: return HINT_SEARCH;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
SearchBranching> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public SearchBranching findValueByNumber(int number) {
return SearchBranching.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(9);
}
private static final SearchBranching[] VALUES = values();
public static SearchBranching valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private SearchBranching(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.SearchBranching)
}
/**
*
* Rounding method to use for feasibility pump.
*
*
* Protobuf enum {@code operations_research.sat.SatParameters.FPRoundingMethod}
*/
public enum FPRoundingMethod
implements com.google.protobuf.ProtocolMessageEnum {
/**
*
* Rounds to the nearest integer value.
*
*
* NEAREST_INTEGER = 0;
*/
NEAREST_INTEGER(0),
/**
*
* Counts the number of linear constraints restricting the variable in the
* increasing values (up locks) and decreasing values (down locks). Rounds
* the variable in the direction of lesser locks.
*
*
* LOCK_BASED = 1;
*/
LOCK_BASED(1),
/**
*
* Similar to lock based rounding except this only considers locks of active
* constraints from the last lp solve.
*
*
* ACTIVE_LOCK_BASED = 3;
*/
ACTIVE_LOCK_BASED(3),
/**
*
* This is expensive rounding algorithm. We round variables one by one and
* propagate the bounds in between. If none of the rounded values fall in
* the continuous domain specified by lower and upper bound, we use the
* current lower/upper bound (whichever one is closest) instead of rounding
* the fractional lp solution value. If both the rounded values are in the
* domain, we round to nearest integer.
*
*
* PROPAGATION_ASSISTED = 2;
*/
PROPAGATION_ASSISTED(2),
;
/**
*
* Rounds to the nearest integer value.
*
*
* NEAREST_INTEGER = 0;
*/
public static final int NEAREST_INTEGER_VALUE = 0;
/**
*
* Counts the number of linear constraints restricting the variable in the
* increasing values (up locks) and decreasing values (down locks). Rounds
* the variable in the direction of lesser locks.
*
*
* LOCK_BASED = 1;
*/
public static final int LOCK_BASED_VALUE = 1;
/**
*
* Similar to lock based rounding except this only considers locks of active
* constraints from the last lp solve.
*
*
* ACTIVE_LOCK_BASED = 3;
*/
public static final int ACTIVE_LOCK_BASED_VALUE = 3;
/**
*
* This is expensive rounding algorithm. We round variables one by one and
* propagate the bounds in between. If none of the rounded values fall in
* the continuous domain specified by lower and upper bound, we use the
* current lower/upper bound (whichever one is closest) instead of rounding
* the fractional lp solution value. If both the rounded values are in the
* domain, we round to nearest integer.
*
*
* PROPAGATION_ASSISTED = 2;
*/
public static final int PROPAGATION_ASSISTED_VALUE = 2;
public final int getNumber() {
return value;
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
* @deprecated Use {@link #forNumber(int)} instead.
*/
@java.lang.Deprecated
public static FPRoundingMethod valueOf(int value) {
return forNumber(value);
}
/**
* @param value The numeric wire value of the corresponding enum entry.
* @return The enum associated with the given numeric wire value.
*/
public static FPRoundingMethod forNumber(int value) {
switch (value) {
case 0: return NEAREST_INTEGER;
case 1: return LOCK_BASED;
case 3: return ACTIVE_LOCK_BASED;
case 2: return PROPAGATION_ASSISTED;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
FPRoundingMethod> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public FPRoundingMethod findValueByNumber(int number) {
return FPRoundingMethod.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return com.google.ortools.sat.SatParameters.getDescriptor().getEnumTypes().get(10);
}
private static final FPRoundingMethod[] VALUES = values();
public static FPRoundingMethod valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int value;
private FPRoundingMethod(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.sat.SatParameters.FPRoundingMethod)
}
private int bitField0_;
private int bitField1_;
private int bitField2_;
private int bitField3_;
private int bitField4_;
public static final int PREFERRED_VARIABLE_ORDER_FIELD_NUMBER = 1;
private int preferredVariableOrder_;
/**
* optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default = IN_ORDER];
* @return Whether the preferredVariableOrder field is set.
*/
@java.lang.Override public boolean hasPreferredVariableOrder() {
return ((bitField0_ & 0x00000001) != 0);
}
/**
* optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default = IN_ORDER];
* @return The preferredVariableOrder.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.VariableOrder getPreferredVariableOrder() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.VariableOrder result = com.google.ortools.sat.SatParameters.VariableOrder.valueOf(preferredVariableOrder_);
return result == null ? com.google.ortools.sat.SatParameters.VariableOrder.IN_ORDER : result;
}
public static final int INITIAL_POLARITY_FIELD_NUMBER = 2;
private int initialPolarity_;
/**
* optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FALSE];
* @return Whether the initialPolarity field is set.
*/
@java.lang.Override public boolean hasInitialPolarity() {
return ((bitField0_ & 0x00000002) != 0);
}
/**
* optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FALSE];
* @return The initialPolarity.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.Polarity getInitialPolarity() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.Polarity result = com.google.ortools.sat.SatParameters.Polarity.valueOf(initialPolarity_);
return result == null ? com.google.ortools.sat.SatParameters.Polarity.POLARITY_FALSE : result;
}
public static final int USE_PHASE_SAVING_FIELD_NUMBER = 44;
private boolean usePhaseSaving_;
/**
*
* If this is true, then the polarity of a variable will be the last value it
* was assigned to, or its default polarity if it was never assigned since the
* call to ResetDecisionHeuristic().
* This is called 'literal phase saving'. For details see 'A Lightweight
* Component Caching Scheme for Satisfiability Solvers' K. Pipatsrisawat and
* A.Darwiche, In 10th International Conference on Theory and Applications of
* Satisfiability Testing, 2007.
*
*
* optional bool use_phase_saving = 44 [default = true];
* @return Whether the usePhaseSaving field is set.
*/
@java.lang.Override
public boolean hasUsePhaseSaving() {
return ((bitField0_ & 0x00000004) != 0);
}
/**
*
* If this is true, then the polarity of a variable will be the last value it
* was assigned to, or its default polarity if it was never assigned since the
* call to ResetDecisionHeuristic().
* This is called 'literal phase saving'. For details see 'A Lightweight
* Component Caching Scheme for Satisfiability Solvers' K. Pipatsrisawat and
* A.Darwiche, In 10th International Conference on Theory and Applications of
* Satisfiability Testing, 2007.
*
*
* optional bool use_phase_saving = 44 [default = true];
* @return The usePhaseSaving.
*/
@java.lang.Override
public boolean getUsePhaseSaving() {
return usePhaseSaving_;
}
public static final int RANDOM_POLARITY_RATIO_FIELD_NUMBER = 45;
private double randomPolarityRatio_;
/**
*
* The proportion of polarity chosen at random. Note that this take
* precedence over the phase saving heuristic. This is different from
* initial_polarity:POLARITY_RANDOM because it will select a new random
* polarity each time the variable is branched upon instead of selecting one
* initially and then always taking this choice.
*
*
* optional double random_polarity_ratio = 45 [default = 0];
* @return Whether the randomPolarityRatio field is set.
*/
@java.lang.Override
public boolean hasRandomPolarityRatio() {
return ((bitField0_ & 0x00000008) != 0);
}
/**
*
* The proportion of polarity chosen at random. Note that this take
* precedence over the phase saving heuristic. This is different from
* initial_polarity:POLARITY_RANDOM because it will select a new random
* polarity each time the variable is branched upon instead of selecting one
* initially and then always taking this choice.
*
*
* optional double random_polarity_ratio = 45 [default = 0];
* @return The randomPolarityRatio.
*/
@java.lang.Override
public double getRandomPolarityRatio() {
return randomPolarityRatio_;
}
public static final int RANDOM_BRANCHES_RATIO_FIELD_NUMBER = 32;
private double randomBranchesRatio_;
/**
*
* A number between 0 and 1 that indicates the proportion of branching
* variables that are selected randomly instead of choosing the first variable
* from the given variable_ordering strategy.
*
*
* optional double random_branches_ratio = 32 [default = 0];
* @return Whether the randomBranchesRatio field is set.
*/
@java.lang.Override
public boolean hasRandomBranchesRatio() {
return ((bitField0_ & 0x00000010) != 0);
}
/**
*
* A number between 0 and 1 that indicates the proportion of branching
* variables that are selected randomly instead of choosing the first variable
* from the given variable_ordering strategy.
*
*
* optional double random_branches_ratio = 32 [default = 0];
* @return The randomBranchesRatio.
*/
@java.lang.Override
public double getRandomBranchesRatio() {
return randomBranchesRatio_;
}
public static final int USE_ERWA_HEURISTIC_FIELD_NUMBER = 75;
private boolean useErwaHeuristic_;
/**
*
* Whether we use the ERWA (Exponential Recency Weighted Average) heuristic as
* described in "Learning Rate Based Branching Heuristic for SAT solvers",
* J.H.Liang, V. Ganesh, P. Poupart, K.Czarnecki, SAT 2016.
*
*
* optional bool use_erwa_heuristic = 75 [default = false];
* @return Whether the useErwaHeuristic field is set.
*/
@java.lang.Override
public boolean hasUseErwaHeuristic() {
return ((bitField0_ & 0x00000020) != 0);
}
/**
*
* Whether we use the ERWA (Exponential Recency Weighted Average) heuristic as
* described in "Learning Rate Based Branching Heuristic for SAT solvers",
* J.H.Liang, V. Ganesh, P. Poupart, K.Czarnecki, SAT 2016.
*
*
* optional bool use_erwa_heuristic = 75 [default = false];
* @return The useErwaHeuristic.
*/
@java.lang.Override
public boolean getUseErwaHeuristic() {
return useErwaHeuristic_;
}
public static final int INITIAL_VARIABLES_ACTIVITY_FIELD_NUMBER = 76;
private double initialVariablesActivity_;
/**
*
* The initial value of the variables activity. A non-zero value only make
* sense when use_erwa_heuristic is true. Experiments with a value of 1e-2
* together with the ERWA heuristic showed slighthly better result than simply
* using zero. The idea is that when the "learning rate" of a variable becomes
* lower than this value, then we prefer to branch on never explored before
* variables. This is not in the ERWA paper.
*
*
* optional double initial_variables_activity = 76 [default = 0];
* @return Whether the initialVariablesActivity field is set.
*/
@java.lang.Override
public boolean hasInitialVariablesActivity() {
return ((bitField0_ & 0x00000040) != 0);
}
/**
*
* The initial value of the variables activity. A non-zero value only make
* sense when use_erwa_heuristic is true. Experiments with a value of 1e-2
* together with the ERWA heuristic showed slighthly better result than simply
* using zero. The idea is that when the "learning rate" of a variable becomes
* lower than this value, then we prefer to branch on never explored before
* variables. This is not in the ERWA paper.
*
*
* optional double initial_variables_activity = 76 [default = 0];
* @return The initialVariablesActivity.
*/
@java.lang.Override
public double getInitialVariablesActivity() {
return initialVariablesActivity_;
}
public static final int ALSO_BUMP_VARIABLES_IN_CONFLICT_REASONS_FIELD_NUMBER = 77;
private boolean alsoBumpVariablesInConflictReasons_;
/**
*
* When this is true, then the variables that appear in any of the reason of
* the variables in a conflict have their activity bumped. This is addition to
* the variables in the conflict, and the one that were used during conflict
* resolution.
*
*
* optional bool also_bump_variables_in_conflict_reasons = 77 [default = false];
* @return Whether the alsoBumpVariablesInConflictReasons field is set.
*/
@java.lang.Override
public boolean hasAlsoBumpVariablesInConflictReasons() {
return ((bitField0_ & 0x00000080) != 0);
}
/**
*
* When this is true, then the variables that appear in any of the reason of
* the variables in a conflict have their activity bumped. This is addition to
* the variables in the conflict, and the one that were used during conflict
* resolution.
*
*
* optional bool also_bump_variables_in_conflict_reasons = 77 [default = false];
* @return The alsoBumpVariablesInConflictReasons.
*/
@java.lang.Override
public boolean getAlsoBumpVariablesInConflictReasons() {
return alsoBumpVariablesInConflictReasons_;
}
public static final int MINIMIZATION_ALGORITHM_FIELD_NUMBER = 4;
private int minimizationAlgorithm_;
/**
* optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm = 4 [default = RECURSIVE];
* @return Whether the minimizationAlgorithm field is set.
*/
@java.lang.Override public boolean hasMinimizationAlgorithm() {
return ((bitField0_ & 0x00000100) != 0);
}
/**
* optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm = 4 [default = RECURSIVE];
* @return The minimizationAlgorithm.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm getMinimizationAlgorithm() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm result = com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.valueOf(minimizationAlgorithm_);
return result == null ? com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.RECURSIVE : result;
}
public static final int BINARY_MINIMIZATION_ALGORITHM_FIELD_NUMBER = 34;
private int binaryMinimizationAlgorithm_;
/**
* optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorithm = 34 [default = BINARY_MINIMIZATION_FIRST];
* @return Whether the binaryMinimizationAlgorithm field is set.
*/
@java.lang.Override public boolean hasBinaryMinimizationAlgorithm() {
return ((bitField0_ & 0x00000200) != 0);
}
/**
* optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorithm = 34 [default = BINARY_MINIMIZATION_FIRST];
* @return The binaryMinimizationAlgorithm.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm getBinaryMinimizationAlgorithm() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm result = com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm.valueOf(binaryMinimizationAlgorithm_);
return result == null ? com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm.BINARY_MINIMIZATION_FIRST : result;
}
public static final int SUBSUMPTION_DURING_CONFLICT_ANALYSIS_FIELD_NUMBER = 56;
private boolean subsumptionDuringConflictAnalysis_;
/**
*
* At a really low cost, during the 1-UIP conflict computation, it is easy to
* detect if some of the involved reasons are subsumed by the current
* conflict. When this is true, such clauses are detached and later removed
* from the problem.
*
*
* optional bool subsumption_during_conflict_analysis = 56 [default = true];
* @return Whether the subsumptionDuringConflictAnalysis field is set.
*/
@java.lang.Override
public boolean hasSubsumptionDuringConflictAnalysis() {
return ((bitField0_ & 0x00000400) != 0);
}
/**
*
* At a really low cost, during the 1-UIP conflict computation, it is easy to
* detect if some of the involved reasons are subsumed by the current
* conflict. When this is true, such clauses are detached and later removed
* from the problem.
*
*
* optional bool subsumption_during_conflict_analysis = 56 [default = true];
* @return The subsumptionDuringConflictAnalysis.
*/
@java.lang.Override
public boolean getSubsumptionDuringConflictAnalysis() {
return subsumptionDuringConflictAnalysis_;
}
public static final int CLAUSE_CLEANUP_PERIOD_FIELD_NUMBER = 11;
private int clauseCleanupPeriod_;
/**
*
* Trigger a cleanup when this number of "deletable" clauses is learned.
*
*
* optional int32 clause_cleanup_period = 11 [default = 10000];
* @return Whether the clauseCleanupPeriod field is set.
*/
@java.lang.Override
public boolean hasClauseCleanupPeriod() {
return ((bitField0_ & 0x00000800) != 0);
}
/**
*
* Trigger a cleanup when this number of "deletable" clauses is learned.
*
*
* optional int32 clause_cleanup_period = 11 [default = 10000];
* @return The clauseCleanupPeriod.
*/
@java.lang.Override
public int getClauseCleanupPeriod() {
return clauseCleanupPeriod_;
}
public static final int CLAUSE_CLEANUP_TARGET_FIELD_NUMBER = 13;
private int clauseCleanupTarget_;
/**
*
* During a cleanup, we will always keep that number of "deletable" clauses.
* Note that this doesn't include the "protected" clauses.
*
*
* optional int32 clause_cleanup_target = 13 [default = 10000];
* @return Whether the clauseCleanupTarget field is set.
*/
@java.lang.Override
public boolean hasClauseCleanupTarget() {
return ((bitField0_ & 0x00001000) != 0);
}
/**
*
* During a cleanup, we will always keep that number of "deletable" clauses.
* Note that this doesn't include the "protected" clauses.
*
*
* optional int32 clause_cleanup_target = 13 [default = 10000];
* @return The clauseCleanupTarget.
*/
@java.lang.Override
public int getClauseCleanupTarget() {
return clauseCleanupTarget_;
}
public static final int CLAUSE_CLEANUP_PROTECTION_FIELD_NUMBER = 58;
private int clauseCleanupProtection_;
/**
* optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [default = PROTECTION_NONE];
* @return Whether the clauseCleanupProtection field is set.
*/
@java.lang.Override public boolean hasClauseCleanupProtection() {
return ((bitField0_ & 0x00002000) != 0);
}
/**
* optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [default = PROTECTION_NONE];
* @return The clauseCleanupProtection.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.ClauseProtection getClauseCleanupProtection() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ClauseProtection result = com.google.ortools.sat.SatParameters.ClauseProtection.valueOf(clauseCleanupProtection_);
return result == null ? com.google.ortools.sat.SatParameters.ClauseProtection.PROTECTION_NONE : result;
}
public static final int CLAUSE_CLEANUP_LBD_BOUND_FIELD_NUMBER = 59;
private int clauseCleanupLbdBound_;
/**
*
* All the clauses with a LBD (literal blocks distance) lower or equal to this
* parameters will always be kept.
*
*
* optional int32 clause_cleanup_lbd_bound = 59 [default = 5];
* @return Whether the clauseCleanupLbdBound field is set.
*/
@java.lang.Override
public boolean hasClauseCleanupLbdBound() {
return ((bitField0_ & 0x00004000) != 0);
}
/**
*
* All the clauses with a LBD (literal blocks distance) lower or equal to this
* parameters will always be kept.
*
*
* optional int32 clause_cleanup_lbd_bound = 59 [default = 5];
* @return The clauseCleanupLbdBound.
*/
@java.lang.Override
public int getClauseCleanupLbdBound() {
return clauseCleanupLbdBound_;
}
public static final int CLAUSE_CLEANUP_ORDERING_FIELD_NUMBER = 60;
private int clauseCleanupOrdering_;
/**
* optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default = CLAUSE_ACTIVITY];
* @return Whether the clauseCleanupOrdering field is set.
*/
@java.lang.Override public boolean hasClauseCleanupOrdering() {
return ((bitField0_ & 0x00008000) != 0);
}
/**
* optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default = CLAUSE_ACTIVITY];
* @return The clauseCleanupOrdering.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.ClauseOrdering getClauseCleanupOrdering() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ClauseOrdering result = com.google.ortools.sat.SatParameters.ClauseOrdering.valueOf(clauseCleanupOrdering_);
return result == null ? com.google.ortools.sat.SatParameters.ClauseOrdering.CLAUSE_ACTIVITY : result;
}
public static final int PB_CLEANUP_INCREMENT_FIELD_NUMBER = 46;
private int pbCleanupIncrement_;
/**
*
* Same as for the clauses, but for the learned pseudo-Boolean constraints.
*
*
* optional int32 pb_cleanup_increment = 46 [default = 200];
* @return Whether the pbCleanupIncrement field is set.
*/
@java.lang.Override
public boolean hasPbCleanupIncrement() {
return ((bitField0_ & 0x00010000) != 0);
}
/**
*
* Same as for the clauses, but for the learned pseudo-Boolean constraints.
*
*
* optional int32 pb_cleanup_increment = 46 [default = 200];
* @return The pbCleanupIncrement.
*/
@java.lang.Override
public int getPbCleanupIncrement() {
return pbCleanupIncrement_;
}
public static final int PB_CLEANUP_RATIO_FIELD_NUMBER = 47;
private double pbCleanupRatio_;
/**
* optional double pb_cleanup_ratio = 47 [default = 0.5];
* @return Whether the pbCleanupRatio field is set.
*/
@java.lang.Override
public boolean hasPbCleanupRatio() {
return ((bitField0_ & 0x00020000) != 0);
}
/**
* optional double pb_cleanup_ratio = 47 [default = 0.5];
* @return The pbCleanupRatio.
*/
@java.lang.Override
public double getPbCleanupRatio() {
return pbCleanupRatio_;
}
public static final int MINIMIZE_WITH_PROPAGATION_RESTART_PERIOD_FIELD_NUMBER = 96;
private int minimizeWithPropagationRestartPeriod_;
/**
*
* Parameters for an heuristic similar to the one descibed in "An effective
* learnt clause minimization approach for CDCL Sat Solvers",
* https://www.ijcai.org/proceedings/2017/0098.pdf
* For now, we have a somewhat simpler implementation where every x restart we
* spend y decisions on clause minimization. The minimization technique is the
* same as the one used to minimize core in max-sat. We also minimize problem
* clauses and not just the learned clause that we keep forever like in the
* paper.
* Changing these parameters or the kind of clause we minimize seems to have
* a big impact on the overall perf on our benchmarks. So this technique seems
* definitely useful, but it is hard to tune properly.
*
*
* optional int32 minimize_with_propagation_restart_period = 96 [default = 10];
* @return Whether the minimizeWithPropagationRestartPeriod field is set.
*/
@java.lang.Override
public boolean hasMinimizeWithPropagationRestartPeriod() {
return ((bitField0_ & 0x00040000) != 0);
}
/**
*
* Parameters for an heuristic similar to the one descibed in "An effective
* learnt clause minimization approach for CDCL Sat Solvers",
* https://www.ijcai.org/proceedings/2017/0098.pdf
* For now, we have a somewhat simpler implementation where every x restart we
* spend y decisions on clause minimization. The minimization technique is the
* same as the one used to minimize core in max-sat. We also minimize problem
* clauses and not just the learned clause that we keep forever like in the
* paper.
* Changing these parameters or the kind of clause we minimize seems to have
* a big impact on the overall perf on our benchmarks. So this technique seems
* definitely useful, but it is hard to tune properly.
*
*
* optional int32 minimize_with_propagation_restart_period = 96 [default = 10];
* @return The minimizeWithPropagationRestartPeriod.
*/
@java.lang.Override
public int getMinimizeWithPropagationRestartPeriod() {
return minimizeWithPropagationRestartPeriod_;
}
public static final int MINIMIZE_WITH_PROPAGATION_NUM_DECISIONS_FIELD_NUMBER = 97;
private int minimizeWithPropagationNumDecisions_;
/**
* optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
* @return Whether the minimizeWithPropagationNumDecisions field is set.
*/
@java.lang.Override
public boolean hasMinimizeWithPropagationNumDecisions() {
return ((bitField0_ & 0x00080000) != 0);
}
/**
* optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
* @return The minimizeWithPropagationNumDecisions.
*/
@java.lang.Override
public int getMinimizeWithPropagationNumDecisions() {
return minimizeWithPropagationNumDecisions_;
}
public static final int VARIABLE_ACTIVITY_DECAY_FIELD_NUMBER = 15;
private double variableActivityDecay_;
/**
*
* Each time a conflict is found, the activities of some variables are
* increased by one. Then, the activity of all variables are multiplied by
* variable_activity_decay.
* To implement this efficiently, the activity of all the variables is not
* decayed at each conflict. Instead, the activity increment is multiplied by
* 1 / decay. When an activity reach max_variable_activity_value, all the
* activity are multiplied by 1 / max_variable_activity_value.
*
*
* optional double variable_activity_decay = 15 [default = 0.8];
* @return Whether the variableActivityDecay field is set.
*/
@java.lang.Override
public boolean hasVariableActivityDecay() {
return ((bitField0_ & 0x00100000) != 0);
}
/**
*
* Each time a conflict is found, the activities of some variables are
* increased by one. Then, the activity of all variables are multiplied by
* variable_activity_decay.
* To implement this efficiently, the activity of all the variables is not
* decayed at each conflict. Instead, the activity increment is multiplied by
* 1 / decay. When an activity reach max_variable_activity_value, all the
* activity are multiplied by 1 / max_variable_activity_value.
*
*
* optional double variable_activity_decay = 15 [default = 0.8];
* @return The variableActivityDecay.
*/
@java.lang.Override
public double getVariableActivityDecay() {
return variableActivityDecay_;
}
public static final int MAX_VARIABLE_ACTIVITY_VALUE_FIELD_NUMBER = 16;
private double maxVariableActivityValue_;
/**
* optional double max_variable_activity_value = 16 [default = 1e+100];
* @return Whether the maxVariableActivityValue field is set.
*/
@java.lang.Override
public boolean hasMaxVariableActivityValue() {
return ((bitField0_ & 0x00200000) != 0);
}
/**
* optional double max_variable_activity_value = 16 [default = 1e+100];
* @return The maxVariableActivityValue.
*/
@java.lang.Override
public double getMaxVariableActivityValue() {
return maxVariableActivityValue_;
}
public static final int GLUCOSE_MAX_DECAY_FIELD_NUMBER = 22;
private double glucoseMaxDecay_;
/**
*
* The activity starts at 0.8 and increment by 0.01 every 5000 conflicts until
* 0.95. This "hack" seems to work well and comes from:
* Glucose 2.3 in the SAT 2013 Competition - SAT Competition 2013
* http://edacc4.informatik.uni-ulm.de/SC13/solver-description-download/136
*
*
* optional double glucose_max_decay = 22 [default = 0.95];
* @return Whether the glucoseMaxDecay field is set.
*/
@java.lang.Override
public boolean hasGlucoseMaxDecay() {
return ((bitField0_ & 0x00400000) != 0);
}
/**
*
* The activity starts at 0.8 and increment by 0.01 every 5000 conflicts until
* 0.95. This "hack" seems to work well and comes from:
* Glucose 2.3 in the SAT 2013 Competition - SAT Competition 2013
* http://edacc4.informatik.uni-ulm.de/SC13/solver-description-download/136
*
*
* optional double glucose_max_decay = 22 [default = 0.95];
* @return The glucoseMaxDecay.
*/
@java.lang.Override
public double getGlucoseMaxDecay() {
return glucoseMaxDecay_;
}
public static final int GLUCOSE_DECAY_INCREMENT_FIELD_NUMBER = 23;
private double glucoseDecayIncrement_;
/**
* optional double glucose_decay_increment = 23 [default = 0.01];
* @return Whether the glucoseDecayIncrement field is set.
*/
@java.lang.Override
public boolean hasGlucoseDecayIncrement() {
return ((bitField0_ & 0x00800000) != 0);
}
/**
* optional double glucose_decay_increment = 23 [default = 0.01];
* @return The glucoseDecayIncrement.
*/
@java.lang.Override
public double getGlucoseDecayIncrement() {
return glucoseDecayIncrement_;
}
public static final int GLUCOSE_DECAY_INCREMENT_PERIOD_FIELD_NUMBER = 24;
private int glucoseDecayIncrementPeriod_;
/**
* optional int32 glucose_decay_increment_period = 24 [default = 5000];
* @return Whether the glucoseDecayIncrementPeriod field is set.
*/
@java.lang.Override
public boolean hasGlucoseDecayIncrementPeriod() {
return ((bitField0_ & 0x01000000) != 0);
}
/**
* optional int32 glucose_decay_increment_period = 24 [default = 5000];
* @return The glucoseDecayIncrementPeriod.
*/
@java.lang.Override
public int getGlucoseDecayIncrementPeriod() {
return glucoseDecayIncrementPeriod_;
}
public static final int CLAUSE_ACTIVITY_DECAY_FIELD_NUMBER = 17;
private double clauseActivityDecay_;
/**
*
* Clause activity parameters (same effect as the one on the variables).
*
*
* optional double clause_activity_decay = 17 [default = 0.999];
* @return Whether the clauseActivityDecay field is set.
*/
@java.lang.Override
public boolean hasClauseActivityDecay() {
return ((bitField0_ & 0x02000000) != 0);
}
/**
*
* Clause activity parameters (same effect as the one on the variables).
*
*
* optional double clause_activity_decay = 17 [default = 0.999];
* @return The clauseActivityDecay.
*/
@java.lang.Override
public double getClauseActivityDecay() {
return clauseActivityDecay_;
}
public static final int MAX_CLAUSE_ACTIVITY_VALUE_FIELD_NUMBER = 18;
private double maxClauseActivityValue_;
/**
* optional double max_clause_activity_value = 18 [default = 1e+20];
* @return Whether the maxClauseActivityValue field is set.
*/
@java.lang.Override
public boolean hasMaxClauseActivityValue() {
return ((bitField0_ & 0x04000000) != 0);
}
/**
* optional double max_clause_activity_value = 18 [default = 1e+20];
* @return The maxClauseActivityValue.
*/
@java.lang.Override
public double getMaxClauseActivityValue() {
return maxClauseActivityValue_;
}
public static final int RESTART_ALGORITHMS_FIELD_NUMBER = 61;
private java.util.List restartAlgorithms_;
private static final com.google.protobuf.Internal.ListAdapter.Converter<
java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm> restartAlgorithms_converter_ =
new com.google.protobuf.Internal.ListAdapter.Converter<
java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>() {
public com.google.ortools.sat.SatParameters.RestartAlgorithm convert(java.lang.Integer from) {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.RestartAlgorithm result = com.google.ortools.sat.SatParameters.RestartAlgorithm.valueOf(from);
return result == null ? com.google.ortools.sat.SatParameters.RestartAlgorithm.NO_RESTART : result;
}
};
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @return A list containing the restartAlgorithms.
*/
@java.lang.Override
public java.util.List getRestartAlgorithmsList() {
return new com.google.protobuf.Internal.ListAdapter<
java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>(restartAlgorithms_, restartAlgorithms_converter_);
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @return The count of restartAlgorithms.
*/
@java.lang.Override
public int getRestartAlgorithmsCount() {
return restartAlgorithms_.size();
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @param index The index of the element to return.
* @return The restartAlgorithms at the given index.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.RestartAlgorithm getRestartAlgorithms(int index) {
return restartAlgorithms_converter_.convert(restartAlgorithms_.get(index));
}
public static final int DEFAULT_RESTART_ALGORITHMS_FIELD_NUMBER = 70;
private volatile java.lang.Object defaultRestartAlgorithms_;
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @return Whether the defaultRestartAlgorithms field is set.
*/
@java.lang.Override
public boolean hasDefaultRestartAlgorithms() {
return ((bitField0_ & 0x08000000) != 0);
}
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @return The defaultRestartAlgorithms.
*/
@java.lang.Override
public java.lang.String getDefaultRestartAlgorithms() {
java.lang.Object ref = defaultRestartAlgorithms_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
defaultRestartAlgorithms_ = s;
}
return s;
}
}
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @return The bytes for defaultRestartAlgorithms.
*/
@java.lang.Override
public com.google.protobuf.ByteString
getDefaultRestartAlgorithmsBytes() {
java.lang.Object ref = defaultRestartAlgorithms_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
defaultRestartAlgorithms_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
public static final int RESTART_PERIOD_FIELD_NUMBER = 30;
private int restartPeriod_;
/**
*
* Restart period for the FIXED_RESTART strategy. This is also the multiplier
* used by the LUBY_RESTART strategy.
*
*
* optional int32 restart_period = 30 [default = 50];
* @return Whether the restartPeriod field is set.
*/
@java.lang.Override
public boolean hasRestartPeriod() {
return ((bitField0_ & 0x10000000) != 0);
}
/**
*
* Restart period for the FIXED_RESTART strategy. This is also the multiplier
* used by the LUBY_RESTART strategy.
*
*
* optional int32 restart_period = 30 [default = 50];
* @return The restartPeriod.
*/
@java.lang.Override
public int getRestartPeriod() {
return restartPeriod_;
}
public static final int RESTART_RUNNING_WINDOW_SIZE_FIELD_NUMBER = 62;
private int restartRunningWindowSize_;
/**
*
* Size of the window for the moving average restarts.
*
*
* optional int32 restart_running_window_size = 62 [default = 50];
* @return Whether the restartRunningWindowSize field is set.
*/
@java.lang.Override
public boolean hasRestartRunningWindowSize() {
return ((bitField0_ & 0x20000000) != 0);
}
/**
*
* Size of the window for the moving average restarts.
*
*
* optional int32 restart_running_window_size = 62 [default = 50];
* @return The restartRunningWindowSize.
*/
@java.lang.Override
public int getRestartRunningWindowSize() {
return restartRunningWindowSize_;
}
public static final int RESTART_DL_AVERAGE_RATIO_FIELD_NUMBER = 63;
private double restartDlAverageRatio_;
/**
*
* In the moving average restart algorithms, a restart is triggered if the
* window average times this ratio is greater that the global average.
*
*
* optional double restart_dl_average_ratio = 63 [default = 1];
* @return Whether the restartDlAverageRatio field is set.
*/
@java.lang.Override
public boolean hasRestartDlAverageRatio() {
return ((bitField0_ & 0x40000000) != 0);
}
/**
*
* In the moving average restart algorithms, a restart is triggered if the
* window average times this ratio is greater that the global average.
*
*
* optional double restart_dl_average_ratio = 63 [default = 1];
* @return The restartDlAverageRatio.
*/
@java.lang.Override
public double getRestartDlAverageRatio() {
return restartDlAverageRatio_;
}
public static final int RESTART_LBD_AVERAGE_RATIO_FIELD_NUMBER = 71;
private double restartLbdAverageRatio_;
/**
* optional double restart_lbd_average_ratio = 71 [default = 1];
* @return Whether the restartLbdAverageRatio field is set.
*/
@java.lang.Override
public boolean hasRestartLbdAverageRatio() {
return ((bitField0_ & 0x80000000) != 0);
}
/**
* optional double restart_lbd_average_ratio = 71 [default = 1];
* @return The restartLbdAverageRatio.
*/
@java.lang.Override
public double getRestartLbdAverageRatio() {
return restartLbdAverageRatio_;
}
public static final int USE_BLOCKING_RESTART_FIELD_NUMBER = 64;
private boolean useBlockingRestart_;
/**
*
* Block a moving restart algorithm if the trail size of the current conflict
* is greater than the multiplier times the moving average of the trail size
* at the previous conflicts.
*
*
* optional bool use_blocking_restart = 64 [default = false];
* @return Whether the useBlockingRestart field is set.
*/
@java.lang.Override
public boolean hasUseBlockingRestart() {
return ((bitField1_ & 0x00000001) != 0);
}
/**
*
* Block a moving restart algorithm if the trail size of the current conflict
* is greater than the multiplier times the moving average of the trail size
* at the previous conflicts.
*
*
* optional bool use_blocking_restart = 64 [default = false];
* @return The useBlockingRestart.
*/
@java.lang.Override
public boolean getUseBlockingRestart() {
return useBlockingRestart_;
}
public static final int BLOCKING_RESTART_WINDOW_SIZE_FIELD_NUMBER = 65;
private int blockingRestartWindowSize_;
/**
* optional int32 blocking_restart_window_size = 65 [default = 5000];
* @return Whether the blockingRestartWindowSize field is set.
*/
@java.lang.Override
public boolean hasBlockingRestartWindowSize() {
return ((bitField1_ & 0x00000002) != 0);
}
/**
* optional int32 blocking_restart_window_size = 65 [default = 5000];
* @return The blockingRestartWindowSize.
*/
@java.lang.Override
public int getBlockingRestartWindowSize() {
return blockingRestartWindowSize_;
}
public static final int BLOCKING_RESTART_MULTIPLIER_FIELD_NUMBER = 66;
private double blockingRestartMultiplier_;
/**
* optional double blocking_restart_multiplier = 66 [default = 1.4];
* @return Whether the blockingRestartMultiplier field is set.
*/
@java.lang.Override
public boolean hasBlockingRestartMultiplier() {
return ((bitField1_ & 0x00000004) != 0);
}
/**
* optional double blocking_restart_multiplier = 66 [default = 1.4];
* @return The blockingRestartMultiplier.
*/
@java.lang.Override
public double getBlockingRestartMultiplier() {
return blockingRestartMultiplier_;
}
public static final int NUM_CONFLICTS_BEFORE_STRATEGY_CHANGES_FIELD_NUMBER = 68;
private int numConflictsBeforeStrategyChanges_;
/**
*
* After each restart, if the number of conflict since the last strategy
* change is greater that this, then we increment a "strategy_counter" that
* can be use to change the search strategy used by the following restarts.
*
*
* optional int32 num_conflicts_before_strategy_changes = 68 [default = 0];
* @return Whether the numConflictsBeforeStrategyChanges field is set.
*/
@java.lang.Override
public boolean hasNumConflictsBeforeStrategyChanges() {
return ((bitField1_ & 0x00000008) != 0);
}
/**
*
* After each restart, if the number of conflict since the last strategy
* change is greater that this, then we increment a "strategy_counter" that
* can be use to change the search strategy used by the following restarts.
*
*
* optional int32 num_conflicts_before_strategy_changes = 68 [default = 0];
* @return The numConflictsBeforeStrategyChanges.
*/
@java.lang.Override
public int getNumConflictsBeforeStrategyChanges() {
return numConflictsBeforeStrategyChanges_;
}
public static final int STRATEGY_CHANGE_INCREASE_RATIO_FIELD_NUMBER = 69;
private double strategyChangeIncreaseRatio_;
/**
*
* The parameter num_conflicts_before_strategy_changes is increased by that
* much after each strategy change.
*
*
* optional double strategy_change_increase_ratio = 69 [default = 0];
* @return Whether the strategyChangeIncreaseRatio field is set.
*/
@java.lang.Override
public boolean hasStrategyChangeIncreaseRatio() {
return ((bitField1_ & 0x00000010) != 0);
}
/**
*
* The parameter num_conflicts_before_strategy_changes is increased by that
* much after each strategy change.
*
*
* optional double strategy_change_increase_ratio = 69 [default = 0];
* @return The strategyChangeIncreaseRatio.
*/
@java.lang.Override
public double getStrategyChangeIncreaseRatio() {
return strategyChangeIncreaseRatio_;
}
public static final int MAX_TIME_IN_SECONDS_FIELD_NUMBER = 36;
private double maxTimeInSeconds_;
/**
*
* Maximum time allowed in seconds to solve a problem.
* The counter will starts at the beginning of the Solve() call.
*
*
* optional double max_time_in_seconds = 36 [default = inf];
* @return Whether the maxTimeInSeconds field is set.
*/
@java.lang.Override
public boolean hasMaxTimeInSeconds() {
return ((bitField1_ & 0x00000020) != 0);
}
/**
*
* Maximum time allowed in seconds to solve a problem.
* The counter will starts at the beginning of the Solve() call.
*
*
* optional double max_time_in_seconds = 36 [default = inf];
* @return The maxTimeInSeconds.
*/
@java.lang.Override
public double getMaxTimeInSeconds() {
return maxTimeInSeconds_;
}
public static final int MAX_DETERMINISTIC_TIME_FIELD_NUMBER = 67;
private double maxDeterministicTime_;
/**
*
* Maximum time allowed in deterministic time to solve a problem.
* The deterministic time should be correlated with the real time used by the
* solver, the time unit being as close as possible to a second.
*
*
* optional double max_deterministic_time = 67 [default = inf];
* @return Whether the maxDeterministicTime field is set.
*/
@java.lang.Override
public boolean hasMaxDeterministicTime() {
return ((bitField1_ & 0x00000040) != 0);
}
/**
*
* Maximum time allowed in deterministic time to solve a problem.
* The deterministic time should be correlated with the real time used by the
* solver, the time unit being as close as possible to a second.
*
*
* optional double max_deterministic_time = 67 [default = inf];
* @return The maxDeterministicTime.
*/
@java.lang.Override
public double getMaxDeterministicTime() {
return maxDeterministicTime_;
}
public static final int MAX_NUMBER_OF_CONFLICTS_FIELD_NUMBER = 37;
private long maxNumberOfConflicts_;
/**
*
* Maximum number of conflicts allowed to solve a problem.
* TODO(user,user): Maybe change the way the conflict limit is enforced?
* currently it is enforced on each independent internal SAT solve, rather
* than on the overall number of conflicts across all solves. So in the
* context of an optimization problem, this is not really usable directly by a
* client.
*
*
* optional int64 max_number_of_conflicts = 37 [default = 9223372036854775807];
* @return Whether the maxNumberOfConflicts field is set.
*/
@java.lang.Override
public boolean hasMaxNumberOfConflicts() {
return ((bitField1_ & 0x00000080) != 0);
}
/**
*
* Maximum number of conflicts allowed to solve a problem.
* TODO(user,user): Maybe change the way the conflict limit is enforced?
* currently it is enforced on each independent internal SAT solve, rather
* than on the overall number of conflicts across all solves. So in the
* context of an optimization problem, this is not really usable directly by a
* client.
*
*
* optional int64 max_number_of_conflicts = 37 [default = 9223372036854775807];
* @return The maxNumberOfConflicts.
*/
@java.lang.Override
public long getMaxNumberOfConflicts() {
return maxNumberOfConflicts_;
}
public static final int MAX_MEMORY_IN_MB_FIELD_NUMBER = 40;
private long maxMemoryInMb_;
/**
*
* Maximum memory allowed for the whole thread containing the solver. The
* solver will abort as soon as it detects that this limit is crossed. As a
* result, this limit is approximative, but usually the solver will not go too
* much over.
*
*
* optional int64 max_memory_in_mb = 40 [default = 10000];
* @return Whether the maxMemoryInMb field is set.
*/
@java.lang.Override
public boolean hasMaxMemoryInMb() {
return ((bitField1_ & 0x00000100) != 0);
}
/**
*
* Maximum memory allowed for the whole thread containing the solver. The
* solver will abort as soon as it detects that this limit is crossed. As a
* result, this limit is approximative, but usually the solver will not go too
* much over.
*
*
* optional int64 max_memory_in_mb = 40 [default = 10000];
* @return The maxMemoryInMb.
*/
@java.lang.Override
public long getMaxMemoryInMb() {
return maxMemoryInMb_;
}
public static final int ABSOLUTE_GAP_LIMIT_FIELD_NUMBER = 159;
private double absoluteGapLimit_;
/**
*
* Stop the search when the gap between the best feasible objective (O) and
* our best objective bound (B) is smaller than a limit.
* The exact definition is:
* - Absolute: abs(O - B)
* - Relative: abs(O - B) / max(1, abs(O)).
* Important: The relative gap depends on the objective offset! If you
* artificially shift the objective, you will get widely different value of
* the relative gap.
* Note that if the gap is reached, the search status will be OPTIMAL. But
* one can check the best objective bound to see the actual gap.
*
*
* optional double absolute_gap_limit = 159 [default = 0];
* @return Whether the absoluteGapLimit field is set.
*/
@java.lang.Override
public boolean hasAbsoluteGapLimit() {
return ((bitField1_ & 0x00000200) != 0);
}
/**
*
* Stop the search when the gap between the best feasible objective (O) and
* our best objective bound (B) is smaller than a limit.
* The exact definition is:
* - Absolute: abs(O - B)
* - Relative: abs(O - B) / max(1, abs(O)).
* Important: The relative gap depends on the objective offset! If you
* artificially shift the objective, you will get widely different value of
* the relative gap.
* Note that if the gap is reached, the search status will be OPTIMAL. But
* one can check the best objective bound to see the actual gap.
*
*
* optional double absolute_gap_limit = 159 [default = 0];
* @return The absoluteGapLimit.
*/
@java.lang.Override
public double getAbsoluteGapLimit() {
return absoluteGapLimit_;
}
public static final int RELATIVE_GAP_LIMIT_FIELD_NUMBER = 160;
private double relativeGapLimit_;
/**
* optional double relative_gap_limit = 160 [default = 0];
* @return Whether the relativeGapLimit field is set.
*/
@java.lang.Override
public boolean hasRelativeGapLimit() {
return ((bitField1_ & 0x00000400) != 0);
}
/**
* optional double relative_gap_limit = 160 [default = 0];
* @return The relativeGapLimit.
*/
@java.lang.Override
public double getRelativeGapLimit() {
return relativeGapLimit_;
}
public static final int TREAT_BINARY_CLAUSES_SEPARATELY_FIELD_NUMBER = 33;
private boolean treatBinaryClausesSeparately_;
/**
*
* If true, the binary clauses are treated separately from the others. This
* should be faster and uses less memory. However it changes the propagation
* order.
*
*
* optional bool treat_binary_clauses_separately = 33 [default = true];
* @return Whether the treatBinaryClausesSeparately field is set.
*/
@java.lang.Override
public boolean hasTreatBinaryClausesSeparately() {
return ((bitField1_ & 0x00000800) != 0);
}
/**
*
* If true, the binary clauses are treated separately from the others. This
* should be faster and uses less memory. However it changes the propagation
* order.
*
*
* optional bool treat_binary_clauses_separately = 33 [default = true];
* @return The treatBinaryClausesSeparately.
*/
@java.lang.Override
public boolean getTreatBinaryClausesSeparately() {
return treatBinaryClausesSeparately_;
}
public static final int RANDOM_SEED_FIELD_NUMBER = 31;
private int randomSeed_;
/**
*
* At the beginning of each solve, the random number generator used in some
* part of the solver is reinitialized to this seed. If you change the random
* seed, the solver may make different choices during the solving process.
* For some problems, the running time may vary a lot depending on small
* change in the solving algorithm. Running the solver with different seeds
* enables to have more robust benchmarks when evaluating new features.
*
*
* optional int32 random_seed = 31 [default = 1];
* @return Whether the randomSeed field is set.
*/
@java.lang.Override
public boolean hasRandomSeed() {
return ((bitField1_ & 0x00001000) != 0);
}
/**
*
* At the beginning of each solve, the random number generator used in some
* part of the solver is reinitialized to this seed. If you change the random
* seed, the solver may make different choices during the solving process.
* For some problems, the running time may vary a lot depending on small
* change in the solving algorithm. Running the solver with different seeds
* enables to have more robust benchmarks when evaluating new features.
*
*
* optional int32 random_seed = 31 [default = 1];
* @return The randomSeed.
*/
@java.lang.Override
public int getRandomSeed() {
return randomSeed_;
}
public static final int LOG_SEARCH_PROGRESS_FIELD_NUMBER = 41;
private boolean logSearchProgress_;
/**
*
* Whether the solver should log the search progress to LOG(INFO).
*
*
* optional bool log_search_progress = 41 [default = false];
* @return Whether the logSearchProgress field is set.
*/
@java.lang.Override
public boolean hasLogSearchProgress() {
return ((bitField1_ & 0x00002000) != 0);
}
/**
*
* Whether the solver should log the search progress to LOG(INFO).
*
*
* optional bool log_search_progress = 41 [default = false];
* @return The logSearchProgress.
*/
@java.lang.Override
public boolean getLogSearchProgress() {
return logSearchProgress_;
}
public static final int USE_PB_RESOLUTION_FIELD_NUMBER = 43;
private boolean usePbResolution_;
/**
*
* Whether to use pseudo-Boolean resolution to analyze a conflict. Note that
* this option only make sense if your problem is modelized using
* pseudo-Boolean constraints. If you only have clauses, this shouldn't change
* anything (except slow the solver down).
*
*
* optional bool use_pb_resolution = 43 [default = false];
* @return Whether the usePbResolution field is set.
*/
@java.lang.Override
public boolean hasUsePbResolution() {
return ((bitField1_ & 0x00004000) != 0);
}
/**
*
* Whether to use pseudo-Boolean resolution to analyze a conflict. Note that
* this option only make sense if your problem is modelized using
* pseudo-Boolean constraints. If you only have clauses, this shouldn't change
* anything (except slow the solver down).
*
*
* optional bool use_pb_resolution = 43 [default = false];
* @return The usePbResolution.
*/
@java.lang.Override
public boolean getUsePbResolution() {
return usePbResolution_;
}
public static final int MINIMIZE_REDUCTION_DURING_PB_RESOLUTION_FIELD_NUMBER = 48;
private boolean minimizeReductionDuringPbResolution_;
/**
*
* A different algorithm during PB resolution. It minimizes the number of
* calls to ReduceCoefficients() which can be time consuming. However, the
* search space will be different and if the coefficients are large, this may
* lead to integer overflows that could otherwise be prevented.
*
*
* optional bool minimize_reduction_during_pb_resolution = 48 [default = false];
* @return Whether the minimizeReductionDuringPbResolution field is set.
*/
@java.lang.Override
public boolean hasMinimizeReductionDuringPbResolution() {
return ((bitField1_ & 0x00008000) != 0);
}
/**
*
* A different algorithm during PB resolution. It minimizes the number of
* calls to ReduceCoefficients() which can be time consuming. However, the
* search space will be different and if the coefficients are large, this may
* lead to integer overflows that could otherwise be prevented.
*
*
* optional bool minimize_reduction_during_pb_resolution = 48 [default = false];
* @return The minimizeReductionDuringPbResolution.
*/
@java.lang.Override
public boolean getMinimizeReductionDuringPbResolution() {
return minimizeReductionDuringPbResolution_;
}
public static final int COUNT_ASSUMPTION_LEVELS_IN_LBD_FIELD_NUMBER = 49;
private boolean countAssumptionLevelsInLbd_;
/**
*
* Whether or not the assumption levels are taken into account during the LBD
* computation. According to the reference below, not counting them improves
* the solver in some situation. Note that this only impact solves under
* assumptions.
* Gilles Audemard, Jean-Marie Lagniez, Laurent Simon, "Improving Glucose for
* Incremental SAT Solving with Assumptions: Application to MUS Extraction"
* Theory and Applications of Satisfiability Testing - SAT 2013, Lecture Notes
* in Computer Science Volume 7962, 2013, pp 309-317.
*
*
* optional bool count_assumption_levels_in_lbd = 49 [default = true];
* @return Whether the countAssumptionLevelsInLbd field is set.
*/
@java.lang.Override
public boolean hasCountAssumptionLevelsInLbd() {
return ((bitField1_ & 0x00010000) != 0);
}
/**
*
* Whether or not the assumption levels are taken into account during the LBD
* computation. According to the reference below, not counting them improves
* the solver in some situation. Note that this only impact solves under
* assumptions.
* Gilles Audemard, Jean-Marie Lagniez, Laurent Simon, "Improving Glucose for
* Incremental SAT Solving with Assumptions: Application to MUS Extraction"
* Theory and Applications of Satisfiability Testing - SAT 2013, Lecture Notes
* in Computer Science Volume 7962, 2013, pp 309-317.
*
*
* optional bool count_assumption_levels_in_lbd = 49 [default = true];
* @return The countAssumptionLevelsInLbd.
*/
@java.lang.Override
public boolean getCountAssumptionLevelsInLbd() {
return countAssumptionLevelsInLbd_;
}
public static final int PRESOLVE_BVE_THRESHOLD_FIELD_NUMBER = 54;
private int presolveBveThreshold_;
/**
*
* During presolve, only try to perform the bounded variable elimination (BVE)
* of a variable x if the number of occurrences of x times the number of
* occurrences of not(x) is not greater than this parameter.
*
*
* optional int32 presolve_bve_threshold = 54 [default = 500];
* @return Whether the presolveBveThreshold field is set.
*/
@java.lang.Override
public boolean hasPresolveBveThreshold() {
return ((bitField1_ & 0x00020000) != 0);
}
/**
*
* During presolve, only try to perform the bounded variable elimination (BVE)
* of a variable x if the number of occurrences of x times the number of
* occurrences of not(x) is not greater than this parameter.
*
*
* optional int32 presolve_bve_threshold = 54 [default = 500];
* @return The presolveBveThreshold.
*/
@java.lang.Override
public int getPresolveBveThreshold() {
return presolveBveThreshold_;
}
public static final int PRESOLVE_BVE_CLAUSE_WEIGHT_FIELD_NUMBER = 55;
private int presolveBveClauseWeight_;
/**
*
* During presolve, we apply BVE only if this weight times the number of
* clauses plus the number of clause literals is not increased.
*
*
* optional int32 presolve_bve_clause_weight = 55 [default = 3];
* @return Whether the presolveBveClauseWeight field is set.
*/
@java.lang.Override
public boolean hasPresolveBveClauseWeight() {
return ((bitField1_ & 0x00040000) != 0);
}
/**
*
* During presolve, we apply BVE only if this weight times the number of
* clauses plus the number of clause literals is not increased.
*
*
* optional int32 presolve_bve_clause_weight = 55 [default = 3];
* @return The presolveBveClauseWeight.
*/
@java.lang.Override
public int getPresolveBveClauseWeight() {
return presolveBveClauseWeight_;
}
public static final int PRESOLVE_PROBING_DETERMINISTIC_TIME_LIMIT_FIELD_NUMBER = 57;
private double presolveProbingDeterministicTimeLimit_;
/**
*
* The maximum "deterministic" time limit to spend in probing. A value of
* zero will disable the probing.
*
*
* optional double presolve_probing_deterministic_time_limit = 57 [default = 30];
* @return Whether the presolveProbingDeterministicTimeLimit field is set.
*/
@java.lang.Override
public boolean hasPresolveProbingDeterministicTimeLimit() {
return ((bitField1_ & 0x00080000) != 0);
}
/**
*
* The maximum "deterministic" time limit to spend in probing. A value of
* zero will disable the probing.
*
*
* optional double presolve_probing_deterministic_time_limit = 57 [default = 30];
* @return The presolveProbingDeterministicTimeLimit.
*/
@java.lang.Override
public double getPresolveProbingDeterministicTimeLimit() {
return presolveProbingDeterministicTimeLimit_;
}
public static final int PRESOLVE_BLOCKED_CLAUSE_FIELD_NUMBER = 88;
private boolean presolveBlockedClause_;
/**
*
* Whether we use an heuristic to detect some basic case of blocked clause
* in the SAT presolve.
*
*
* optional bool presolve_blocked_clause = 88 [default = true];
* @return Whether the presolveBlockedClause field is set.
*/
@java.lang.Override
public boolean hasPresolveBlockedClause() {
return ((bitField1_ & 0x00100000) != 0);
}
/**
*
* Whether we use an heuristic to detect some basic case of blocked clause
* in the SAT presolve.
*
*
* optional bool presolve_blocked_clause = 88 [default = true];
* @return The presolveBlockedClause.
*/
@java.lang.Override
public boolean getPresolveBlockedClause() {
return presolveBlockedClause_;
}
public static final int PRESOLVE_USE_BVA_FIELD_NUMBER = 72;
private boolean presolveUseBva_;
/**
*
* Whether or not we use Bounded Variable Addition (BVA) in the presolve.
*
*
* optional bool presolve_use_bva = 72 [default = true];
* @return Whether the presolveUseBva field is set.
*/
@java.lang.Override
public boolean hasPresolveUseBva() {
return ((bitField1_ & 0x00200000) != 0);
}
/**
*
* Whether or not we use Bounded Variable Addition (BVA) in the presolve.
*
*
* optional bool presolve_use_bva = 72 [default = true];
* @return The presolveUseBva.
*/
@java.lang.Override
public boolean getPresolveUseBva() {
return presolveUseBva_;
}
public static final int PRESOLVE_BVA_THRESHOLD_FIELD_NUMBER = 73;
private int presolveBvaThreshold_;
/**
*
* Apply Bounded Variable Addition (BVA) if the number of clauses is reduced
* by stricly more than this threshold. The algorithm described in the paper
* uses 0, but quick experiments showed that 1 is a good value. It may not be
* worth it to add a new variable just to remove one clause.
*
*
* optional int32 presolve_bva_threshold = 73 [default = 1];
* @return Whether the presolveBvaThreshold field is set.
*/
@java.lang.Override
public boolean hasPresolveBvaThreshold() {
return ((bitField1_ & 0x00400000) != 0);
}
/**
*
* Apply Bounded Variable Addition (BVA) if the number of clauses is reduced
* by stricly more than this threshold. The algorithm described in the paper
* uses 0, but quick experiments showed that 1 is a good value. It may not be
* worth it to add a new variable just to remove one clause.
*
*
* optional int32 presolve_bva_threshold = 73 [default = 1];
* @return The presolveBvaThreshold.
*/
@java.lang.Override
public int getPresolveBvaThreshold() {
return presolveBvaThreshold_;
}
public static final int MAX_PRESOLVE_ITERATIONS_FIELD_NUMBER = 138;
private int maxPresolveIterations_;
/**
*
* In case of large reduction in a presolve iteration, we perform multiple
* presolve iterations. This parameter controls the maximum number of such
* presolve iterations.
*
*
* optional int32 max_presolve_iterations = 138 [default = 3];
* @return Whether the maxPresolveIterations field is set.
*/
@java.lang.Override
public boolean hasMaxPresolveIterations() {
return ((bitField1_ & 0x00800000) != 0);
}
/**
*
* In case of large reduction in a presolve iteration, we perform multiple
* presolve iterations. This parameter controls the maximum number of such
* presolve iterations.
*
*
* optional int32 max_presolve_iterations = 138 [default = 3];
* @return The maxPresolveIterations.
*/
@java.lang.Override
public int getMaxPresolveIterations() {
return maxPresolveIterations_;
}
public static final int CP_MODEL_PRESOLVE_FIELD_NUMBER = 86;
private boolean cpModelPresolve_;
/**
*
* Whether we presolve the cp_model before solving it.
*
*
* optional bool cp_model_presolve = 86 [default = true];
* @return Whether the cpModelPresolve field is set.
*/
@java.lang.Override
public boolean hasCpModelPresolve() {
return ((bitField1_ & 0x01000000) != 0);
}
/**
*
* Whether we presolve the cp_model before solving it.
*
*
* optional bool cp_model_presolve = 86 [default = true];
* @return The cpModelPresolve.
*/
@java.lang.Override
public boolean getCpModelPresolve() {
return cpModelPresolve_;
}
public static final int CP_MODEL_POSTSOLVE_WITH_FULL_SOLVER_FIELD_NUMBER = 162;
private boolean cpModelPostsolveWithFullSolver_;
/**
*
* Advanced usage. We have two different postsolve code. The default one
* should be better and it allows for a more powerful presolve, but some
* rarely used features like not fully assigning all variables require the
* other one.
*
*
* optional bool cp_model_postsolve_with_full_solver = 162 [default = false];
* @return Whether the cpModelPostsolveWithFullSolver field is set.
*/
@java.lang.Override
public boolean hasCpModelPostsolveWithFullSolver() {
return ((bitField1_ & 0x02000000) != 0);
}
/**
*
* Advanced usage. We have two different postsolve code. The default one
* should be better and it allows for a more powerful presolve, but some
* rarely used features like not fully assigning all variables require the
* other one.
*
*
* optional bool cp_model_postsolve_with_full_solver = 162 [default = false];
* @return The cpModelPostsolveWithFullSolver.
*/
@java.lang.Override
public boolean getCpModelPostsolveWithFullSolver() {
return cpModelPostsolveWithFullSolver_;
}
public static final int CP_MODEL_MAX_NUM_PRESOLVE_OPERATIONS_FIELD_NUMBER = 151;
private int cpModelMaxNumPresolveOperations_;
/**
*
* If positive, try to stop just after that many presolve rules have been
* applied. This is mainly useful for debugging presolve.
*
*
* optional int32 cp_model_max_num_presolve_operations = 151 [default = 0];
* @return Whether the cpModelMaxNumPresolveOperations field is set.
*/
@java.lang.Override
public boolean hasCpModelMaxNumPresolveOperations() {
return ((bitField1_ & 0x04000000) != 0);
}
/**
*
* If positive, try to stop just after that many presolve rules have been
* applied. This is mainly useful for debugging presolve.
*
*
* optional int32 cp_model_max_num_presolve_operations = 151 [default = 0];
* @return The cpModelMaxNumPresolveOperations.
*/
@java.lang.Override
public int getCpModelMaxNumPresolveOperations() {
return cpModelMaxNumPresolveOperations_;
}
public static final int CP_MODEL_PROBING_LEVEL_FIELD_NUMBER = 110;
private int cpModelProbingLevel_;
/**
*
* How much effort do we spend on probing. 0 disables it completely.
*
*
* optional int32 cp_model_probing_level = 110 [default = 2];
* @return Whether the cpModelProbingLevel field is set.
*/
@java.lang.Override
public boolean hasCpModelProbingLevel() {
return ((bitField1_ & 0x08000000) != 0);
}
/**
*
* How much effort do we spend on probing. 0 disables it completely.
*
*
* optional int32 cp_model_probing_level = 110 [default = 2];
* @return The cpModelProbingLevel.
*/
@java.lang.Override
public int getCpModelProbingLevel() {
return cpModelProbingLevel_;
}
public static final int CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER = 93;
private boolean cpModelUseSatPresolve_;
/**
*
* Whether we also use the sat presolve when cp_model_presolve is true.
*
*
* optional bool cp_model_use_sat_presolve = 93 [default = true];
* @return Whether the cpModelUseSatPresolve field is set.
*/
@java.lang.Override
public boolean hasCpModelUseSatPresolve() {
return ((bitField1_ & 0x10000000) != 0);
}
/**
*
* Whether we also use the sat presolve when cp_model_presolve is true.
*
*
* optional bool cp_model_use_sat_presolve = 93 [default = true];
* @return The cpModelUseSatPresolve.
*/
@java.lang.Override
public boolean getCpModelUseSatPresolve() {
return cpModelUseSatPresolve_;
}
public static final int USE_SAT_INPROCESSING_FIELD_NUMBER = 163;
private boolean useSatInprocessing_;
/**
* optional bool use_sat_inprocessing = 163 [default = false];
* @return Whether the useSatInprocessing field is set.
*/
@java.lang.Override
public boolean hasUseSatInprocessing() {
return ((bitField1_ & 0x20000000) != 0);
}
/**
* optional bool use_sat_inprocessing = 163 [default = false];
* @return The useSatInprocessing.
*/
@java.lang.Override
public boolean getUseSatInprocessing() {
return useSatInprocessing_;
}
public static final int EXPAND_ELEMENT_CONSTRAINTS_FIELD_NUMBER = 140;
private boolean expandElementConstraints_;
/**
*
* If true, the element constraints are expanded into many
* linear constraints of the form (index == i) => (element[i] == target).
*
*
* optional bool expand_element_constraints = 140 [default = true];
* @return Whether the expandElementConstraints field is set.
*/
@java.lang.Override
public boolean hasExpandElementConstraints() {
return ((bitField1_ & 0x40000000) != 0);
}
/**
*
* If true, the element constraints are expanded into many
* linear constraints of the form (index == i) => (element[i] == target).
*
*
* optional bool expand_element_constraints = 140 [default = true];
* @return The expandElementConstraints.
*/
@java.lang.Override
public boolean getExpandElementConstraints() {
return expandElementConstraints_;
}
public static final int EXPAND_AUTOMATON_CONSTRAINTS_FIELD_NUMBER = 143;
private boolean expandAutomatonConstraints_;
/**
*
* If true, the automaton constraints are expanded.
*
*
* optional bool expand_automaton_constraints = 143 [default = true];
* @return Whether the expandAutomatonConstraints field is set.
*/
@java.lang.Override
public boolean hasExpandAutomatonConstraints() {
return ((bitField1_ & 0x80000000) != 0);
}
/**
*
* If true, the automaton constraints are expanded.
*
*
* optional bool expand_automaton_constraints = 143 [default = true];
* @return The expandAutomatonConstraints.
*/
@java.lang.Override
public boolean getExpandAutomatonConstraints() {
return expandAutomatonConstraints_;
}
public static final int EXPAND_TABLE_CONSTRAINTS_FIELD_NUMBER = 158;
private boolean expandTableConstraints_;
/**
*
* If true, the positive table constraints are expanded.
* Note that currently, negative table constraints are always expanded.
*
*
* optional bool expand_table_constraints = 158 [default = true];
* @return Whether the expandTableConstraints field is set.
*/
@java.lang.Override
public boolean hasExpandTableConstraints() {
return ((bitField2_ & 0x00000001) != 0);
}
/**
*
* If true, the positive table constraints are expanded.
* Note that currently, negative table constraints are always expanded.
*
*
* optional bool expand_table_constraints = 158 [default = true];
* @return The expandTableConstraints.
*/
@java.lang.Override
public boolean getExpandTableConstraints() {
return expandTableConstraints_;
}
public static final int MERGE_NO_OVERLAP_WORK_LIMIT_FIELD_NUMBER = 145;
private double mergeNoOverlapWorkLimit_;
/**
*
* During presolve, we use a maximum clique heuristic to merge together
* no-overlap constraints or at most one constraints. This code can be slow,
* so we have a limit in place on the number of explored nodes in the
* underlying graph. The internal limit is an int64, but we use double here to
* simplify manual input.
*
*
* optional double merge_no_overlap_work_limit = 145 [default = 1000000000000];
* @return Whether the mergeNoOverlapWorkLimit field is set.
*/
@java.lang.Override
public boolean hasMergeNoOverlapWorkLimit() {
return ((bitField2_ & 0x00000002) != 0);
}
/**
*
* During presolve, we use a maximum clique heuristic to merge together
* no-overlap constraints or at most one constraints. This code can be slow,
* so we have a limit in place on the number of explored nodes in the
* underlying graph. The internal limit is an int64, but we use double here to
* simplify manual input.
*
*
* optional double merge_no_overlap_work_limit = 145 [default = 1000000000000];
* @return The mergeNoOverlapWorkLimit.
*/
@java.lang.Override
public double getMergeNoOverlapWorkLimit() {
return mergeNoOverlapWorkLimit_;
}
public static final int MERGE_AT_MOST_ONE_WORK_LIMIT_FIELD_NUMBER = 146;
private double mergeAtMostOneWorkLimit_;
/**
* optional double merge_at_most_one_work_limit = 146 [default = 100000000];
* @return Whether the mergeAtMostOneWorkLimit field is set.
*/
@java.lang.Override
public boolean hasMergeAtMostOneWorkLimit() {
return ((bitField2_ & 0x00000004) != 0);
}
/**
* optional double merge_at_most_one_work_limit = 146 [default = 100000000];
* @return The mergeAtMostOneWorkLimit.
*/
@java.lang.Override
public double getMergeAtMostOneWorkLimit() {
return mergeAtMostOneWorkLimit_;
}
public static final int PRESOLVE_SUBSTITUTION_LEVEL_FIELD_NUMBER = 147;
private int presolveSubstitutionLevel_;
/**
*
* How much substitution (also called free variable aggregation in MIP
* litterature) should we perform at presolve. This currently only concerns
* variable appearing only in linear constraints. For now the value 0 turns it
* off and any positive value performs substitution.
*
*
* optional int32 presolve_substitution_level = 147 [default = 1];
* @return Whether the presolveSubstitutionLevel field is set.
*/
@java.lang.Override
public boolean hasPresolveSubstitutionLevel() {
return ((bitField2_ & 0x00000008) != 0);
}
/**
*
* How much substitution (also called free variable aggregation in MIP
* litterature) should we perform at presolve. This currently only concerns
* variable appearing only in linear constraints. For now the value 0 turns it
* off and any positive value performs substitution.
*
*
* optional int32 presolve_substitution_level = 147 [default = 1];
* @return The presolveSubstitutionLevel.
*/
@java.lang.Override
public int getPresolveSubstitutionLevel() {
return presolveSubstitutionLevel_;
}
public static final int USE_OPTIMIZATION_HINTS_FIELD_NUMBER = 35;
private boolean useOptimizationHints_;
/**
*
* For an optimization problem, whether we follow some hints in order to find
* a better first solution. For a variable with hint, the solver will always
* try to follow the hint. It will revert to the variable_branching default
* otherwise.
*
*
* optional bool use_optimization_hints = 35 [default = true];
* @return Whether the useOptimizationHints field is set.
*/
@java.lang.Override
public boolean hasUseOptimizationHints() {
return ((bitField2_ & 0x00000010) != 0);
}
/**
*
* For an optimization problem, whether we follow some hints in order to find
* a better first solution. For a variable with hint, the solver will always
* try to follow the hint. It will revert to the variable_branching default
* otherwise.
*
*
* optional bool use_optimization_hints = 35 [default = true];
* @return The useOptimizationHints.
*/
@java.lang.Override
public boolean getUseOptimizationHints() {
return useOptimizationHints_;
}
public static final int MINIMIZE_CORE_FIELD_NUMBER = 50;
private boolean minimizeCore_;
/**
*
* Whether we use a simple heuristic to try to minimize an UNSAT core.
*
*
* optional bool minimize_core = 50 [default = true];
* @return Whether the minimizeCore field is set.
*/
@java.lang.Override
public boolean hasMinimizeCore() {
return ((bitField2_ & 0x00000020) != 0);
}
/**
*
* Whether we use a simple heuristic to try to minimize an UNSAT core.
*
*
* optional bool minimize_core = 50 [default = true];
* @return The minimizeCore.
*/
@java.lang.Override
public boolean getMinimizeCore() {
return minimizeCore_;
}
public static final int FIND_MULTIPLE_CORES_FIELD_NUMBER = 84;
private boolean findMultipleCores_;
/**
*
* Whether we try to find more independent cores for a given set of
* assumptions in the core based max-SAT algorithms.
*
*
* optional bool find_multiple_cores = 84 [default = true];
* @return Whether the findMultipleCores field is set.
*/
@java.lang.Override
public boolean hasFindMultipleCores() {
return ((bitField2_ & 0x00000040) != 0);
}
/**
*
* Whether we try to find more independent cores for a given set of
* assumptions in the core based max-SAT algorithms.
*
*
* optional bool find_multiple_cores = 84 [default = true];
* @return The findMultipleCores.
*/
@java.lang.Override
public boolean getFindMultipleCores() {
return findMultipleCores_;
}
public static final int COVER_OPTIMIZATION_FIELD_NUMBER = 89;
private boolean coverOptimization_;
/**
*
* If true, when the max-sat algo find a core, we compute the minimal number
* of literals in the core that needs to be true to have a feasible solution.
*
*
* optional bool cover_optimization = 89 [default = true];
* @return Whether the coverOptimization field is set.
*/
@java.lang.Override
public boolean hasCoverOptimization() {
return ((bitField2_ & 0x00000080) != 0);
}
/**
*
* If true, when the max-sat algo find a core, we compute the minimal number
* of literals in the core that needs to be true to have a feasible solution.
*
*
* optional bool cover_optimization = 89 [default = true];
* @return The coverOptimization.
*/
@java.lang.Override
public boolean getCoverOptimization() {
return coverOptimization_;
}
public static final int MAX_SAT_ASSUMPTION_ORDER_FIELD_NUMBER = 51;
private int maxSatAssumptionOrder_;
/**
* optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [default = DEFAULT_ASSUMPTION_ORDER];
* @return Whether the maxSatAssumptionOrder field is set.
*/
@java.lang.Override public boolean hasMaxSatAssumptionOrder() {
return ((bitField2_ & 0x00000100) != 0);
}
/**
* optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [default = DEFAULT_ASSUMPTION_ORDER];
* @return The maxSatAssumptionOrder.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder getMaxSatAssumptionOrder() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder result = com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder.valueOf(maxSatAssumptionOrder_);
return result == null ? com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder.DEFAULT_ASSUMPTION_ORDER : result;
}
public static final int MAX_SAT_REVERSE_ASSUMPTION_ORDER_FIELD_NUMBER = 52;
private boolean maxSatReverseAssumptionOrder_;
/**
*
* If true, adds the assumption in the reverse order of the one defined by
* max_sat_assumption_order.
*
*
* optional bool max_sat_reverse_assumption_order = 52 [default = false];
* @return Whether the maxSatReverseAssumptionOrder field is set.
*/
@java.lang.Override
public boolean hasMaxSatReverseAssumptionOrder() {
return ((bitField2_ & 0x00000200) != 0);
}
/**
*
* If true, adds the assumption in the reverse order of the one defined by
* max_sat_assumption_order.
*
*
* optional bool max_sat_reverse_assumption_order = 52 [default = false];
* @return The maxSatReverseAssumptionOrder.
*/
@java.lang.Override
public boolean getMaxSatReverseAssumptionOrder() {
return maxSatReverseAssumptionOrder_;
}
public static final int MAX_SAT_STRATIFICATION_FIELD_NUMBER = 53;
private int maxSatStratification_;
/**
* optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification = 53 [default = STRATIFICATION_DESCENT];
* @return Whether the maxSatStratification field is set.
*/
@java.lang.Override public boolean hasMaxSatStratification() {
return ((bitField2_ & 0x00000400) != 0);
}
/**
* optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification = 53 [default = STRATIFICATION_DESCENT];
* @return The maxSatStratification.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm getMaxSatStratification() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm result = com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm.valueOf(maxSatStratification_);
return result == null ? com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm.STRATIFICATION_DESCENT : result;
}
public static final int USE_PRECEDENCES_IN_DISJUNCTIVE_CONSTRAINT_FIELD_NUMBER = 74;
private boolean usePrecedencesInDisjunctiveConstraint_;
/**
*
* When this is true, then a disjunctive constraint will try to use the
* precedence relations between time intervals to propagate their bounds
* further. For instance if task A and B are both before C and task A and B
* are in disjunction, then we can deduce that task C must start after
* duration(A) + duration(B) instead of simply max(duration(A), duration(B)),
* provided that the start time for all task was currently zero.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_precedences_in_disjunctive_constraint = 74 [default = true];
* @return Whether the usePrecedencesInDisjunctiveConstraint field is set.
*/
@java.lang.Override
public boolean hasUsePrecedencesInDisjunctiveConstraint() {
return ((bitField2_ & 0x00000800) != 0);
}
/**
*
* When this is true, then a disjunctive constraint will try to use the
* precedence relations between time intervals to propagate their bounds
* further. For instance if task A and B are both before C and task A and B
* are in disjunction, then we can deduce that task C must start after
* duration(A) + duration(B) instead of simply max(duration(A), duration(B)),
* provided that the start time for all task was currently zero.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_precedences_in_disjunctive_constraint = 74 [default = true];
* @return The usePrecedencesInDisjunctiveConstraint.
*/
@java.lang.Override
public boolean getUsePrecedencesInDisjunctiveConstraint() {
return usePrecedencesInDisjunctiveConstraint_;
}
public static final int USE_OVERLOAD_CHECKER_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER = 78;
private boolean useOverloadCheckerInCumulativeConstraint_;
/**
*
* When this is true, the cumulative constraint is reinforced with overload
* checking, i.e., an additional level of reasoning based on energy. This
* additional level supplements the default level of reasoning as well as
* timetable edge finding.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_overload_checker_in_cumulative_constraint = 78 [default = false];
* @return Whether the useOverloadCheckerInCumulativeConstraint field is set.
*/
@java.lang.Override
public boolean hasUseOverloadCheckerInCumulativeConstraint() {
return ((bitField2_ & 0x00001000) != 0);
}
/**
*
* When this is true, the cumulative constraint is reinforced with overload
* checking, i.e., an additional level of reasoning based on energy. This
* additional level supplements the default level of reasoning as well as
* timetable edge finding.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_overload_checker_in_cumulative_constraint = 78 [default = false];
* @return The useOverloadCheckerInCumulativeConstraint.
*/
@java.lang.Override
public boolean getUseOverloadCheckerInCumulativeConstraint() {
return useOverloadCheckerInCumulativeConstraint_;
}
public static final int USE_TIMETABLE_EDGE_FINDING_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER = 79;
private boolean useTimetableEdgeFindingInCumulativeConstraint_;
/**
*
* When this is true, the cumulative constraint is reinforced with timetable
* edge finding, i.e., an additional level of reasoning based on the
* conjunction of energy and mandatory parts. This additional level
* supplements the default level of reasoning as well as overload_checker.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_timetable_edge_finding_in_cumulative_constraint = 79 [default = false];
* @return Whether the useTimetableEdgeFindingInCumulativeConstraint field is set.
*/
@java.lang.Override
public boolean hasUseTimetableEdgeFindingInCumulativeConstraint() {
return ((bitField2_ & 0x00002000) != 0);
}
/**
*
* When this is true, the cumulative constraint is reinforced with timetable
* edge finding, i.e., an additional level of reasoning based on the
* conjunction of energy and mandatory parts. This additional level
* supplements the default level of reasoning as well as overload_checker.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_timetable_edge_finding_in_cumulative_constraint = 79 [default = false];
* @return The useTimetableEdgeFindingInCumulativeConstraint.
*/
@java.lang.Override
public boolean getUseTimetableEdgeFindingInCumulativeConstraint() {
return useTimetableEdgeFindingInCumulativeConstraint_;
}
public static final int USE_DISJUNCTIVE_CONSTRAINT_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER = 80;
private boolean useDisjunctiveConstraintInCumulativeConstraint_;
/**
*
* When this is true, the cumulative constraint is reinforced with propagators
* from the disjunctive constraint to improve the inference on a set of tasks
* that are disjunctive at the root of the problem. This additional level
* supplements the default level of reasoning.
* Propagators of the cumulative constraint will not be used at all if all the
* tasks are disjunctive at root node.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_disjunctive_constraint_in_cumulative_constraint = 80 [default = true];
* @return Whether the useDisjunctiveConstraintInCumulativeConstraint field is set.
*/
@java.lang.Override
public boolean hasUseDisjunctiveConstraintInCumulativeConstraint() {
return ((bitField2_ & 0x00004000) != 0);
}
/**
*
* When this is true, the cumulative constraint is reinforced with propagators
* from the disjunctive constraint to improve the inference on a set of tasks
* that are disjunctive at the root of the problem. This additional level
* supplements the default level of reasoning.
* Propagators of the cumulative constraint will not be used at all if all the
* tasks are disjunctive at root node.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_disjunctive_constraint_in_cumulative_constraint = 80 [default = true];
* @return The useDisjunctiveConstraintInCumulativeConstraint.
*/
@java.lang.Override
public boolean getUseDisjunctiveConstraintInCumulativeConstraint() {
return useDisjunctiveConstraintInCumulativeConstraint_;
}
public static final int LINEARIZATION_LEVEL_FIELD_NUMBER = 90;
private int linearizationLevel_;
/**
*
* A non-negative level indicating the type of constraints we consider in the
* LP relaxation. At level zero, no LP relaxation is used. At level 1, only
* the linear constraint and full encoding are added. At level 2, we also add
* all the Boolean constraints.
*
*
* optional int32 linearization_level = 90 [default = 1];
* @return Whether the linearizationLevel field is set.
*/
@java.lang.Override
public boolean hasLinearizationLevel() {
return ((bitField2_ & 0x00008000) != 0);
}
/**
*
* A non-negative level indicating the type of constraints we consider in the
* LP relaxation. At level zero, no LP relaxation is used. At level 1, only
* the linear constraint and full encoding are added. At level 2, we also add
* all the Boolean constraints.
*
*
* optional int32 linearization_level = 90 [default = 1];
* @return The linearizationLevel.
*/
@java.lang.Override
public int getLinearizationLevel() {
return linearizationLevel_;
}
public static final int BOOLEAN_ENCODING_LEVEL_FIELD_NUMBER = 107;
private int booleanEncodingLevel_;
/**
*
* A non-negative level indicating how much we should try to fully encode
* Integer variables as Boolean.
*
*
* optional int32 boolean_encoding_level = 107 [default = 1];
* @return Whether the booleanEncodingLevel field is set.
*/
@java.lang.Override
public boolean hasBooleanEncodingLevel() {
return ((bitField2_ & 0x00010000) != 0);
}
/**
*
* A non-negative level indicating how much we should try to fully encode
* Integer variables as Boolean.
*
*
* optional int32 boolean_encoding_level = 107 [default = 1];
* @return The booleanEncodingLevel.
*/
@java.lang.Override
public int getBooleanEncodingLevel() {
return booleanEncodingLevel_;
}
public static final int MAX_NUM_CUTS_FIELD_NUMBER = 91;
private int maxNumCuts_;
/**
*
* The limit on the number of cuts in our cut pool. When this is reached we do
* not generate cuts anymore.
* TODO(user): We should probably remove this parameters, and just always
* generate cuts but only keep the best n or something.
*
*
* optional int32 max_num_cuts = 91 [default = 10000];
* @return Whether the maxNumCuts field is set.
*/
@java.lang.Override
public boolean hasMaxNumCuts() {
return ((bitField2_ & 0x00020000) != 0);
}
/**
*
* The limit on the number of cuts in our cut pool. When this is reached we do
* not generate cuts anymore.
* TODO(user): We should probably remove this parameters, and just always
* generate cuts but only keep the best n or something.
*
*
* optional int32 max_num_cuts = 91 [default = 10000];
* @return The maxNumCuts.
*/
@java.lang.Override
public int getMaxNumCuts() {
return maxNumCuts_;
}
public static final int ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER = 92;
private boolean onlyAddCutsAtLevelZero_;
/**
*
* For the cut that can be generated at any level, this control if we only
* try to generate them at the root node.
*
*
* optional bool only_add_cuts_at_level_zero = 92 [default = false];
* @return Whether the onlyAddCutsAtLevelZero field is set.
*/
@java.lang.Override
public boolean hasOnlyAddCutsAtLevelZero() {
return ((bitField2_ & 0x00040000) != 0);
}
/**
*
* For the cut that can be generated at any level, this control if we only
* try to generate them at the root node.
*
*
* optional bool only_add_cuts_at_level_zero = 92 [default = false];
* @return The onlyAddCutsAtLevelZero.
*/
@java.lang.Override
public boolean getOnlyAddCutsAtLevelZero() {
return onlyAddCutsAtLevelZero_;
}
public static final int ADD_KNAPSACK_CUTS_FIELD_NUMBER = 111;
private boolean addKnapsackCuts_;
/**
*
* Whether we generate knapsack cuts. Note that in our setting where all
* variables are integer and bounded on both side, such a cut could be applied
* to any constraint.
*
*
* optional bool add_knapsack_cuts = 111 [default = false];
* @return Whether the addKnapsackCuts field is set.
*/
@java.lang.Override
public boolean hasAddKnapsackCuts() {
return ((bitField2_ & 0x00080000) != 0);
}
/**
*
* Whether we generate knapsack cuts. Note that in our setting where all
* variables are integer and bounded on both side, such a cut could be applied
* to any constraint.
*
*
* optional bool add_knapsack_cuts = 111 [default = false];
* @return The addKnapsackCuts.
*/
@java.lang.Override
public boolean getAddKnapsackCuts() {
return addKnapsackCuts_;
}
public static final int ADD_CG_CUTS_FIELD_NUMBER = 117;
private boolean addCgCuts_;
/**
*
* Whether we generate and add Chvatal-Gomory cuts to the LP at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_cg_cuts = 117 [default = true];
* @return Whether the addCgCuts field is set.
*/
@java.lang.Override
public boolean hasAddCgCuts() {
return ((bitField2_ & 0x00100000) != 0);
}
/**
*
* Whether we generate and add Chvatal-Gomory cuts to the LP at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_cg_cuts = 117 [default = true];
* @return The addCgCuts.
*/
@java.lang.Override
public boolean getAddCgCuts() {
return addCgCuts_;
}
public static final int ADD_MIR_CUTS_FIELD_NUMBER = 120;
private boolean addMirCuts_;
/**
*
* Whether we generate MIR cuts at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_mir_cuts = 120 [default = true];
* @return Whether the addMirCuts field is set.
*/
@java.lang.Override
public boolean hasAddMirCuts() {
return ((bitField2_ & 0x00200000) != 0);
}
/**
*
* Whether we generate MIR cuts at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_mir_cuts = 120 [default = true];
* @return The addMirCuts.
*/
@java.lang.Override
public boolean getAddMirCuts() {
return addMirCuts_;
}
public static final int MAX_ALL_DIFF_CUT_SIZE_FIELD_NUMBER = 148;
private int maxAllDiffCutSize_;
/**
*
* Cut generator for all diffs can add too many cuts for large all_diff
* constraints. This parameter restricts the large all_diff constraints to
* have a cut generator.
*
*
* optional int32 max_all_diff_cut_size = 148 [default = 7];
* @return Whether the maxAllDiffCutSize field is set.
*/
@java.lang.Override
public boolean hasMaxAllDiffCutSize() {
return ((bitField2_ & 0x00400000) != 0);
}
/**
*
* Cut generator for all diffs can add too many cuts for large all_diff
* constraints. This parameter restricts the large all_diff constraints to
* have a cut generator.
*
*
* optional int32 max_all_diff_cut_size = 148 [default = 7];
* @return The maxAllDiffCutSize.
*/
@java.lang.Override
public int getMaxAllDiffCutSize() {
return maxAllDiffCutSize_;
}
public static final int ADD_LIN_MAX_CUTS_FIELD_NUMBER = 152;
private boolean addLinMaxCuts_;
/**
*
* For the lin max constraints, generates the cuts described in "Strong
* mixed-integer programming formulations for trained neural networks" by Ross
* Anderson et. (https://arxiv.org/pdf/1811.01988.pdf)
*
*
* optional bool add_lin_max_cuts = 152 [default = true];
* @return Whether the addLinMaxCuts field is set.
*/
@java.lang.Override
public boolean hasAddLinMaxCuts() {
return ((bitField2_ & 0x00800000) != 0);
}
/**
*
* For the lin max constraints, generates the cuts described in "Strong
* mixed-integer programming formulations for trained neural networks" by Ross
* Anderson et. (https://arxiv.org/pdf/1811.01988.pdf)
*
*
* optional bool add_lin_max_cuts = 152 [default = true];
* @return The addLinMaxCuts.
*/
@java.lang.Override
public boolean getAddLinMaxCuts() {
return addLinMaxCuts_;
}
public static final int MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER = 119;
private int maxIntegerRoundingScaling_;
/**
*
* In the integer rounding procedure used for MIR and Gomory cut, the maximum
* "scaling" we use (must be positive). The lower this is, the lower the
* integer coefficients of the cut will be. Note that cut generated by lower
* values are not necessarily worse than cut generated by larger value. There
* is no strict dominance relationship.
* Setting this to 2 result in the "strong fractional rouding" of Letchford
* and Lodi.
*
*
* optional int32 max_integer_rounding_scaling = 119 [default = 600];
* @return Whether the maxIntegerRoundingScaling field is set.
*/
@java.lang.Override
public boolean hasMaxIntegerRoundingScaling() {
return ((bitField2_ & 0x01000000) != 0);
}
/**
*
* In the integer rounding procedure used for MIR and Gomory cut, the maximum
* "scaling" we use (must be positive). The lower this is, the lower the
* integer coefficients of the cut will be. Note that cut generated by lower
* values are not necessarily worse than cut generated by larger value. There
* is no strict dominance relationship.
* Setting this to 2 result in the "strong fractional rouding" of Letchford
* and Lodi.
*
*
* optional int32 max_integer_rounding_scaling = 119 [default = 600];
* @return The maxIntegerRoundingScaling.
*/
@java.lang.Override
public int getMaxIntegerRoundingScaling() {
return maxIntegerRoundingScaling_;
}
public static final int ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER = 112;
private boolean addLpConstraintsLazily_;
/**
*
* If true, we start by an empty LP, and only add constraints not satisfied
* by the current LP solution batch by batch. A constraint that is only added
* like this is known as a "lazy" constraint in the literature, except that we
* currently consider all constraints as lazy here.
*
*
* optional bool add_lp_constraints_lazily = 112 [default = true];
* @return Whether the addLpConstraintsLazily field is set.
*/
@java.lang.Override
public boolean hasAddLpConstraintsLazily() {
return ((bitField2_ & 0x02000000) != 0);
}
/**
*
* If true, we start by an empty LP, and only add constraints not satisfied
* by the current LP solution batch by batch. A constraint that is only added
* like this is known as a "lazy" constraint in the literature, except that we
* currently consider all constraints as lazy here.
*
*
* optional bool add_lp_constraints_lazily = 112 [default = true];
* @return The addLpConstraintsLazily.
*/
@java.lang.Override
public boolean getAddLpConstraintsLazily() {
return addLpConstraintsLazily_;
}
public static final int MIN_ORTHOGONALITY_FOR_LP_CONSTRAINTS_FIELD_NUMBER = 115;
private double minOrthogonalityForLpConstraints_;
/**
*
* While adding constraints, skip the constraints which have orthogonality
* less than 'min_orthogonality_for_lp_constraints' with already added
* constraints during current call. Orthogonality is defined as 1 -
* cosine(vector angle between constraints). A value of zero disable this
* feature.
*
*
* optional double min_orthogonality_for_lp_constraints = 115 [default = 0.05];
* @return Whether the minOrthogonalityForLpConstraints field is set.
*/
@java.lang.Override
public boolean hasMinOrthogonalityForLpConstraints() {
return ((bitField2_ & 0x04000000) != 0);
}
/**
*
* While adding constraints, skip the constraints which have orthogonality
* less than 'min_orthogonality_for_lp_constraints' with already added
* constraints during current call. Orthogonality is defined as 1 -
* cosine(vector angle between constraints). A value of zero disable this
* feature.
*
*
* optional double min_orthogonality_for_lp_constraints = 115 [default = 0.05];
* @return The minOrthogonalityForLpConstraints.
*/
@java.lang.Override
public double getMinOrthogonalityForLpConstraints() {
return minOrthogonalityForLpConstraints_;
}
public static final int MAX_CUT_ROUNDS_AT_LEVEL_ZERO_FIELD_NUMBER = 154;
private int maxCutRoundsAtLevelZero_;
/**
*
* Max number of time we perform cut generation and resolve the LP at level 0.
*
*
* optional int32 max_cut_rounds_at_level_zero = 154 [default = 1];
* @return Whether the maxCutRoundsAtLevelZero field is set.
*/
@java.lang.Override
public boolean hasMaxCutRoundsAtLevelZero() {
return ((bitField2_ & 0x08000000) != 0);
}
/**
*
* Max number of time we perform cut generation and resolve the LP at level 0.
*
*
* optional int32 max_cut_rounds_at_level_zero = 154 [default = 1];
* @return The maxCutRoundsAtLevelZero.
*/
@java.lang.Override
public int getMaxCutRoundsAtLevelZero() {
return maxCutRoundsAtLevelZero_;
}
public static final int MAX_CONSECUTIVE_INACTIVE_COUNT_FIELD_NUMBER = 121;
private int maxConsecutiveInactiveCount_;
/**
*
* If a constraint/cut in LP is not active for that many consecutive OPTIMAL
* solves, remove it from the LP. Note that it might be added again later if
* it become violated by the current LP solution.
*
*
* optional int32 max_consecutive_inactive_count = 121 [default = 100];
* @return Whether the maxConsecutiveInactiveCount field is set.
*/
@java.lang.Override
public boolean hasMaxConsecutiveInactiveCount() {
return ((bitField2_ & 0x10000000) != 0);
}
/**
*
* If a constraint/cut in LP is not active for that many consecutive OPTIMAL
* solves, remove it from the LP. Note that it might be added again later if
* it become violated by the current LP solution.
*
*
* optional int32 max_consecutive_inactive_count = 121 [default = 100];
* @return The maxConsecutiveInactiveCount.
*/
@java.lang.Override
public int getMaxConsecutiveInactiveCount() {
return maxConsecutiveInactiveCount_;
}
public static final int CUT_MAX_ACTIVE_COUNT_VALUE_FIELD_NUMBER = 155;
private double cutMaxActiveCountValue_;
/**
*
* These parameters are similar to sat clause management activity parameters.
* They are effective only if the number of generated cuts exceed the storage
* limit. Default values are based on a few experiments on miplib instances.
*
*
* optional double cut_max_active_count_value = 155 [default = 10000000000];
* @return Whether the cutMaxActiveCountValue field is set.
*/
@java.lang.Override
public boolean hasCutMaxActiveCountValue() {
return ((bitField2_ & 0x20000000) != 0);
}
/**
*
* These parameters are similar to sat clause management activity parameters.
* They are effective only if the number of generated cuts exceed the storage
* limit. Default values are based on a few experiments on miplib instances.
*
*
* optional double cut_max_active_count_value = 155 [default = 10000000000];
* @return The cutMaxActiveCountValue.
*/
@java.lang.Override
public double getCutMaxActiveCountValue() {
return cutMaxActiveCountValue_;
}
public static final int CUT_ACTIVE_COUNT_DECAY_FIELD_NUMBER = 156;
private double cutActiveCountDecay_;
/**
* optional double cut_active_count_decay = 156 [default = 0.8];
* @return Whether the cutActiveCountDecay field is set.
*/
@java.lang.Override
public boolean hasCutActiveCountDecay() {
return ((bitField2_ & 0x40000000) != 0);
}
/**
* optional double cut_active_count_decay = 156 [default = 0.8];
* @return The cutActiveCountDecay.
*/
@java.lang.Override
public double getCutActiveCountDecay() {
return cutActiveCountDecay_;
}
public static final int CUT_CLEANUP_TARGET_FIELD_NUMBER = 157;
private int cutCleanupTarget_;
/**
*
* Target number of constraints to remove during cleanup.
*
*
* optional int32 cut_cleanup_target = 157 [default = 1000];
* @return Whether the cutCleanupTarget field is set.
*/
@java.lang.Override
public boolean hasCutCleanupTarget() {
return ((bitField2_ & 0x80000000) != 0);
}
/**
*
* Target number of constraints to remove during cleanup.
*
*
* optional int32 cut_cleanup_target = 157 [default = 1000];
* @return The cutCleanupTarget.
*/
@java.lang.Override
public int getCutCleanupTarget() {
return cutCleanupTarget_;
}
public static final int NEW_CONSTRAINTS_BATCH_SIZE_FIELD_NUMBER = 122;
private int newConstraintsBatchSize_;
/**
*
* Add that many lazy contraints (or cuts) at once in the LP. Note that at the
* beginning of the solve, we do add more than this.
*
*
* optional int32 new_constraints_batch_size = 122 [default = 50];
* @return Whether the newConstraintsBatchSize field is set.
*/
@java.lang.Override
public boolean hasNewConstraintsBatchSize() {
return ((bitField3_ & 0x00000001) != 0);
}
/**
*
* Add that many lazy contraints (or cuts) at once in the LP. Note that at the
* beginning of the solve, we do add more than this.
*
*
* optional int32 new_constraints_batch_size = 122 [default = 50];
* @return The newConstraintsBatchSize.
*/
@java.lang.Override
public int getNewConstraintsBatchSize() {
return newConstraintsBatchSize_;
}
public static final int SEARCH_BRANCHING_FIELD_NUMBER = 82;
private int searchBranching_;
/**
* optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTOMATIC_SEARCH];
* @return Whether the searchBranching field is set.
*/
@java.lang.Override public boolean hasSearchBranching() {
return ((bitField3_ & 0x00000002) != 0);
}
/**
* optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTOMATIC_SEARCH];
* @return The searchBranching.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.SearchBranching getSearchBranching() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.SearchBranching result = com.google.ortools.sat.SatParameters.SearchBranching.valueOf(searchBranching_);
return result == null ? com.google.ortools.sat.SatParameters.SearchBranching.AUTOMATIC_SEARCH : result;
}
public static final int HINT_CONFLICT_LIMIT_FIELD_NUMBER = 153;
private int hintConflictLimit_;
/**
*
* When we try to follow the hint, we do a FIXED_SEARCH using the hint until
* this number of conflict is reached.
*
*
* optional int32 hint_conflict_limit = 153 [default = 10];
* @return Whether the hintConflictLimit field is set.
*/
@java.lang.Override
public boolean hasHintConflictLimit() {
return ((bitField3_ & 0x00000004) != 0);
}
/**
*
* When we try to follow the hint, we do a FIXED_SEARCH using the hint until
* this number of conflict is reached.
*
*
* optional int32 hint_conflict_limit = 153 [default = 10];
* @return The hintConflictLimit.
*/
@java.lang.Override
public int getHintConflictLimit() {
return hintConflictLimit_;
}
public static final int EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER = 94;
private boolean exploitIntegerLpSolution_;
/**
*
* If true and the Lp relaxation of the problem has an integer optimal
* solution, try to exploit it. Note that since the LP relaxation may not
* contain all the constraints, such a solution is not necessarily a solution
* of the full problem.
*
*
* optional bool exploit_integer_lp_solution = 94 [default = true];
* @return Whether the exploitIntegerLpSolution field is set.
*/
@java.lang.Override
public boolean hasExploitIntegerLpSolution() {
return ((bitField3_ & 0x00000008) != 0);
}
/**
*
* If true and the Lp relaxation of the problem has an integer optimal
* solution, try to exploit it. Note that since the LP relaxation may not
* contain all the constraints, such a solution is not necessarily a solution
* of the full problem.
*
*
* optional bool exploit_integer_lp_solution = 94 [default = true];
* @return The exploitIntegerLpSolution.
*/
@java.lang.Override
public boolean getExploitIntegerLpSolution() {
return exploitIntegerLpSolution_;
}
public static final int EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER = 116;
private boolean exploitAllLpSolution_;
/**
*
* If true and the Lp relaxation of the problem has a solution, try to exploit
* it. This is same as above except in this case the lp solution might not be
* an integer solution.
*
*
* optional bool exploit_all_lp_solution = 116 [default = true];
* @return Whether the exploitAllLpSolution field is set.
*/
@java.lang.Override
public boolean hasExploitAllLpSolution() {
return ((bitField3_ & 0x00000010) != 0);
}
/**
*
* If true and the Lp relaxation of the problem has a solution, try to exploit
* it. This is same as above except in this case the lp solution might not be
* an integer solution.
*
*
* optional bool exploit_all_lp_solution = 116 [default = true];
* @return The exploitAllLpSolution.
*/
@java.lang.Override
public boolean getExploitAllLpSolution() {
return exploitAllLpSolution_;
}
public static final int EXPLOIT_BEST_SOLUTION_FIELD_NUMBER = 130;
private boolean exploitBestSolution_;
/**
*
* When branching on a variable, follow the last best solution value.
*
*
* optional bool exploit_best_solution = 130 [default = false];
* @return Whether the exploitBestSolution field is set.
*/
@java.lang.Override
public boolean hasExploitBestSolution() {
return ((bitField3_ & 0x00000020) != 0);
}
/**
*
* When branching on a variable, follow the last best solution value.
*
*
* optional bool exploit_best_solution = 130 [default = false];
* @return The exploitBestSolution.
*/
@java.lang.Override
public boolean getExploitBestSolution() {
return exploitBestSolution_;
}
public static final int EXPLOIT_RELAXATION_SOLUTION_FIELD_NUMBER = 161;
private boolean exploitRelaxationSolution_;
/**
*
* When branching on a variable, follow the last best relaxation solution
* value. We use the relaxation with the tightest bound on the objective as
* the best relaxation solution.
*
*
* optional bool exploit_relaxation_solution = 161 [default = false];
* @return Whether the exploitRelaxationSolution field is set.
*/
@java.lang.Override
public boolean hasExploitRelaxationSolution() {
return ((bitField3_ & 0x00000040) != 0);
}
/**
*
* When branching on a variable, follow the last best relaxation solution
* value. We use the relaxation with the tightest bound on the objective as
* the best relaxation solution.
*
*
* optional bool exploit_relaxation_solution = 161 [default = false];
* @return The exploitRelaxationSolution.
*/
@java.lang.Override
public boolean getExploitRelaxationSolution() {
return exploitRelaxationSolution_;
}
public static final int EXPLOIT_OBJECTIVE_FIELD_NUMBER = 131;
private boolean exploitObjective_;
/**
*
* When branching an a variable that directly affect the objective,
* branch on the value that lead to the best objective first.
*
*
* optional bool exploit_objective = 131 [default = true];
* @return Whether the exploitObjective field is set.
*/
@java.lang.Override
public boolean hasExploitObjective() {
return ((bitField3_ & 0x00000080) != 0);
}
/**
*
* When branching an a variable that directly affect the objective,
* branch on the value that lead to the best objective first.
*
*
* optional bool exploit_objective = 131 [default = true];
* @return The exploitObjective.
*/
@java.lang.Override
public boolean getExploitObjective() {
return exploitObjective_;
}
public static final int PROBING_PERIOD_AT_ROOT_FIELD_NUMBER = 142;
private long probingPeriodAtRoot_;
/**
*
* If set at zero (the default), it is disabled. Otherwise the solver attempts
* probing at every 'probing_period' root node. Period of 1 enables probing at
* every root node.
*
*
* optional int64 probing_period_at_root = 142 [default = 0];
* @return Whether the probingPeriodAtRoot field is set.
*/
@java.lang.Override
public boolean hasProbingPeriodAtRoot() {
return ((bitField3_ & 0x00000100) != 0);
}
/**
*
* If set at zero (the default), it is disabled. Otherwise the solver attempts
* probing at every 'probing_period' root node. Period of 1 enables probing at
* every root node.
*
*
* optional int64 probing_period_at_root = 142 [default = 0];
* @return The probingPeriodAtRoot.
*/
@java.lang.Override
public long getProbingPeriodAtRoot() {
return probingPeriodAtRoot_;
}
public static final int PSEUDO_COST_RELIABILITY_THRESHOLD_FIELD_NUMBER = 123;
private long pseudoCostReliabilityThreshold_;
/**
*
* The solver ignores the pseudo costs of variables with number of recordings
* less than this threshold.
*
*
* optional int64 pseudo_cost_reliability_threshold = 123 [default = 100];
* @return Whether the pseudoCostReliabilityThreshold field is set.
*/
@java.lang.Override
public boolean hasPseudoCostReliabilityThreshold() {
return ((bitField3_ & 0x00000200) != 0);
}
/**
*
* The solver ignores the pseudo costs of variables with number of recordings
* less than this threshold.
*
*
* optional int64 pseudo_cost_reliability_threshold = 123 [default = 100];
* @return The pseudoCostReliabilityThreshold.
*/
@java.lang.Override
public long getPseudoCostReliabilityThreshold() {
return pseudoCostReliabilityThreshold_;
}
public static final int OPTIMIZE_WITH_CORE_FIELD_NUMBER = 83;
private boolean optimizeWithCore_;
/**
*
* The default optimization method is a simple "linear scan", each time trying
* to find a better solution than the previous one. If this is true, then we
* use a core-based approach (like in max-SAT) when we try to increase the
* lower bound instead.
*
*
* optional bool optimize_with_core = 83 [default = false];
* @return Whether the optimizeWithCore field is set.
*/
@java.lang.Override
public boolean hasOptimizeWithCore() {
return ((bitField3_ & 0x00000400) != 0);
}
/**
*
* The default optimization method is a simple "linear scan", each time trying
* to find a better solution than the previous one. If this is true, then we
* use a core-based approach (like in max-SAT) when we try to increase the
* lower bound instead.
*
*
* optional bool optimize_with_core = 83 [default = false];
* @return The optimizeWithCore.
*/
@java.lang.Override
public boolean getOptimizeWithCore() {
return optimizeWithCore_;
}
public static final int BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER = 99;
private int binarySearchNumConflicts_;
/**
*
* If non-negative, perform a binary search on the objective variable in order
* to find an [min, max] interval outside of which the solver proved unsat/sat
* under this amount of conflict. This can quickly reduce the objective domain
* on some problems.
*
*
* optional int32 binary_search_num_conflicts = 99 [default = -1];
* @return Whether the binarySearchNumConflicts field is set.
*/
@java.lang.Override
public boolean hasBinarySearchNumConflicts() {
return ((bitField3_ & 0x00000800) != 0);
}
/**
*
* If non-negative, perform a binary search on the objective variable in order
* to find an [min, max] interval outside of which the solver proved unsat/sat
* under this amount of conflict. This can quickly reduce the objective domain
* on some problems.
*
*
* optional int32 binary_search_num_conflicts = 99 [default = -1];
* @return The binarySearchNumConflicts.
*/
@java.lang.Override
public int getBinarySearchNumConflicts() {
return binarySearchNumConflicts_;
}
public static final int OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER = 85;
private boolean optimizeWithMaxHs_;
/**
*
* This has no effect if optimize_with_core is false. If true, use a different
* core-based algorithm similar to the max-HS algo for max-SAT. This is a
* hybrid MIP/CP approach and it uses a MIP solver in addition to the CP/SAT
* one. This is also related to the PhD work of tobyodavies@
* "Automatic Logic-Based Benders Decomposition with MiniZinc"
* http://aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14489
*
*
* optional bool optimize_with_max_hs = 85 [default = false];
* @return Whether the optimizeWithMaxHs field is set.
*/
@java.lang.Override
public boolean hasOptimizeWithMaxHs() {
return ((bitField3_ & 0x00001000) != 0);
}
/**
*
* This has no effect if optimize_with_core is false. If true, use a different
* core-based algorithm similar to the max-HS algo for max-SAT. This is a
* hybrid MIP/CP approach and it uses a MIP solver in addition to the CP/SAT
* one. This is also related to the PhD work of tobyodavies@
* "Automatic Logic-Based Benders Decomposition with MiniZinc"
* http://aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14489
*
*
* optional bool optimize_with_max_hs = 85 [default = false];
* @return The optimizeWithMaxHs.
*/
@java.lang.Override
public boolean getOptimizeWithMaxHs() {
return optimizeWithMaxHs_;
}
public static final int ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER = 87;
private boolean enumerateAllSolutions_;
/**
*
* Whether we enumerate all solutions of a problem without objective. Note
* that setting this to true automatically disable the presolve. This is
* because the presolve rules only guarantee the existence of one feasible
* solution to the presolved problem.
* TODO(user): Activate the presolve but with just the rules that do not
* change the set of feasible solutions.
*
*
* optional bool enumerate_all_solutions = 87 [default = false];
* @return Whether the enumerateAllSolutions field is set.
*/
@java.lang.Override
public boolean hasEnumerateAllSolutions() {
return ((bitField3_ & 0x00002000) != 0);
}
/**
*
* Whether we enumerate all solutions of a problem without objective. Note
* that setting this to true automatically disable the presolve. This is
* because the presolve rules only guarantee the existence of one feasible
* solution to the presolved problem.
* TODO(user): Activate the presolve but with just the rules that do not
* change the set of feasible solutions.
*
*
* optional bool enumerate_all_solutions = 87 [default = false];
* @return The enumerateAllSolutions.
*/
@java.lang.Override
public boolean getEnumerateAllSolutions() {
return enumerateAllSolutions_;
}
public static final int FILL_TIGHTENED_DOMAINS_IN_RESPONSE_FIELD_NUMBER = 132;
private boolean fillTightenedDomainsInResponse_;
/**
*
* If true, add information about the derived variable domains to the
* CpSolverResponse. It is an option because it makes the response slighly
* bigger and there is a bit more work involved during the postsolve to
* construct it, but it should still have a low overhead. See the
* tightened_variables field in CpSolverResponse for more details.
*
*
* optional bool fill_tightened_domains_in_response = 132 [default = false];
* @return Whether the fillTightenedDomainsInResponse field is set.
*/
@java.lang.Override
public boolean hasFillTightenedDomainsInResponse() {
return ((bitField3_ & 0x00004000) != 0);
}
/**
*
* If true, add information about the derived variable domains to the
* CpSolverResponse. It is an option because it makes the response slighly
* bigger and there is a bit more work involved during the postsolve to
* construct it, but it should still have a low overhead. See the
* tightened_variables field in CpSolverResponse for more details.
*
*
* optional bool fill_tightened_domains_in_response = 132 [default = false];
* @return The fillTightenedDomainsInResponse.
*/
@java.lang.Override
public boolean getFillTightenedDomainsInResponse() {
return fillTightenedDomainsInResponse_;
}
public static final int INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER = 106;
private boolean instantiateAllVariables_;
/**
*
* If true, the solver will add a default integer branching strategy to the
* already defined search strategy.
*
*
* optional bool instantiate_all_variables = 106 [default = true];
* @return Whether the instantiateAllVariables field is set.
*/
@java.lang.Override
public boolean hasInstantiateAllVariables() {
return ((bitField3_ & 0x00008000) != 0);
}
/**
*
* If true, the solver will add a default integer branching strategy to the
* already defined search strategy.
*
*
* optional bool instantiate_all_variables = 106 [default = true];
* @return The instantiateAllVariables.
*/
@java.lang.Override
public boolean getInstantiateAllVariables() {
return instantiateAllVariables_;
}
public static final int AUTO_DETECT_GREATER_THAN_AT_LEAST_ONE_OF_FIELD_NUMBER = 95;
private boolean autoDetectGreaterThanAtLeastOneOf_;
/**
*
* If true, then the precedences propagator try to detect for each variable if
* it has a set of "optional incoming arc" for which at least one of them is
* present. This is usually useful to have but can be slow on model with a lot
* of precedence.
*
*
* optional bool auto_detect_greater_than_at_least_one_of = 95 [default = true];
* @return Whether the autoDetectGreaterThanAtLeastOneOf field is set.
*/
@java.lang.Override
public boolean hasAutoDetectGreaterThanAtLeastOneOf() {
return ((bitField3_ & 0x00010000) != 0);
}
/**
*
* If true, then the precedences propagator try to detect for each variable if
* it has a set of "optional incoming arc" for which at least one of them is
* present. This is usually useful to have but can be slow on model with a lot
* of precedence.
*
*
* optional bool auto_detect_greater_than_at_least_one_of = 95 [default = true];
* @return The autoDetectGreaterThanAtLeastOneOf.
*/
@java.lang.Override
public boolean getAutoDetectGreaterThanAtLeastOneOf() {
return autoDetectGreaterThanAtLeastOneOf_;
}
public static final int STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER = 98;
private boolean stopAfterFirstSolution_;
/**
*
* For an optimization problem, stop the solver as soon as we have a solution.
*
*
* optional bool stop_after_first_solution = 98 [default = false];
* @return Whether the stopAfterFirstSolution field is set.
*/
@java.lang.Override
public boolean hasStopAfterFirstSolution() {
return ((bitField3_ & 0x00020000) != 0);
}
/**
*
* For an optimization problem, stop the solver as soon as we have a solution.
*
*
* optional bool stop_after_first_solution = 98 [default = false];
* @return The stopAfterFirstSolution.
*/
@java.lang.Override
public boolean getStopAfterFirstSolution() {
return stopAfterFirstSolution_;
}
public static final int STOP_AFTER_PRESOLVE_FIELD_NUMBER = 149;
private boolean stopAfterPresolve_;
/**
*
* Mainly used when improving the presolver. When true, stops the solver after
* the presolve is complete.
*
*
* optional bool stop_after_presolve = 149 [default = false];
* @return Whether the stopAfterPresolve field is set.
*/
@java.lang.Override
public boolean hasStopAfterPresolve() {
return ((bitField3_ & 0x00040000) != 0);
}
/**
*
* Mainly used when improving the presolver. When true, stops the solver after
* the presolve is complete.
*
*
* optional bool stop_after_presolve = 149 [default = false];
* @return The stopAfterPresolve.
*/
@java.lang.Override
public boolean getStopAfterPresolve() {
return stopAfterPresolve_;
}
public static final int NUM_SEARCH_WORKERS_FIELD_NUMBER = 100;
private int numSearchWorkers_;
/**
*
* Specify the number of parallel workers to use during search.
* A number <= 1 means no parallelism.
* As of 2020-04-10, if you're using SAT via MPSolver (to solve integer
* programs) this field is overridden with a value of 8, if the field is not
* set *explicitly*. Thus, always set this field explicitly or via
* MPSolver::SetNumThreads().
*
*
* optional int32 num_search_workers = 100 [default = 1];
* @return Whether the numSearchWorkers field is set.
*/
@java.lang.Override
public boolean hasNumSearchWorkers() {
return ((bitField3_ & 0x00080000) != 0);
}
/**
*
* Specify the number of parallel workers to use during search.
* A number <= 1 means no parallelism.
* As of 2020-04-10, if you're using SAT via MPSolver (to solve integer
* programs) this field is overridden with a value of 8, if the field is not
* set *explicitly*. Thus, always set this field explicitly or via
* MPSolver::SetNumThreads().
*
*
* optional int32 num_search_workers = 100 [default = 1];
* @return The numSearchWorkers.
*/
@java.lang.Override
public int getNumSearchWorkers() {
return numSearchWorkers_;
}
public static final int INTERLEAVE_SEARCH_FIELD_NUMBER = 136;
private boolean interleaveSearch_;
/**
*
* Experimental. If this is true, then we interleave all our major search
* strategy and distribute the work amongst num_search_workers.
* The search is deterministic (independently of num_search_workers!), and we
* schedule and wait for interleave_batch_size task to be completed before
* synchronizing and scheduling the next batch of tasks.
*
*
* optional bool interleave_search = 136 [default = false];
* @return Whether the interleaveSearch field is set.
*/
@java.lang.Override
public boolean hasInterleaveSearch() {
return ((bitField3_ & 0x00100000) != 0);
}
/**
*
* Experimental. If this is true, then we interleave all our major search
* strategy and distribute the work amongst num_search_workers.
* The search is deterministic (independently of num_search_workers!), and we
* schedule and wait for interleave_batch_size task to be completed before
* synchronizing and scheduling the next batch of tasks.
*
*
* optional bool interleave_search = 136 [default = false];
* @return The interleaveSearch.
*/
@java.lang.Override
public boolean getInterleaveSearch() {
return interleaveSearch_;
}
public static final int INTERLEAVE_BATCH_SIZE_FIELD_NUMBER = 134;
private int interleaveBatchSize_;
/**
* optional int32 interleave_batch_size = 134 [default = 1];
* @return Whether the interleaveBatchSize field is set.
*/
@java.lang.Override
public boolean hasInterleaveBatchSize() {
return ((bitField3_ & 0x00200000) != 0);
}
/**
* optional int32 interleave_batch_size = 134 [default = 1];
* @return The interleaveBatchSize.
*/
@java.lang.Override
public int getInterleaveBatchSize() {
return interleaveBatchSize_;
}
public static final int REDUCE_MEMORY_USAGE_IN_INTERLEAVE_MODE_FIELD_NUMBER = 141;
private boolean reduceMemoryUsageInInterleaveMode_;
/**
*
* Temporary parameter until the memory usage is more optimized.
*
*
* optional bool reduce_memory_usage_in_interleave_mode = 141 [default = false];
* @return Whether the reduceMemoryUsageInInterleaveMode field is set.
*/
@java.lang.Override
public boolean hasReduceMemoryUsageInInterleaveMode() {
return ((bitField3_ & 0x00400000) != 0);
}
/**
*
* Temporary parameter until the memory usage is more optimized.
*
*
* optional bool reduce_memory_usage_in_interleave_mode = 141 [default = false];
* @return The reduceMemoryUsageInInterleaveMode.
*/
@java.lang.Override
public boolean getReduceMemoryUsageInInterleaveMode() {
return reduceMemoryUsageInInterleaveMode_;
}
public static final int SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER = 113;
private boolean shareObjectiveBounds_;
/**
*
* Allows objective sharing between workers.
*
*
* optional bool share_objective_bounds = 113 [default = true];
* @return Whether the shareObjectiveBounds field is set.
*/
@java.lang.Override
public boolean hasShareObjectiveBounds() {
return ((bitField3_ & 0x00800000) != 0);
}
/**
*
* Allows objective sharing between workers.
*
*
* optional bool share_objective_bounds = 113 [default = true];
* @return The shareObjectiveBounds.
*/
@java.lang.Override
public boolean getShareObjectiveBounds() {
return shareObjectiveBounds_;
}
public static final int SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER = 114;
private boolean shareLevelZeroBounds_;
/**
*
* Allows sharing of the bounds of modified variables at level 0.
*
*
* optional bool share_level_zero_bounds = 114 [default = true];
* @return Whether the shareLevelZeroBounds field is set.
*/
@java.lang.Override
public boolean hasShareLevelZeroBounds() {
return ((bitField3_ & 0x01000000) != 0);
}
/**
*
* Allows sharing of the bounds of modified variables at level 0.
*
*
* optional bool share_level_zero_bounds = 114 [default = true];
* @return The shareLevelZeroBounds.
*/
@java.lang.Override
public boolean getShareLevelZeroBounds() {
return shareLevelZeroBounds_;
}
public static final int USE_LNS_ONLY_FIELD_NUMBER = 101;
private boolean useLnsOnly_;
/**
*
* LNS parameters.
*
*
* optional bool use_lns_only = 101 [default = false];
* @return Whether the useLnsOnly field is set.
*/
@java.lang.Override
public boolean hasUseLnsOnly() {
return ((bitField3_ & 0x02000000) != 0);
}
/**
*
* LNS parameters.
*
*
* optional bool use_lns_only = 101 [default = false];
* @return The useLnsOnly.
*/
@java.lang.Override
public boolean getUseLnsOnly() {
return useLnsOnly_;
}
public static final int LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER = 105;
private boolean lnsFocusOnDecisionVariables_;
/**
* optional bool lns_focus_on_decision_variables = 105 [default = false];
* @return Whether the lnsFocusOnDecisionVariables field is set.
*/
@java.lang.Override
public boolean hasLnsFocusOnDecisionVariables() {
return ((bitField3_ & 0x04000000) != 0);
}
/**
* optional bool lns_focus_on_decision_variables = 105 [default = false];
* @return The lnsFocusOnDecisionVariables.
*/
@java.lang.Override
public boolean getLnsFocusOnDecisionVariables() {
return lnsFocusOnDecisionVariables_;
}
public static final int USE_RINS_LNS_FIELD_NUMBER = 129;
private boolean useRinsLns_;
/**
*
* Turns on relaxation induced neighborhood generator.
*
*
* optional bool use_rins_lns = 129 [default = true];
* @return Whether the useRinsLns field is set.
*/
@java.lang.Override
public boolean hasUseRinsLns() {
return ((bitField3_ & 0x08000000) != 0);
}
/**
*
* Turns on relaxation induced neighborhood generator.
*
*
* optional bool use_rins_lns = 129 [default = true];
* @return The useRinsLns.
*/
@java.lang.Override
public boolean getUseRinsLns() {
return useRinsLns_;
}
public static final int USE_FEASIBILITY_PUMP_FIELD_NUMBER = 164;
private boolean useFeasibilityPump_;
/**
*
* Adds a feasibility pump subsolver along with lns subsolvers.
*
*
* optional bool use_feasibility_pump = 164 [default = true];
* @return Whether the useFeasibilityPump field is set.
*/
@java.lang.Override
public boolean hasUseFeasibilityPump() {
return ((bitField3_ & 0x10000000) != 0);
}
/**
*
* Adds a feasibility pump subsolver along with lns subsolvers.
*
*
* optional bool use_feasibility_pump = 164 [default = true];
* @return The useFeasibilityPump.
*/
@java.lang.Override
public boolean getUseFeasibilityPump() {
return useFeasibilityPump_;
}
public static final int FP_ROUNDING_FIELD_NUMBER = 165;
private int fpRounding_;
/**
* optional .operations_research.sat.SatParameters.FPRoundingMethod fp_rounding = 165 [default = PROPAGATION_ASSISTED];
* @return Whether the fpRounding field is set.
*/
@java.lang.Override public boolean hasFpRounding() {
return ((bitField3_ & 0x20000000) != 0);
}
/**
* optional .operations_research.sat.SatParameters.FPRoundingMethod fp_rounding = 165 [default = PROPAGATION_ASSISTED];
* @return The fpRounding.
*/
@java.lang.Override public com.google.ortools.sat.SatParameters.FPRoundingMethod getFpRounding() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.FPRoundingMethod result = com.google.ortools.sat.SatParameters.FPRoundingMethod.valueOf(fpRounding_);
return result == null ? com.google.ortools.sat.SatParameters.FPRoundingMethod.PROPAGATION_ASSISTED : result;
}
public static final int USE_RELAXATION_LNS_FIELD_NUMBER = 150;
private boolean useRelaxationLns_;
/**
*
* Turns on a lns worker which solves relaxed version of the original problem
* by removing constraints from the problem in order to get better bounds.
*
*
* optional bool use_relaxation_lns = 150 [default = false];
* @return Whether the useRelaxationLns field is set.
*/
@java.lang.Override
public boolean hasUseRelaxationLns() {
return ((bitField3_ & 0x40000000) != 0);
}
/**
*
* Turns on a lns worker which solves relaxed version of the original problem
* by removing constraints from the problem in order to get better bounds.
*
*
* optional bool use_relaxation_lns = 150 [default = false];
* @return The useRelaxationLns.
*/
@java.lang.Override
public boolean getUseRelaxationLns() {
return useRelaxationLns_;
}
public static final int DIVERSIFY_LNS_PARAMS_FIELD_NUMBER = 137;
private boolean diversifyLnsParams_;
/**
*
* If true, registers more lns subsolvers with different parameters.
*
*
* optional bool diversify_lns_params = 137 [default = false];
* @return Whether the diversifyLnsParams field is set.
*/
@java.lang.Override
public boolean hasDiversifyLnsParams() {
return ((bitField3_ & 0x80000000) != 0);
}
/**
*
* If true, registers more lns subsolvers with different parameters.
*
*
* optional bool diversify_lns_params = 137 [default = false];
* @return The diversifyLnsParams.
*/
@java.lang.Override
public boolean getDiversifyLnsParams() {
return diversifyLnsParams_;
}
public static final int RANDOMIZE_SEARCH_FIELD_NUMBER = 103;
private boolean randomizeSearch_;
/**
*
* Randomize fixed search.
*
*
* optional bool randomize_search = 103 [default = false];
* @return Whether the randomizeSearch field is set.
*/
@java.lang.Override
public boolean hasRandomizeSearch() {
return ((bitField4_ & 0x00000001) != 0);
}
/**
*
* Randomize fixed search.
*
*
* optional bool randomize_search = 103 [default = false];
* @return The randomizeSearch.
*/
@java.lang.Override
public boolean getRandomizeSearch() {
return randomizeSearch_;
}
public static final int SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER = 104;
private long searchRandomizationTolerance_;
/**
*
* Search randomization will collect equivalent 'max valued' variables, and
* pick one randomly. For instance, if the variable strategy is CHOOSE_FIRST,
* all unassigned variables are equivalent. If the variable strategy is
* CHOOSE_LOWEST_MIN, and `lm` is the current lowest min of all unassigned
* variables, then the set of max valued variables will be all unassigned
* variables where
* lm <= variable min <= lm + search_randomization_tolerance
*
*
* optional int64 search_randomization_tolerance = 104 [default = 0];
* @return Whether the searchRandomizationTolerance field is set.
*/
@java.lang.Override
public boolean hasSearchRandomizationTolerance() {
return ((bitField4_ & 0x00000002) != 0);
}
/**
*
* Search randomization will collect equivalent 'max valued' variables, and
* pick one randomly. For instance, if the variable strategy is CHOOSE_FIRST,
* all unassigned variables are equivalent. If the variable strategy is
* CHOOSE_LOWEST_MIN, and `lm` is the current lowest min of all unassigned
* variables, then the set of max valued variables will be all unassigned
* variables where
* lm <= variable min <= lm + search_randomization_tolerance
*
*
* optional int64 search_randomization_tolerance = 104 [default = 0];
* @return The searchRandomizationTolerance.
*/
@java.lang.Override
public long getSearchRandomizationTolerance() {
return searchRandomizationTolerance_;
}
public static final int USE_OPTIONAL_VARIABLES_FIELD_NUMBER = 108;
private boolean useOptionalVariables_;
/**
*
* If true, we automatically detect variables whose constraint are always
* enforced by the same literal and we mark them as optional. This allows
* to propagate them as if they were present in some situation.
*
*
* optional bool use_optional_variables = 108 [default = true];
* @return Whether the useOptionalVariables field is set.
*/
@java.lang.Override
public boolean hasUseOptionalVariables() {
return ((bitField4_ & 0x00000004) != 0);
}
/**
*
* If true, we automatically detect variables whose constraint are always
* enforced by the same literal and we mark them as optional. This allows
* to propagate them as if they were present in some situation.
*
*
* optional bool use_optional_variables = 108 [default = true];
* @return The useOptionalVariables.
*/
@java.lang.Override
public boolean getUseOptionalVariables() {
return useOptionalVariables_;
}
public static final int USE_EXACT_LP_REASON_FIELD_NUMBER = 109;
private boolean useExactLpReason_;
/**
*
* The solver usually exploit the LP relaxation of a model. If this option is
* true, then whatever is infered by the LP will be used like an heuristic to
* compute EXACT propagation on the IP. So with this option, there is no
* numerical imprecision issues.
*
*
* optional bool use_exact_lp_reason = 109 [default = true];
* @return Whether the useExactLpReason field is set.
*/
@java.lang.Override
public boolean hasUseExactLpReason() {
return ((bitField4_ & 0x00000008) != 0);
}
/**
*
* The solver usually exploit the LP relaxation of a model. If this option is
* true, then whatever is infered by the LP will be used like an heuristic to
* compute EXACT propagation on the IP. So with this option, there is no
* numerical imprecision issues.
*
*
* optional bool use_exact_lp_reason = 109 [default = true];
* @return The useExactLpReason.
*/
@java.lang.Override
public boolean getUseExactLpReason() {
return useExactLpReason_;
}
public static final int USE_BRANCHING_IN_LP_FIELD_NUMBER = 139;
private boolean useBranchingInLp_;
/**
*
* If true, the solver attemts to generate more info inside lp propagator by
* branching on some variables if certain criteria are met during the search
* tree exploration.
*
*
* optional bool use_branching_in_lp = 139 [default = false];
* @return Whether the useBranchingInLp field is set.
*/
@java.lang.Override
public boolean hasUseBranchingInLp() {
return ((bitField4_ & 0x00000010) != 0);
}
/**
*
* If true, the solver attemts to generate more info inside lp propagator by
* branching on some variables if certain criteria are met during the search
* tree exploration.
*
*
* optional bool use_branching_in_lp = 139 [default = false];
* @return The useBranchingInLp.
*/
@java.lang.Override
public boolean getUseBranchingInLp() {
return useBranchingInLp_;
}
public static final int USE_COMBINED_NO_OVERLAP_FIELD_NUMBER = 133;
private boolean useCombinedNoOverlap_;
/**
*
* This can be beneficial if there is a lot of no-overlap constraints but a
* relatively low number of different intervals in the problem. Like 1000
* intervals, but 1M intervals in the no-overlap constraints covering them.
*
*
* optional bool use_combined_no_overlap = 133 [default = false];
* @return Whether the useCombinedNoOverlap field is set.
*/
@java.lang.Override
public boolean hasUseCombinedNoOverlap() {
return ((bitField4_ & 0x00000020) != 0);
}
/**
*
* This can be beneficial if there is a lot of no-overlap constraints but a
* relatively low number of different intervals in the problem. Like 1000
* intervals, but 1M intervals in the no-overlap constraints covering them.
*
*
* optional bool use_combined_no_overlap = 133 [default = false];
* @return The useCombinedNoOverlap.
*/
@java.lang.Override
public boolean getUseCombinedNoOverlap() {
return useCombinedNoOverlap_;
}
public static final int CATCH_SIGINT_SIGNAL_FIELD_NUMBER = 135;
private boolean catchSigintSignal_;
/**
*
* Indicates if the CP-SAT layer should catch Control-C (SIGINT) signals
* when calling solve. If set, catching the SIGINT signal will terminate the
* search gracefully, as if a time limit was reached.
*
*
* optional bool catch_sigint_signal = 135 [default = true];
* @return Whether the catchSigintSignal field is set.
*/
@java.lang.Override
public boolean hasCatchSigintSignal() {
return ((bitField4_ & 0x00000040) != 0);
}
/**
*
* Indicates if the CP-SAT layer should catch Control-C (SIGINT) signals
* when calling solve. If set, catching the SIGINT signal will terminate the
* search gracefully, as if a time limit was reached.
*
*
* optional bool catch_sigint_signal = 135 [default = true];
* @return The catchSigintSignal.
*/
@java.lang.Override
public boolean getCatchSigintSignal() {
return catchSigintSignal_;
}
public static final int USE_IMPLIED_BOUNDS_FIELD_NUMBER = 144;
private boolean useImpliedBounds_;
/**
*
* Stores and exploits "implied-bounds" in the solver. That is, relations of
* the form literal => (var >= bound). This is currently used to derive
* stronger cuts.
*
*
* optional bool use_implied_bounds = 144 [default = true];
* @return Whether the useImpliedBounds field is set.
*/
@java.lang.Override
public boolean hasUseImpliedBounds() {
return ((bitField4_ & 0x00000080) != 0);
}
/**
*
* Stores and exploits "implied-bounds" in the solver. That is, relations of
* the form literal => (var >= bound). This is currently used to derive
* stronger cuts.
*
*
* optional bool use_implied_bounds = 144 [default = true];
* @return The useImpliedBounds.
*/
@java.lang.Override
public boolean getUseImpliedBounds() {
return useImpliedBounds_;
}
public static final int MIP_MAX_BOUND_FIELD_NUMBER = 124;
private double mipMaxBound_;
/**
*
* We need to bound the maximum magnitude of the variables for CP-SAT, and
* that is the bound we use. If the MIP model expect larger variable value in
* the solution, then the converted model will likely not be relevant.
*
*
* optional double mip_max_bound = 124 [default = 10000000];
* @return Whether the mipMaxBound field is set.
*/
@java.lang.Override
public boolean hasMipMaxBound() {
return ((bitField4_ & 0x00000100) != 0);
}
/**
*
* We need to bound the maximum magnitude of the variables for CP-SAT, and
* that is the bound we use. If the MIP model expect larger variable value in
* the solution, then the converted model will likely not be relevant.
*
*
* optional double mip_max_bound = 124 [default = 10000000];
* @return The mipMaxBound.
*/
@java.lang.Override
public double getMipMaxBound() {
return mipMaxBound_;
}
public static final int MIP_VAR_SCALING_FIELD_NUMBER = 125;
private double mipVarScaling_;
/**
*
* All continuous variable of the problem will be multiplied by this factor.
* By default, we don't do any variable scaling and rely on the MIP model to
* specify continuous variable domain with the wanted precision.
*
*
* optional double mip_var_scaling = 125 [default = 1];
* @return Whether the mipVarScaling field is set.
*/
@java.lang.Override
public boolean hasMipVarScaling() {
return ((bitField4_ & 0x00000200) != 0);
}
/**
*
* All continuous variable of the problem will be multiplied by this factor.
* By default, we don't do any variable scaling and rely on the MIP model to
* specify continuous variable domain with the wanted precision.
*
*
* optional double mip_var_scaling = 125 [default = 1];
* @return The mipVarScaling.
*/
@java.lang.Override
public double getMipVarScaling() {
return mipVarScaling_;
}
public static final int MIP_AUTOMATICALLY_SCALE_VARIABLES_FIELD_NUMBER = 166;
private boolean mipAutomaticallyScaleVariables_;
/**
*
* If true, some continuous variable might be automatially scaled. For now,
* this is only the case where we detect that a variable is actually an
* integer multiple of a constant. For instance, variables of the form k * 0.5
* are quite frequent, and if we detect this, we will scale such variable
* domain by 2 to make it implied integer.
*
*
* optional bool mip_automatically_scale_variables = 166 [default = true];
* @return Whether the mipAutomaticallyScaleVariables field is set.
*/
@java.lang.Override
public boolean hasMipAutomaticallyScaleVariables() {
return ((bitField4_ & 0x00000400) != 0);
}
/**
*
* If true, some continuous variable might be automatially scaled. For now,
* this is only the case where we detect that a variable is actually an
* integer multiple of a constant. For instance, variables of the form k * 0.5
* are quite frequent, and if we detect this, we will scale such variable
* domain by 2 to make it implied integer.
*
*
* optional bool mip_automatically_scale_variables = 166 [default = true];
* @return The mipAutomaticallyScaleVariables.
*/
@java.lang.Override
public boolean getMipAutomaticallyScaleVariables() {
return mipAutomaticallyScaleVariables_;
}
public static final int MIP_WANTED_PRECISION_FIELD_NUMBER = 126;
private double mipWantedPrecision_;
/**
*
* When scaling constraint with double coefficients to integer coefficients,
* we will multiply by a power of 2 and round the coefficients. We will choose
* the lowest power such that we have this relative precision on each of the
* constraint (resp. objective) coefficient.
* We also use this to decide by how much we relax the constraint bounds so
* that we can have a feasible integer solution of constraints involving
* continuous variable. This is required for instance when you have an == rhs
* constraint as in many situation you cannot have a perfect equality with
* integer variables and coefficients.
*
*
* optional double mip_wanted_precision = 126 [default = 1e-06];
* @return Whether the mipWantedPrecision field is set.
*/
@java.lang.Override
public boolean hasMipWantedPrecision() {
return ((bitField4_ & 0x00000800) != 0);
}
/**
*
* When scaling constraint with double coefficients to integer coefficients,
* we will multiply by a power of 2 and round the coefficients. We will choose
* the lowest power such that we have this relative precision on each of the
* constraint (resp. objective) coefficient.
* We also use this to decide by how much we relax the constraint bounds so
* that we can have a feasible integer solution of constraints involving
* continuous variable. This is required for instance when you have an == rhs
* constraint as in many situation you cannot have a perfect equality with
* integer variables and coefficients.
*
*
* optional double mip_wanted_precision = 126 [default = 1e-06];
* @return The mipWantedPrecision.
*/
@java.lang.Override
public double getMipWantedPrecision() {
return mipWantedPrecision_;
}
public static final int MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER = 127;
private int mipMaxActivityExponent_;
/**
*
* To avoid integer overflow, we always force the maximum possible constraint
* activity (and objective value) according to the initial variable domain to
* be smaller than 2 to this given power. Because of this, we cannot always
* reach the "mip_wanted_precision" parameter above.
* This can go as high as 62, but some internal algo currently abort early if
* they might run into integer overflow, so it is better to keep it a bit
* lower than this.
*
*
* optional int32 mip_max_activity_exponent = 127 [default = 53];
* @return Whether the mipMaxActivityExponent field is set.
*/
@java.lang.Override
public boolean hasMipMaxActivityExponent() {
return ((bitField4_ & 0x00001000) != 0);
}
/**
*
* To avoid integer overflow, we always force the maximum possible constraint
* activity (and objective value) according to the initial variable domain to
* be smaller than 2 to this given power. Because of this, we cannot always
* reach the "mip_wanted_precision" parameter above.
* This can go as high as 62, but some internal algo currently abort early if
* they might run into integer overflow, so it is better to keep it a bit
* lower than this.
*
*
* optional int32 mip_max_activity_exponent = 127 [default = 53];
* @return The mipMaxActivityExponent.
*/
@java.lang.Override
public int getMipMaxActivityExponent() {
return mipMaxActivityExponent_;
}
public static final int MIP_CHECK_PRECISION_FIELD_NUMBER = 128;
private double mipCheckPrecision_;
/**
*
* As explained in mip_precision and mip_max_activity_exponent, we cannot
* always reach the wanted coefficient precision during scaling. When we
* cannot, we will report MODEL_INVALID if the relative preicision is larger
* than this parameter.
*
*
* optional double mip_check_precision = 128 [default = 0.0001];
* @return Whether the mipCheckPrecision field is set.
*/
@java.lang.Override
public boolean hasMipCheckPrecision() {
return ((bitField4_ & 0x00002000) != 0);
}
/**
*
* As explained in mip_precision and mip_max_activity_exponent, we cannot
* always reach the wanted coefficient precision during scaling. When we
* cannot, we will report MODEL_INVALID if the relative preicision is larger
* than this parameter.
*
*
* optional double mip_check_precision = 128 [default = 0.0001];
* @return The mipCheckPrecision.
*/
@java.lang.Override
public double getMipCheckPrecision() {
return mipCheckPrecision_;
}
private byte memoizedIsInitialized = -1;
@java.lang.Override
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
memoizedIsInitialized = 1;
return true;
}
@java.lang.Override
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
if (((bitField0_ & 0x00000001) != 0)) {
output.writeEnum(1, preferredVariableOrder_);
}
if (((bitField0_ & 0x00000002) != 0)) {
output.writeEnum(2, initialPolarity_);
}
if (((bitField0_ & 0x00000100) != 0)) {
output.writeEnum(4, minimizationAlgorithm_);
}
if (((bitField0_ & 0x00000800) != 0)) {
output.writeInt32(11, clauseCleanupPeriod_);
}
if (((bitField0_ & 0x00001000) != 0)) {
output.writeInt32(13, clauseCleanupTarget_);
}
if (((bitField0_ & 0x00100000) != 0)) {
output.writeDouble(15, variableActivityDecay_);
}
if (((bitField0_ & 0x00200000) != 0)) {
output.writeDouble(16, maxVariableActivityValue_);
}
if (((bitField0_ & 0x02000000) != 0)) {
output.writeDouble(17, clauseActivityDecay_);
}
if (((bitField0_ & 0x04000000) != 0)) {
output.writeDouble(18, maxClauseActivityValue_);
}
if (((bitField0_ & 0x00400000) != 0)) {
output.writeDouble(22, glucoseMaxDecay_);
}
if (((bitField0_ & 0x00800000) != 0)) {
output.writeDouble(23, glucoseDecayIncrement_);
}
if (((bitField0_ & 0x01000000) != 0)) {
output.writeInt32(24, glucoseDecayIncrementPeriod_);
}
if (((bitField0_ & 0x10000000) != 0)) {
output.writeInt32(30, restartPeriod_);
}
if (((bitField1_ & 0x00001000) != 0)) {
output.writeInt32(31, randomSeed_);
}
if (((bitField0_ & 0x00000010) != 0)) {
output.writeDouble(32, randomBranchesRatio_);
}
if (((bitField1_ & 0x00000800) != 0)) {
output.writeBool(33, treatBinaryClausesSeparately_);
}
if (((bitField0_ & 0x00000200) != 0)) {
output.writeEnum(34, binaryMinimizationAlgorithm_);
}
if (((bitField2_ & 0x00000010) != 0)) {
output.writeBool(35, useOptimizationHints_);
}
if (((bitField1_ & 0x00000020) != 0)) {
output.writeDouble(36, maxTimeInSeconds_);
}
if (((bitField1_ & 0x00000080) != 0)) {
output.writeInt64(37, maxNumberOfConflicts_);
}
if (((bitField1_ & 0x00000100) != 0)) {
output.writeInt64(40, maxMemoryInMb_);
}
if (((bitField1_ & 0x00002000) != 0)) {
output.writeBool(41, logSearchProgress_);
}
if (((bitField1_ & 0x00004000) != 0)) {
output.writeBool(43, usePbResolution_);
}
if (((bitField0_ & 0x00000004) != 0)) {
output.writeBool(44, usePhaseSaving_);
}
if (((bitField0_ & 0x00000008) != 0)) {
output.writeDouble(45, randomPolarityRatio_);
}
if (((bitField0_ & 0x00010000) != 0)) {
output.writeInt32(46, pbCleanupIncrement_);
}
if (((bitField0_ & 0x00020000) != 0)) {
output.writeDouble(47, pbCleanupRatio_);
}
if (((bitField1_ & 0x00008000) != 0)) {
output.writeBool(48, minimizeReductionDuringPbResolution_);
}
if (((bitField1_ & 0x00010000) != 0)) {
output.writeBool(49, countAssumptionLevelsInLbd_);
}
if (((bitField2_ & 0x00000020) != 0)) {
output.writeBool(50, minimizeCore_);
}
if (((bitField2_ & 0x00000100) != 0)) {
output.writeEnum(51, maxSatAssumptionOrder_);
}
if (((bitField2_ & 0x00000200) != 0)) {
output.writeBool(52, maxSatReverseAssumptionOrder_);
}
if (((bitField2_ & 0x00000400) != 0)) {
output.writeEnum(53, maxSatStratification_);
}
if (((bitField1_ & 0x00020000) != 0)) {
output.writeInt32(54, presolveBveThreshold_);
}
if (((bitField1_ & 0x00040000) != 0)) {
output.writeInt32(55, presolveBveClauseWeight_);
}
if (((bitField0_ & 0x00000400) != 0)) {
output.writeBool(56, subsumptionDuringConflictAnalysis_);
}
if (((bitField1_ & 0x00080000) != 0)) {
output.writeDouble(57, presolveProbingDeterministicTimeLimit_);
}
if (((bitField0_ & 0x00002000) != 0)) {
output.writeEnum(58, clauseCleanupProtection_);
}
if (((bitField0_ & 0x00004000) != 0)) {
output.writeInt32(59, clauseCleanupLbdBound_);
}
if (((bitField0_ & 0x00008000) != 0)) {
output.writeEnum(60, clauseCleanupOrdering_);
}
for (int i = 0; i < restartAlgorithms_.size(); i++) {
output.writeEnum(61, restartAlgorithms_.get(i));
}
if (((bitField0_ & 0x20000000) != 0)) {
output.writeInt32(62, restartRunningWindowSize_);
}
if (((bitField0_ & 0x40000000) != 0)) {
output.writeDouble(63, restartDlAverageRatio_);
}
if (((bitField1_ & 0x00000001) != 0)) {
output.writeBool(64, useBlockingRestart_);
}
if (((bitField1_ & 0x00000002) != 0)) {
output.writeInt32(65, blockingRestartWindowSize_);
}
if (((bitField1_ & 0x00000004) != 0)) {
output.writeDouble(66, blockingRestartMultiplier_);
}
if (((bitField1_ & 0x00000040) != 0)) {
output.writeDouble(67, maxDeterministicTime_);
}
if (((bitField1_ & 0x00000008) != 0)) {
output.writeInt32(68, numConflictsBeforeStrategyChanges_);
}
if (((bitField1_ & 0x00000010) != 0)) {
output.writeDouble(69, strategyChangeIncreaseRatio_);
}
if (((bitField0_ & 0x08000000) != 0)) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 70, defaultRestartAlgorithms_);
}
if (((bitField0_ & 0x80000000) != 0)) {
output.writeDouble(71, restartLbdAverageRatio_);
}
if (((bitField1_ & 0x00200000) != 0)) {
output.writeBool(72, presolveUseBva_);
}
if (((bitField1_ & 0x00400000) != 0)) {
output.writeInt32(73, presolveBvaThreshold_);
}
if (((bitField2_ & 0x00000800) != 0)) {
output.writeBool(74, usePrecedencesInDisjunctiveConstraint_);
}
if (((bitField0_ & 0x00000020) != 0)) {
output.writeBool(75, useErwaHeuristic_);
}
if (((bitField0_ & 0x00000040) != 0)) {
output.writeDouble(76, initialVariablesActivity_);
}
if (((bitField0_ & 0x00000080) != 0)) {
output.writeBool(77, alsoBumpVariablesInConflictReasons_);
}
if (((bitField2_ & 0x00001000) != 0)) {
output.writeBool(78, useOverloadCheckerInCumulativeConstraint_);
}
if (((bitField2_ & 0x00002000) != 0)) {
output.writeBool(79, useTimetableEdgeFindingInCumulativeConstraint_);
}
if (((bitField2_ & 0x00004000) != 0)) {
output.writeBool(80, useDisjunctiveConstraintInCumulativeConstraint_);
}
if (((bitField3_ & 0x00000002) != 0)) {
output.writeEnum(82, searchBranching_);
}
if (((bitField3_ & 0x00000400) != 0)) {
output.writeBool(83, optimizeWithCore_);
}
if (((bitField2_ & 0x00000040) != 0)) {
output.writeBool(84, findMultipleCores_);
}
if (((bitField3_ & 0x00001000) != 0)) {
output.writeBool(85, optimizeWithMaxHs_);
}
if (((bitField1_ & 0x01000000) != 0)) {
output.writeBool(86, cpModelPresolve_);
}
if (((bitField3_ & 0x00002000) != 0)) {
output.writeBool(87, enumerateAllSolutions_);
}
if (((bitField1_ & 0x00100000) != 0)) {
output.writeBool(88, presolveBlockedClause_);
}
if (((bitField2_ & 0x00000080) != 0)) {
output.writeBool(89, coverOptimization_);
}
if (((bitField2_ & 0x00008000) != 0)) {
output.writeInt32(90, linearizationLevel_);
}
if (((bitField2_ & 0x00020000) != 0)) {
output.writeInt32(91, maxNumCuts_);
}
if (((bitField2_ & 0x00040000) != 0)) {
output.writeBool(92, onlyAddCutsAtLevelZero_);
}
if (((bitField1_ & 0x10000000) != 0)) {
output.writeBool(93, cpModelUseSatPresolve_);
}
if (((bitField3_ & 0x00000008) != 0)) {
output.writeBool(94, exploitIntegerLpSolution_);
}
if (((bitField3_ & 0x00010000) != 0)) {
output.writeBool(95, autoDetectGreaterThanAtLeastOneOf_);
}
if (((bitField0_ & 0x00040000) != 0)) {
output.writeInt32(96, minimizeWithPropagationRestartPeriod_);
}
if (((bitField0_ & 0x00080000) != 0)) {
output.writeInt32(97, minimizeWithPropagationNumDecisions_);
}
if (((bitField3_ & 0x00020000) != 0)) {
output.writeBool(98, stopAfterFirstSolution_);
}
if (((bitField3_ & 0x00000800) != 0)) {
output.writeInt32(99, binarySearchNumConflicts_);
}
if (((bitField3_ & 0x00080000) != 0)) {
output.writeInt32(100, numSearchWorkers_);
}
if (((bitField3_ & 0x02000000) != 0)) {
output.writeBool(101, useLnsOnly_);
}
if (((bitField4_ & 0x00000001) != 0)) {
output.writeBool(103, randomizeSearch_);
}
if (((bitField4_ & 0x00000002) != 0)) {
output.writeInt64(104, searchRandomizationTolerance_);
}
if (((bitField3_ & 0x04000000) != 0)) {
output.writeBool(105, lnsFocusOnDecisionVariables_);
}
if (((bitField3_ & 0x00008000) != 0)) {
output.writeBool(106, instantiateAllVariables_);
}
if (((bitField2_ & 0x00010000) != 0)) {
output.writeInt32(107, booleanEncodingLevel_);
}
if (((bitField4_ & 0x00000004) != 0)) {
output.writeBool(108, useOptionalVariables_);
}
if (((bitField4_ & 0x00000008) != 0)) {
output.writeBool(109, useExactLpReason_);
}
if (((bitField1_ & 0x08000000) != 0)) {
output.writeInt32(110, cpModelProbingLevel_);
}
if (((bitField2_ & 0x00080000) != 0)) {
output.writeBool(111, addKnapsackCuts_);
}
if (((bitField2_ & 0x02000000) != 0)) {
output.writeBool(112, addLpConstraintsLazily_);
}
if (((bitField3_ & 0x00800000) != 0)) {
output.writeBool(113, shareObjectiveBounds_);
}
if (((bitField3_ & 0x01000000) != 0)) {
output.writeBool(114, shareLevelZeroBounds_);
}
if (((bitField2_ & 0x04000000) != 0)) {
output.writeDouble(115, minOrthogonalityForLpConstraints_);
}
if (((bitField3_ & 0x00000010) != 0)) {
output.writeBool(116, exploitAllLpSolution_);
}
if (((bitField2_ & 0x00100000) != 0)) {
output.writeBool(117, addCgCuts_);
}
if (((bitField2_ & 0x01000000) != 0)) {
output.writeInt32(119, maxIntegerRoundingScaling_);
}
if (((bitField2_ & 0x00200000) != 0)) {
output.writeBool(120, addMirCuts_);
}
if (((bitField2_ & 0x10000000) != 0)) {
output.writeInt32(121, maxConsecutiveInactiveCount_);
}
if (((bitField3_ & 0x00000001) != 0)) {
output.writeInt32(122, newConstraintsBatchSize_);
}
if (((bitField3_ & 0x00000200) != 0)) {
output.writeInt64(123, pseudoCostReliabilityThreshold_);
}
if (((bitField4_ & 0x00000100) != 0)) {
output.writeDouble(124, mipMaxBound_);
}
if (((bitField4_ & 0x00000200) != 0)) {
output.writeDouble(125, mipVarScaling_);
}
if (((bitField4_ & 0x00000800) != 0)) {
output.writeDouble(126, mipWantedPrecision_);
}
if (((bitField4_ & 0x00001000) != 0)) {
output.writeInt32(127, mipMaxActivityExponent_);
}
if (((bitField4_ & 0x00002000) != 0)) {
output.writeDouble(128, mipCheckPrecision_);
}
if (((bitField3_ & 0x08000000) != 0)) {
output.writeBool(129, useRinsLns_);
}
if (((bitField3_ & 0x00000020) != 0)) {
output.writeBool(130, exploitBestSolution_);
}
if (((bitField3_ & 0x00000080) != 0)) {
output.writeBool(131, exploitObjective_);
}
if (((bitField3_ & 0x00004000) != 0)) {
output.writeBool(132, fillTightenedDomainsInResponse_);
}
if (((bitField4_ & 0x00000020) != 0)) {
output.writeBool(133, useCombinedNoOverlap_);
}
if (((bitField3_ & 0x00200000) != 0)) {
output.writeInt32(134, interleaveBatchSize_);
}
if (((bitField4_ & 0x00000040) != 0)) {
output.writeBool(135, catchSigintSignal_);
}
if (((bitField3_ & 0x00100000) != 0)) {
output.writeBool(136, interleaveSearch_);
}
if (((bitField3_ & 0x80000000) != 0)) {
output.writeBool(137, diversifyLnsParams_);
}
if (((bitField1_ & 0x00800000) != 0)) {
output.writeInt32(138, maxPresolveIterations_);
}
if (((bitField4_ & 0x00000010) != 0)) {
output.writeBool(139, useBranchingInLp_);
}
if (((bitField1_ & 0x40000000) != 0)) {
output.writeBool(140, expandElementConstraints_);
}
if (((bitField3_ & 0x00400000) != 0)) {
output.writeBool(141, reduceMemoryUsageInInterleaveMode_);
}
if (((bitField3_ & 0x00000100) != 0)) {
output.writeInt64(142, probingPeriodAtRoot_);
}
if (((bitField1_ & 0x80000000) != 0)) {
output.writeBool(143, expandAutomatonConstraints_);
}
if (((bitField4_ & 0x00000080) != 0)) {
output.writeBool(144, useImpliedBounds_);
}
if (((bitField2_ & 0x00000002) != 0)) {
output.writeDouble(145, mergeNoOverlapWorkLimit_);
}
if (((bitField2_ & 0x00000004) != 0)) {
output.writeDouble(146, mergeAtMostOneWorkLimit_);
}
if (((bitField2_ & 0x00000008) != 0)) {
output.writeInt32(147, presolveSubstitutionLevel_);
}
if (((bitField2_ & 0x00400000) != 0)) {
output.writeInt32(148, maxAllDiffCutSize_);
}
if (((bitField3_ & 0x00040000) != 0)) {
output.writeBool(149, stopAfterPresolve_);
}
if (((bitField3_ & 0x40000000) != 0)) {
output.writeBool(150, useRelaxationLns_);
}
if (((bitField1_ & 0x04000000) != 0)) {
output.writeInt32(151, cpModelMaxNumPresolveOperations_);
}
if (((bitField2_ & 0x00800000) != 0)) {
output.writeBool(152, addLinMaxCuts_);
}
if (((bitField3_ & 0x00000004) != 0)) {
output.writeInt32(153, hintConflictLimit_);
}
if (((bitField2_ & 0x08000000) != 0)) {
output.writeInt32(154, maxCutRoundsAtLevelZero_);
}
if (((bitField2_ & 0x20000000) != 0)) {
output.writeDouble(155, cutMaxActiveCountValue_);
}
if (((bitField2_ & 0x40000000) != 0)) {
output.writeDouble(156, cutActiveCountDecay_);
}
if (((bitField2_ & 0x80000000) != 0)) {
output.writeInt32(157, cutCleanupTarget_);
}
if (((bitField2_ & 0x00000001) != 0)) {
output.writeBool(158, expandTableConstraints_);
}
if (((bitField1_ & 0x00000200) != 0)) {
output.writeDouble(159, absoluteGapLimit_);
}
if (((bitField1_ & 0x00000400) != 0)) {
output.writeDouble(160, relativeGapLimit_);
}
if (((bitField3_ & 0x00000040) != 0)) {
output.writeBool(161, exploitRelaxationSolution_);
}
if (((bitField1_ & 0x02000000) != 0)) {
output.writeBool(162, cpModelPostsolveWithFullSolver_);
}
if (((bitField1_ & 0x20000000) != 0)) {
output.writeBool(163, useSatInprocessing_);
}
if (((bitField3_ & 0x10000000) != 0)) {
output.writeBool(164, useFeasibilityPump_);
}
if (((bitField3_ & 0x20000000) != 0)) {
output.writeEnum(165, fpRounding_);
}
if (((bitField4_ & 0x00000400) != 0)) {
output.writeBool(166, mipAutomaticallyScaleVariables_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(1, preferredVariableOrder_);
}
if (((bitField0_ & 0x00000002) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(2, initialPolarity_);
}
if (((bitField0_ & 0x00000100) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(4, minimizationAlgorithm_);
}
if (((bitField0_ & 0x00000800) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(11, clauseCleanupPeriod_);
}
if (((bitField0_ & 0x00001000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(13, clauseCleanupTarget_);
}
if (((bitField0_ & 0x00100000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(15, variableActivityDecay_);
}
if (((bitField0_ & 0x00200000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(16, maxVariableActivityValue_);
}
if (((bitField0_ & 0x02000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(17, clauseActivityDecay_);
}
if (((bitField0_ & 0x04000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(18, maxClauseActivityValue_);
}
if (((bitField0_ & 0x00400000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(22, glucoseMaxDecay_);
}
if (((bitField0_ & 0x00800000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(23, glucoseDecayIncrement_);
}
if (((bitField0_ & 0x01000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(24, glucoseDecayIncrementPeriod_);
}
if (((bitField0_ & 0x10000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(30, restartPeriod_);
}
if (((bitField1_ & 0x00001000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(31, randomSeed_);
}
if (((bitField0_ & 0x00000010) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(32, randomBranchesRatio_);
}
if (((bitField1_ & 0x00000800) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(33, treatBinaryClausesSeparately_);
}
if (((bitField0_ & 0x00000200) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(34, binaryMinimizationAlgorithm_);
}
if (((bitField2_ & 0x00000010) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(35, useOptimizationHints_);
}
if (((bitField1_ & 0x00000020) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(36, maxTimeInSeconds_);
}
if (((bitField1_ & 0x00000080) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(37, maxNumberOfConflicts_);
}
if (((bitField1_ & 0x00000100) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(40, maxMemoryInMb_);
}
if (((bitField1_ & 0x00002000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(41, logSearchProgress_);
}
if (((bitField1_ & 0x00004000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(43, usePbResolution_);
}
if (((bitField0_ & 0x00000004) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(44, usePhaseSaving_);
}
if (((bitField0_ & 0x00000008) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(45, randomPolarityRatio_);
}
if (((bitField0_ & 0x00010000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(46, pbCleanupIncrement_);
}
if (((bitField0_ & 0x00020000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(47, pbCleanupRatio_);
}
if (((bitField1_ & 0x00008000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(48, minimizeReductionDuringPbResolution_);
}
if (((bitField1_ & 0x00010000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(49, countAssumptionLevelsInLbd_);
}
if (((bitField2_ & 0x00000020) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(50, minimizeCore_);
}
if (((bitField2_ & 0x00000100) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(51, maxSatAssumptionOrder_);
}
if (((bitField2_ & 0x00000200) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(52, maxSatReverseAssumptionOrder_);
}
if (((bitField2_ & 0x00000400) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(53, maxSatStratification_);
}
if (((bitField1_ & 0x00020000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(54, presolveBveThreshold_);
}
if (((bitField1_ & 0x00040000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(55, presolveBveClauseWeight_);
}
if (((bitField0_ & 0x00000400) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(56, subsumptionDuringConflictAnalysis_);
}
if (((bitField1_ & 0x00080000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(57, presolveProbingDeterministicTimeLimit_);
}
if (((bitField0_ & 0x00002000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(58, clauseCleanupProtection_);
}
if (((bitField0_ & 0x00004000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(59, clauseCleanupLbdBound_);
}
if (((bitField0_ & 0x00008000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(60, clauseCleanupOrdering_);
}
{
int dataSize = 0;
for (int i = 0; i < restartAlgorithms_.size(); i++) {
dataSize += com.google.protobuf.CodedOutputStream
.computeEnumSizeNoTag(restartAlgorithms_.get(i));
}
size += dataSize;
size += 2 * restartAlgorithms_.size();
}
if (((bitField0_ & 0x20000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(62, restartRunningWindowSize_);
}
if (((bitField0_ & 0x40000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(63, restartDlAverageRatio_);
}
if (((bitField1_ & 0x00000001) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(64, useBlockingRestart_);
}
if (((bitField1_ & 0x00000002) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(65, blockingRestartWindowSize_);
}
if (((bitField1_ & 0x00000004) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(66, blockingRestartMultiplier_);
}
if (((bitField1_ & 0x00000040) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(67, maxDeterministicTime_);
}
if (((bitField1_ & 0x00000008) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(68, numConflictsBeforeStrategyChanges_);
}
if (((bitField1_ & 0x00000010) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(69, strategyChangeIncreaseRatio_);
}
if (((bitField0_ & 0x08000000) != 0)) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(70, defaultRestartAlgorithms_);
}
if (((bitField0_ & 0x80000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(71, restartLbdAverageRatio_);
}
if (((bitField1_ & 0x00200000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(72, presolveUseBva_);
}
if (((bitField1_ & 0x00400000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(73, presolveBvaThreshold_);
}
if (((bitField2_ & 0x00000800) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(74, usePrecedencesInDisjunctiveConstraint_);
}
if (((bitField0_ & 0x00000020) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(75, useErwaHeuristic_);
}
if (((bitField0_ & 0x00000040) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(76, initialVariablesActivity_);
}
if (((bitField0_ & 0x00000080) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(77, alsoBumpVariablesInConflictReasons_);
}
if (((bitField2_ & 0x00001000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(78, useOverloadCheckerInCumulativeConstraint_);
}
if (((bitField2_ & 0x00002000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(79, useTimetableEdgeFindingInCumulativeConstraint_);
}
if (((bitField2_ & 0x00004000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(80, useDisjunctiveConstraintInCumulativeConstraint_);
}
if (((bitField3_ & 0x00000002) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(82, searchBranching_);
}
if (((bitField3_ & 0x00000400) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(83, optimizeWithCore_);
}
if (((bitField2_ & 0x00000040) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(84, findMultipleCores_);
}
if (((bitField3_ & 0x00001000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(85, optimizeWithMaxHs_);
}
if (((bitField1_ & 0x01000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(86, cpModelPresolve_);
}
if (((bitField3_ & 0x00002000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(87, enumerateAllSolutions_);
}
if (((bitField1_ & 0x00100000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(88, presolveBlockedClause_);
}
if (((bitField2_ & 0x00000080) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(89, coverOptimization_);
}
if (((bitField2_ & 0x00008000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(90, linearizationLevel_);
}
if (((bitField2_ & 0x00020000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(91, maxNumCuts_);
}
if (((bitField2_ & 0x00040000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(92, onlyAddCutsAtLevelZero_);
}
if (((bitField1_ & 0x10000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(93, cpModelUseSatPresolve_);
}
if (((bitField3_ & 0x00000008) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(94, exploitIntegerLpSolution_);
}
if (((bitField3_ & 0x00010000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(95, autoDetectGreaterThanAtLeastOneOf_);
}
if (((bitField0_ & 0x00040000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(96, minimizeWithPropagationRestartPeriod_);
}
if (((bitField0_ & 0x00080000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(97, minimizeWithPropagationNumDecisions_);
}
if (((bitField3_ & 0x00020000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(98, stopAfterFirstSolution_);
}
if (((bitField3_ & 0x00000800) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(99, binarySearchNumConflicts_);
}
if (((bitField3_ & 0x00080000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(100, numSearchWorkers_);
}
if (((bitField3_ & 0x02000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(101, useLnsOnly_);
}
if (((bitField4_ & 0x00000001) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(103, randomizeSearch_);
}
if (((bitField4_ & 0x00000002) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(104, searchRandomizationTolerance_);
}
if (((bitField3_ & 0x04000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(105, lnsFocusOnDecisionVariables_);
}
if (((bitField3_ & 0x00008000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(106, instantiateAllVariables_);
}
if (((bitField2_ & 0x00010000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(107, booleanEncodingLevel_);
}
if (((bitField4_ & 0x00000004) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(108, useOptionalVariables_);
}
if (((bitField4_ & 0x00000008) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(109, useExactLpReason_);
}
if (((bitField1_ & 0x08000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(110, cpModelProbingLevel_);
}
if (((bitField2_ & 0x00080000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(111, addKnapsackCuts_);
}
if (((bitField2_ & 0x02000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(112, addLpConstraintsLazily_);
}
if (((bitField3_ & 0x00800000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(113, shareObjectiveBounds_);
}
if (((bitField3_ & 0x01000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(114, shareLevelZeroBounds_);
}
if (((bitField2_ & 0x04000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(115, minOrthogonalityForLpConstraints_);
}
if (((bitField3_ & 0x00000010) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(116, exploitAllLpSolution_);
}
if (((bitField2_ & 0x00100000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(117, addCgCuts_);
}
if (((bitField2_ & 0x01000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(119, maxIntegerRoundingScaling_);
}
if (((bitField2_ & 0x00200000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(120, addMirCuts_);
}
if (((bitField2_ & 0x10000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(121, maxConsecutiveInactiveCount_);
}
if (((bitField3_ & 0x00000001) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(122, newConstraintsBatchSize_);
}
if (((bitField3_ & 0x00000200) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(123, pseudoCostReliabilityThreshold_);
}
if (((bitField4_ & 0x00000100) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(124, mipMaxBound_);
}
if (((bitField4_ & 0x00000200) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(125, mipVarScaling_);
}
if (((bitField4_ & 0x00000800) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(126, mipWantedPrecision_);
}
if (((bitField4_ & 0x00001000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(127, mipMaxActivityExponent_);
}
if (((bitField4_ & 0x00002000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(128, mipCheckPrecision_);
}
if (((bitField3_ & 0x08000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(129, useRinsLns_);
}
if (((bitField3_ & 0x00000020) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(130, exploitBestSolution_);
}
if (((bitField3_ & 0x00000080) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(131, exploitObjective_);
}
if (((bitField3_ & 0x00004000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(132, fillTightenedDomainsInResponse_);
}
if (((bitField4_ & 0x00000020) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(133, useCombinedNoOverlap_);
}
if (((bitField3_ & 0x00200000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(134, interleaveBatchSize_);
}
if (((bitField4_ & 0x00000040) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(135, catchSigintSignal_);
}
if (((bitField3_ & 0x00100000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(136, interleaveSearch_);
}
if (((bitField3_ & 0x80000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(137, diversifyLnsParams_);
}
if (((bitField1_ & 0x00800000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(138, maxPresolveIterations_);
}
if (((bitField4_ & 0x00000010) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(139, useBranchingInLp_);
}
if (((bitField1_ & 0x40000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(140, expandElementConstraints_);
}
if (((bitField3_ & 0x00400000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(141, reduceMemoryUsageInInterleaveMode_);
}
if (((bitField3_ & 0x00000100) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(142, probingPeriodAtRoot_);
}
if (((bitField1_ & 0x80000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(143, expandAutomatonConstraints_);
}
if (((bitField4_ & 0x00000080) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(144, useImpliedBounds_);
}
if (((bitField2_ & 0x00000002) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(145, mergeNoOverlapWorkLimit_);
}
if (((bitField2_ & 0x00000004) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(146, mergeAtMostOneWorkLimit_);
}
if (((bitField2_ & 0x00000008) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(147, presolveSubstitutionLevel_);
}
if (((bitField2_ & 0x00400000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(148, maxAllDiffCutSize_);
}
if (((bitField3_ & 0x00040000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(149, stopAfterPresolve_);
}
if (((bitField3_ & 0x40000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(150, useRelaxationLns_);
}
if (((bitField1_ & 0x04000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(151, cpModelMaxNumPresolveOperations_);
}
if (((bitField2_ & 0x00800000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(152, addLinMaxCuts_);
}
if (((bitField3_ & 0x00000004) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(153, hintConflictLimit_);
}
if (((bitField2_ & 0x08000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(154, maxCutRoundsAtLevelZero_);
}
if (((bitField2_ & 0x20000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(155, cutMaxActiveCountValue_);
}
if (((bitField2_ & 0x40000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(156, cutActiveCountDecay_);
}
if (((bitField2_ & 0x80000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(157, cutCleanupTarget_);
}
if (((bitField2_ & 0x00000001) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(158, expandTableConstraints_);
}
if (((bitField1_ & 0x00000200) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(159, absoluteGapLimit_);
}
if (((bitField1_ & 0x00000400) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(160, relativeGapLimit_);
}
if (((bitField3_ & 0x00000040) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(161, exploitRelaxationSolution_);
}
if (((bitField1_ & 0x02000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(162, cpModelPostsolveWithFullSolver_);
}
if (((bitField1_ & 0x20000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(163, useSatInprocessing_);
}
if (((bitField3_ & 0x10000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(164, useFeasibilityPump_);
}
if (((bitField3_ & 0x20000000) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(165, fpRounding_);
}
if (((bitField4_ & 0x00000400) != 0)) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(166, mipAutomaticallyScaleVariables_);
}
size += unknownFields.getSerializedSize();
memoizedSize = size;
return size;
}
@java.lang.Override
public boolean equals(final java.lang.Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof com.google.ortools.sat.SatParameters)) {
return super.equals(obj);
}
com.google.ortools.sat.SatParameters other = (com.google.ortools.sat.SatParameters) obj;
if (hasPreferredVariableOrder() != other.hasPreferredVariableOrder()) return false;
if (hasPreferredVariableOrder()) {
if (preferredVariableOrder_ != other.preferredVariableOrder_) return false;
}
if (hasInitialPolarity() != other.hasInitialPolarity()) return false;
if (hasInitialPolarity()) {
if (initialPolarity_ != other.initialPolarity_) return false;
}
if (hasUsePhaseSaving() != other.hasUsePhaseSaving()) return false;
if (hasUsePhaseSaving()) {
if (getUsePhaseSaving()
!= other.getUsePhaseSaving()) return false;
}
if (hasRandomPolarityRatio() != other.hasRandomPolarityRatio()) return false;
if (hasRandomPolarityRatio()) {
if (java.lang.Double.doubleToLongBits(getRandomPolarityRatio())
!= java.lang.Double.doubleToLongBits(
other.getRandomPolarityRatio())) return false;
}
if (hasRandomBranchesRatio() != other.hasRandomBranchesRatio()) return false;
if (hasRandomBranchesRatio()) {
if (java.lang.Double.doubleToLongBits(getRandomBranchesRatio())
!= java.lang.Double.doubleToLongBits(
other.getRandomBranchesRatio())) return false;
}
if (hasUseErwaHeuristic() != other.hasUseErwaHeuristic()) return false;
if (hasUseErwaHeuristic()) {
if (getUseErwaHeuristic()
!= other.getUseErwaHeuristic()) return false;
}
if (hasInitialVariablesActivity() != other.hasInitialVariablesActivity()) return false;
if (hasInitialVariablesActivity()) {
if (java.lang.Double.doubleToLongBits(getInitialVariablesActivity())
!= java.lang.Double.doubleToLongBits(
other.getInitialVariablesActivity())) return false;
}
if (hasAlsoBumpVariablesInConflictReasons() != other.hasAlsoBumpVariablesInConflictReasons()) return false;
if (hasAlsoBumpVariablesInConflictReasons()) {
if (getAlsoBumpVariablesInConflictReasons()
!= other.getAlsoBumpVariablesInConflictReasons()) return false;
}
if (hasMinimizationAlgorithm() != other.hasMinimizationAlgorithm()) return false;
if (hasMinimizationAlgorithm()) {
if (minimizationAlgorithm_ != other.minimizationAlgorithm_) return false;
}
if (hasBinaryMinimizationAlgorithm() != other.hasBinaryMinimizationAlgorithm()) return false;
if (hasBinaryMinimizationAlgorithm()) {
if (binaryMinimizationAlgorithm_ != other.binaryMinimizationAlgorithm_) return false;
}
if (hasSubsumptionDuringConflictAnalysis() != other.hasSubsumptionDuringConflictAnalysis()) return false;
if (hasSubsumptionDuringConflictAnalysis()) {
if (getSubsumptionDuringConflictAnalysis()
!= other.getSubsumptionDuringConflictAnalysis()) return false;
}
if (hasClauseCleanupPeriod() != other.hasClauseCleanupPeriod()) return false;
if (hasClauseCleanupPeriod()) {
if (getClauseCleanupPeriod()
!= other.getClauseCleanupPeriod()) return false;
}
if (hasClauseCleanupTarget() != other.hasClauseCleanupTarget()) return false;
if (hasClauseCleanupTarget()) {
if (getClauseCleanupTarget()
!= other.getClauseCleanupTarget()) return false;
}
if (hasClauseCleanupProtection() != other.hasClauseCleanupProtection()) return false;
if (hasClauseCleanupProtection()) {
if (clauseCleanupProtection_ != other.clauseCleanupProtection_) return false;
}
if (hasClauseCleanupLbdBound() != other.hasClauseCleanupLbdBound()) return false;
if (hasClauseCleanupLbdBound()) {
if (getClauseCleanupLbdBound()
!= other.getClauseCleanupLbdBound()) return false;
}
if (hasClauseCleanupOrdering() != other.hasClauseCleanupOrdering()) return false;
if (hasClauseCleanupOrdering()) {
if (clauseCleanupOrdering_ != other.clauseCleanupOrdering_) return false;
}
if (hasPbCleanupIncrement() != other.hasPbCleanupIncrement()) return false;
if (hasPbCleanupIncrement()) {
if (getPbCleanupIncrement()
!= other.getPbCleanupIncrement()) return false;
}
if (hasPbCleanupRatio() != other.hasPbCleanupRatio()) return false;
if (hasPbCleanupRatio()) {
if (java.lang.Double.doubleToLongBits(getPbCleanupRatio())
!= java.lang.Double.doubleToLongBits(
other.getPbCleanupRatio())) return false;
}
if (hasMinimizeWithPropagationRestartPeriod() != other.hasMinimizeWithPropagationRestartPeriod()) return false;
if (hasMinimizeWithPropagationRestartPeriod()) {
if (getMinimizeWithPropagationRestartPeriod()
!= other.getMinimizeWithPropagationRestartPeriod()) return false;
}
if (hasMinimizeWithPropagationNumDecisions() != other.hasMinimizeWithPropagationNumDecisions()) return false;
if (hasMinimizeWithPropagationNumDecisions()) {
if (getMinimizeWithPropagationNumDecisions()
!= other.getMinimizeWithPropagationNumDecisions()) return false;
}
if (hasVariableActivityDecay() != other.hasVariableActivityDecay()) return false;
if (hasVariableActivityDecay()) {
if (java.lang.Double.doubleToLongBits(getVariableActivityDecay())
!= java.lang.Double.doubleToLongBits(
other.getVariableActivityDecay())) return false;
}
if (hasMaxVariableActivityValue() != other.hasMaxVariableActivityValue()) return false;
if (hasMaxVariableActivityValue()) {
if (java.lang.Double.doubleToLongBits(getMaxVariableActivityValue())
!= java.lang.Double.doubleToLongBits(
other.getMaxVariableActivityValue())) return false;
}
if (hasGlucoseMaxDecay() != other.hasGlucoseMaxDecay()) return false;
if (hasGlucoseMaxDecay()) {
if (java.lang.Double.doubleToLongBits(getGlucoseMaxDecay())
!= java.lang.Double.doubleToLongBits(
other.getGlucoseMaxDecay())) return false;
}
if (hasGlucoseDecayIncrement() != other.hasGlucoseDecayIncrement()) return false;
if (hasGlucoseDecayIncrement()) {
if (java.lang.Double.doubleToLongBits(getGlucoseDecayIncrement())
!= java.lang.Double.doubleToLongBits(
other.getGlucoseDecayIncrement())) return false;
}
if (hasGlucoseDecayIncrementPeriod() != other.hasGlucoseDecayIncrementPeriod()) return false;
if (hasGlucoseDecayIncrementPeriod()) {
if (getGlucoseDecayIncrementPeriod()
!= other.getGlucoseDecayIncrementPeriod()) return false;
}
if (hasClauseActivityDecay() != other.hasClauseActivityDecay()) return false;
if (hasClauseActivityDecay()) {
if (java.lang.Double.doubleToLongBits(getClauseActivityDecay())
!= java.lang.Double.doubleToLongBits(
other.getClauseActivityDecay())) return false;
}
if (hasMaxClauseActivityValue() != other.hasMaxClauseActivityValue()) return false;
if (hasMaxClauseActivityValue()) {
if (java.lang.Double.doubleToLongBits(getMaxClauseActivityValue())
!= java.lang.Double.doubleToLongBits(
other.getMaxClauseActivityValue())) return false;
}
if (!restartAlgorithms_.equals(other.restartAlgorithms_)) return false;
if (hasDefaultRestartAlgorithms() != other.hasDefaultRestartAlgorithms()) return false;
if (hasDefaultRestartAlgorithms()) {
if (!getDefaultRestartAlgorithms()
.equals(other.getDefaultRestartAlgorithms())) return false;
}
if (hasRestartPeriod() != other.hasRestartPeriod()) return false;
if (hasRestartPeriod()) {
if (getRestartPeriod()
!= other.getRestartPeriod()) return false;
}
if (hasRestartRunningWindowSize() != other.hasRestartRunningWindowSize()) return false;
if (hasRestartRunningWindowSize()) {
if (getRestartRunningWindowSize()
!= other.getRestartRunningWindowSize()) return false;
}
if (hasRestartDlAverageRatio() != other.hasRestartDlAverageRatio()) return false;
if (hasRestartDlAverageRatio()) {
if (java.lang.Double.doubleToLongBits(getRestartDlAverageRatio())
!= java.lang.Double.doubleToLongBits(
other.getRestartDlAverageRatio())) return false;
}
if (hasRestartLbdAverageRatio() != other.hasRestartLbdAverageRatio()) return false;
if (hasRestartLbdAverageRatio()) {
if (java.lang.Double.doubleToLongBits(getRestartLbdAverageRatio())
!= java.lang.Double.doubleToLongBits(
other.getRestartLbdAverageRatio())) return false;
}
if (hasUseBlockingRestart() != other.hasUseBlockingRestart()) return false;
if (hasUseBlockingRestart()) {
if (getUseBlockingRestart()
!= other.getUseBlockingRestart()) return false;
}
if (hasBlockingRestartWindowSize() != other.hasBlockingRestartWindowSize()) return false;
if (hasBlockingRestartWindowSize()) {
if (getBlockingRestartWindowSize()
!= other.getBlockingRestartWindowSize()) return false;
}
if (hasBlockingRestartMultiplier() != other.hasBlockingRestartMultiplier()) return false;
if (hasBlockingRestartMultiplier()) {
if (java.lang.Double.doubleToLongBits(getBlockingRestartMultiplier())
!= java.lang.Double.doubleToLongBits(
other.getBlockingRestartMultiplier())) return false;
}
if (hasNumConflictsBeforeStrategyChanges() != other.hasNumConflictsBeforeStrategyChanges()) return false;
if (hasNumConflictsBeforeStrategyChanges()) {
if (getNumConflictsBeforeStrategyChanges()
!= other.getNumConflictsBeforeStrategyChanges()) return false;
}
if (hasStrategyChangeIncreaseRatio() != other.hasStrategyChangeIncreaseRatio()) return false;
if (hasStrategyChangeIncreaseRatio()) {
if (java.lang.Double.doubleToLongBits(getStrategyChangeIncreaseRatio())
!= java.lang.Double.doubleToLongBits(
other.getStrategyChangeIncreaseRatio())) return false;
}
if (hasMaxTimeInSeconds() != other.hasMaxTimeInSeconds()) return false;
if (hasMaxTimeInSeconds()) {
if (java.lang.Double.doubleToLongBits(getMaxTimeInSeconds())
!= java.lang.Double.doubleToLongBits(
other.getMaxTimeInSeconds())) return false;
}
if (hasMaxDeterministicTime() != other.hasMaxDeterministicTime()) return false;
if (hasMaxDeterministicTime()) {
if (java.lang.Double.doubleToLongBits(getMaxDeterministicTime())
!= java.lang.Double.doubleToLongBits(
other.getMaxDeterministicTime())) return false;
}
if (hasMaxNumberOfConflicts() != other.hasMaxNumberOfConflicts()) return false;
if (hasMaxNumberOfConflicts()) {
if (getMaxNumberOfConflicts()
!= other.getMaxNumberOfConflicts()) return false;
}
if (hasMaxMemoryInMb() != other.hasMaxMemoryInMb()) return false;
if (hasMaxMemoryInMb()) {
if (getMaxMemoryInMb()
!= other.getMaxMemoryInMb()) return false;
}
if (hasAbsoluteGapLimit() != other.hasAbsoluteGapLimit()) return false;
if (hasAbsoluteGapLimit()) {
if (java.lang.Double.doubleToLongBits(getAbsoluteGapLimit())
!= java.lang.Double.doubleToLongBits(
other.getAbsoluteGapLimit())) return false;
}
if (hasRelativeGapLimit() != other.hasRelativeGapLimit()) return false;
if (hasRelativeGapLimit()) {
if (java.lang.Double.doubleToLongBits(getRelativeGapLimit())
!= java.lang.Double.doubleToLongBits(
other.getRelativeGapLimit())) return false;
}
if (hasTreatBinaryClausesSeparately() != other.hasTreatBinaryClausesSeparately()) return false;
if (hasTreatBinaryClausesSeparately()) {
if (getTreatBinaryClausesSeparately()
!= other.getTreatBinaryClausesSeparately()) return false;
}
if (hasRandomSeed() != other.hasRandomSeed()) return false;
if (hasRandomSeed()) {
if (getRandomSeed()
!= other.getRandomSeed()) return false;
}
if (hasLogSearchProgress() != other.hasLogSearchProgress()) return false;
if (hasLogSearchProgress()) {
if (getLogSearchProgress()
!= other.getLogSearchProgress()) return false;
}
if (hasUsePbResolution() != other.hasUsePbResolution()) return false;
if (hasUsePbResolution()) {
if (getUsePbResolution()
!= other.getUsePbResolution()) return false;
}
if (hasMinimizeReductionDuringPbResolution() != other.hasMinimizeReductionDuringPbResolution()) return false;
if (hasMinimizeReductionDuringPbResolution()) {
if (getMinimizeReductionDuringPbResolution()
!= other.getMinimizeReductionDuringPbResolution()) return false;
}
if (hasCountAssumptionLevelsInLbd() != other.hasCountAssumptionLevelsInLbd()) return false;
if (hasCountAssumptionLevelsInLbd()) {
if (getCountAssumptionLevelsInLbd()
!= other.getCountAssumptionLevelsInLbd()) return false;
}
if (hasPresolveBveThreshold() != other.hasPresolveBveThreshold()) return false;
if (hasPresolveBveThreshold()) {
if (getPresolveBveThreshold()
!= other.getPresolveBveThreshold()) return false;
}
if (hasPresolveBveClauseWeight() != other.hasPresolveBveClauseWeight()) return false;
if (hasPresolveBveClauseWeight()) {
if (getPresolveBveClauseWeight()
!= other.getPresolveBveClauseWeight()) return false;
}
if (hasPresolveProbingDeterministicTimeLimit() != other.hasPresolveProbingDeterministicTimeLimit()) return false;
if (hasPresolveProbingDeterministicTimeLimit()) {
if (java.lang.Double.doubleToLongBits(getPresolveProbingDeterministicTimeLimit())
!= java.lang.Double.doubleToLongBits(
other.getPresolveProbingDeterministicTimeLimit())) return false;
}
if (hasPresolveBlockedClause() != other.hasPresolveBlockedClause()) return false;
if (hasPresolveBlockedClause()) {
if (getPresolveBlockedClause()
!= other.getPresolveBlockedClause()) return false;
}
if (hasPresolveUseBva() != other.hasPresolveUseBva()) return false;
if (hasPresolveUseBva()) {
if (getPresolveUseBva()
!= other.getPresolveUseBva()) return false;
}
if (hasPresolveBvaThreshold() != other.hasPresolveBvaThreshold()) return false;
if (hasPresolveBvaThreshold()) {
if (getPresolveBvaThreshold()
!= other.getPresolveBvaThreshold()) return false;
}
if (hasMaxPresolveIterations() != other.hasMaxPresolveIterations()) return false;
if (hasMaxPresolveIterations()) {
if (getMaxPresolveIterations()
!= other.getMaxPresolveIterations()) return false;
}
if (hasCpModelPresolve() != other.hasCpModelPresolve()) return false;
if (hasCpModelPresolve()) {
if (getCpModelPresolve()
!= other.getCpModelPresolve()) return false;
}
if (hasCpModelPostsolveWithFullSolver() != other.hasCpModelPostsolveWithFullSolver()) return false;
if (hasCpModelPostsolveWithFullSolver()) {
if (getCpModelPostsolveWithFullSolver()
!= other.getCpModelPostsolveWithFullSolver()) return false;
}
if (hasCpModelMaxNumPresolveOperations() != other.hasCpModelMaxNumPresolveOperations()) return false;
if (hasCpModelMaxNumPresolveOperations()) {
if (getCpModelMaxNumPresolveOperations()
!= other.getCpModelMaxNumPresolveOperations()) return false;
}
if (hasCpModelProbingLevel() != other.hasCpModelProbingLevel()) return false;
if (hasCpModelProbingLevel()) {
if (getCpModelProbingLevel()
!= other.getCpModelProbingLevel()) return false;
}
if (hasCpModelUseSatPresolve() != other.hasCpModelUseSatPresolve()) return false;
if (hasCpModelUseSatPresolve()) {
if (getCpModelUseSatPresolve()
!= other.getCpModelUseSatPresolve()) return false;
}
if (hasUseSatInprocessing() != other.hasUseSatInprocessing()) return false;
if (hasUseSatInprocessing()) {
if (getUseSatInprocessing()
!= other.getUseSatInprocessing()) return false;
}
if (hasExpandElementConstraints() != other.hasExpandElementConstraints()) return false;
if (hasExpandElementConstraints()) {
if (getExpandElementConstraints()
!= other.getExpandElementConstraints()) return false;
}
if (hasExpandAutomatonConstraints() != other.hasExpandAutomatonConstraints()) return false;
if (hasExpandAutomatonConstraints()) {
if (getExpandAutomatonConstraints()
!= other.getExpandAutomatonConstraints()) return false;
}
if (hasExpandTableConstraints() != other.hasExpandTableConstraints()) return false;
if (hasExpandTableConstraints()) {
if (getExpandTableConstraints()
!= other.getExpandTableConstraints()) return false;
}
if (hasMergeNoOverlapWorkLimit() != other.hasMergeNoOverlapWorkLimit()) return false;
if (hasMergeNoOverlapWorkLimit()) {
if (java.lang.Double.doubleToLongBits(getMergeNoOverlapWorkLimit())
!= java.lang.Double.doubleToLongBits(
other.getMergeNoOverlapWorkLimit())) return false;
}
if (hasMergeAtMostOneWorkLimit() != other.hasMergeAtMostOneWorkLimit()) return false;
if (hasMergeAtMostOneWorkLimit()) {
if (java.lang.Double.doubleToLongBits(getMergeAtMostOneWorkLimit())
!= java.lang.Double.doubleToLongBits(
other.getMergeAtMostOneWorkLimit())) return false;
}
if (hasPresolveSubstitutionLevel() != other.hasPresolveSubstitutionLevel()) return false;
if (hasPresolveSubstitutionLevel()) {
if (getPresolveSubstitutionLevel()
!= other.getPresolveSubstitutionLevel()) return false;
}
if (hasUseOptimizationHints() != other.hasUseOptimizationHints()) return false;
if (hasUseOptimizationHints()) {
if (getUseOptimizationHints()
!= other.getUseOptimizationHints()) return false;
}
if (hasMinimizeCore() != other.hasMinimizeCore()) return false;
if (hasMinimizeCore()) {
if (getMinimizeCore()
!= other.getMinimizeCore()) return false;
}
if (hasFindMultipleCores() != other.hasFindMultipleCores()) return false;
if (hasFindMultipleCores()) {
if (getFindMultipleCores()
!= other.getFindMultipleCores()) return false;
}
if (hasCoverOptimization() != other.hasCoverOptimization()) return false;
if (hasCoverOptimization()) {
if (getCoverOptimization()
!= other.getCoverOptimization()) return false;
}
if (hasMaxSatAssumptionOrder() != other.hasMaxSatAssumptionOrder()) return false;
if (hasMaxSatAssumptionOrder()) {
if (maxSatAssumptionOrder_ != other.maxSatAssumptionOrder_) return false;
}
if (hasMaxSatReverseAssumptionOrder() != other.hasMaxSatReverseAssumptionOrder()) return false;
if (hasMaxSatReverseAssumptionOrder()) {
if (getMaxSatReverseAssumptionOrder()
!= other.getMaxSatReverseAssumptionOrder()) return false;
}
if (hasMaxSatStratification() != other.hasMaxSatStratification()) return false;
if (hasMaxSatStratification()) {
if (maxSatStratification_ != other.maxSatStratification_) return false;
}
if (hasUsePrecedencesInDisjunctiveConstraint() != other.hasUsePrecedencesInDisjunctiveConstraint()) return false;
if (hasUsePrecedencesInDisjunctiveConstraint()) {
if (getUsePrecedencesInDisjunctiveConstraint()
!= other.getUsePrecedencesInDisjunctiveConstraint()) return false;
}
if (hasUseOverloadCheckerInCumulativeConstraint() != other.hasUseOverloadCheckerInCumulativeConstraint()) return false;
if (hasUseOverloadCheckerInCumulativeConstraint()) {
if (getUseOverloadCheckerInCumulativeConstraint()
!= other.getUseOverloadCheckerInCumulativeConstraint()) return false;
}
if (hasUseTimetableEdgeFindingInCumulativeConstraint() != other.hasUseTimetableEdgeFindingInCumulativeConstraint()) return false;
if (hasUseTimetableEdgeFindingInCumulativeConstraint()) {
if (getUseTimetableEdgeFindingInCumulativeConstraint()
!= other.getUseTimetableEdgeFindingInCumulativeConstraint()) return false;
}
if (hasUseDisjunctiveConstraintInCumulativeConstraint() != other.hasUseDisjunctiveConstraintInCumulativeConstraint()) return false;
if (hasUseDisjunctiveConstraintInCumulativeConstraint()) {
if (getUseDisjunctiveConstraintInCumulativeConstraint()
!= other.getUseDisjunctiveConstraintInCumulativeConstraint()) return false;
}
if (hasLinearizationLevel() != other.hasLinearizationLevel()) return false;
if (hasLinearizationLevel()) {
if (getLinearizationLevel()
!= other.getLinearizationLevel()) return false;
}
if (hasBooleanEncodingLevel() != other.hasBooleanEncodingLevel()) return false;
if (hasBooleanEncodingLevel()) {
if (getBooleanEncodingLevel()
!= other.getBooleanEncodingLevel()) return false;
}
if (hasMaxNumCuts() != other.hasMaxNumCuts()) return false;
if (hasMaxNumCuts()) {
if (getMaxNumCuts()
!= other.getMaxNumCuts()) return false;
}
if (hasOnlyAddCutsAtLevelZero() != other.hasOnlyAddCutsAtLevelZero()) return false;
if (hasOnlyAddCutsAtLevelZero()) {
if (getOnlyAddCutsAtLevelZero()
!= other.getOnlyAddCutsAtLevelZero()) return false;
}
if (hasAddKnapsackCuts() != other.hasAddKnapsackCuts()) return false;
if (hasAddKnapsackCuts()) {
if (getAddKnapsackCuts()
!= other.getAddKnapsackCuts()) return false;
}
if (hasAddCgCuts() != other.hasAddCgCuts()) return false;
if (hasAddCgCuts()) {
if (getAddCgCuts()
!= other.getAddCgCuts()) return false;
}
if (hasAddMirCuts() != other.hasAddMirCuts()) return false;
if (hasAddMirCuts()) {
if (getAddMirCuts()
!= other.getAddMirCuts()) return false;
}
if (hasMaxAllDiffCutSize() != other.hasMaxAllDiffCutSize()) return false;
if (hasMaxAllDiffCutSize()) {
if (getMaxAllDiffCutSize()
!= other.getMaxAllDiffCutSize()) return false;
}
if (hasAddLinMaxCuts() != other.hasAddLinMaxCuts()) return false;
if (hasAddLinMaxCuts()) {
if (getAddLinMaxCuts()
!= other.getAddLinMaxCuts()) return false;
}
if (hasMaxIntegerRoundingScaling() != other.hasMaxIntegerRoundingScaling()) return false;
if (hasMaxIntegerRoundingScaling()) {
if (getMaxIntegerRoundingScaling()
!= other.getMaxIntegerRoundingScaling()) return false;
}
if (hasAddLpConstraintsLazily() != other.hasAddLpConstraintsLazily()) return false;
if (hasAddLpConstraintsLazily()) {
if (getAddLpConstraintsLazily()
!= other.getAddLpConstraintsLazily()) return false;
}
if (hasMinOrthogonalityForLpConstraints() != other.hasMinOrthogonalityForLpConstraints()) return false;
if (hasMinOrthogonalityForLpConstraints()) {
if (java.lang.Double.doubleToLongBits(getMinOrthogonalityForLpConstraints())
!= java.lang.Double.doubleToLongBits(
other.getMinOrthogonalityForLpConstraints())) return false;
}
if (hasMaxCutRoundsAtLevelZero() != other.hasMaxCutRoundsAtLevelZero()) return false;
if (hasMaxCutRoundsAtLevelZero()) {
if (getMaxCutRoundsAtLevelZero()
!= other.getMaxCutRoundsAtLevelZero()) return false;
}
if (hasMaxConsecutiveInactiveCount() != other.hasMaxConsecutiveInactiveCount()) return false;
if (hasMaxConsecutiveInactiveCount()) {
if (getMaxConsecutiveInactiveCount()
!= other.getMaxConsecutiveInactiveCount()) return false;
}
if (hasCutMaxActiveCountValue() != other.hasCutMaxActiveCountValue()) return false;
if (hasCutMaxActiveCountValue()) {
if (java.lang.Double.doubleToLongBits(getCutMaxActiveCountValue())
!= java.lang.Double.doubleToLongBits(
other.getCutMaxActiveCountValue())) return false;
}
if (hasCutActiveCountDecay() != other.hasCutActiveCountDecay()) return false;
if (hasCutActiveCountDecay()) {
if (java.lang.Double.doubleToLongBits(getCutActiveCountDecay())
!= java.lang.Double.doubleToLongBits(
other.getCutActiveCountDecay())) return false;
}
if (hasCutCleanupTarget() != other.hasCutCleanupTarget()) return false;
if (hasCutCleanupTarget()) {
if (getCutCleanupTarget()
!= other.getCutCleanupTarget()) return false;
}
if (hasNewConstraintsBatchSize() != other.hasNewConstraintsBatchSize()) return false;
if (hasNewConstraintsBatchSize()) {
if (getNewConstraintsBatchSize()
!= other.getNewConstraintsBatchSize()) return false;
}
if (hasSearchBranching() != other.hasSearchBranching()) return false;
if (hasSearchBranching()) {
if (searchBranching_ != other.searchBranching_) return false;
}
if (hasHintConflictLimit() != other.hasHintConflictLimit()) return false;
if (hasHintConflictLimit()) {
if (getHintConflictLimit()
!= other.getHintConflictLimit()) return false;
}
if (hasExploitIntegerLpSolution() != other.hasExploitIntegerLpSolution()) return false;
if (hasExploitIntegerLpSolution()) {
if (getExploitIntegerLpSolution()
!= other.getExploitIntegerLpSolution()) return false;
}
if (hasExploitAllLpSolution() != other.hasExploitAllLpSolution()) return false;
if (hasExploitAllLpSolution()) {
if (getExploitAllLpSolution()
!= other.getExploitAllLpSolution()) return false;
}
if (hasExploitBestSolution() != other.hasExploitBestSolution()) return false;
if (hasExploitBestSolution()) {
if (getExploitBestSolution()
!= other.getExploitBestSolution()) return false;
}
if (hasExploitRelaxationSolution() != other.hasExploitRelaxationSolution()) return false;
if (hasExploitRelaxationSolution()) {
if (getExploitRelaxationSolution()
!= other.getExploitRelaxationSolution()) return false;
}
if (hasExploitObjective() != other.hasExploitObjective()) return false;
if (hasExploitObjective()) {
if (getExploitObjective()
!= other.getExploitObjective()) return false;
}
if (hasProbingPeriodAtRoot() != other.hasProbingPeriodAtRoot()) return false;
if (hasProbingPeriodAtRoot()) {
if (getProbingPeriodAtRoot()
!= other.getProbingPeriodAtRoot()) return false;
}
if (hasPseudoCostReliabilityThreshold() != other.hasPseudoCostReliabilityThreshold()) return false;
if (hasPseudoCostReliabilityThreshold()) {
if (getPseudoCostReliabilityThreshold()
!= other.getPseudoCostReliabilityThreshold()) return false;
}
if (hasOptimizeWithCore() != other.hasOptimizeWithCore()) return false;
if (hasOptimizeWithCore()) {
if (getOptimizeWithCore()
!= other.getOptimizeWithCore()) return false;
}
if (hasBinarySearchNumConflicts() != other.hasBinarySearchNumConflicts()) return false;
if (hasBinarySearchNumConflicts()) {
if (getBinarySearchNumConflicts()
!= other.getBinarySearchNumConflicts()) return false;
}
if (hasOptimizeWithMaxHs() != other.hasOptimizeWithMaxHs()) return false;
if (hasOptimizeWithMaxHs()) {
if (getOptimizeWithMaxHs()
!= other.getOptimizeWithMaxHs()) return false;
}
if (hasEnumerateAllSolutions() != other.hasEnumerateAllSolutions()) return false;
if (hasEnumerateAllSolutions()) {
if (getEnumerateAllSolutions()
!= other.getEnumerateAllSolutions()) return false;
}
if (hasFillTightenedDomainsInResponse() != other.hasFillTightenedDomainsInResponse()) return false;
if (hasFillTightenedDomainsInResponse()) {
if (getFillTightenedDomainsInResponse()
!= other.getFillTightenedDomainsInResponse()) return false;
}
if (hasInstantiateAllVariables() != other.hasInstantiateAllVariables()) return false;
if (hasInstantiateAllVariables()) {
if (getInstantiateAllVariables()
!= other.getInstantiateAllVariables()) return false;
}
if (hasAutoDetectGreaterThanAtLeastOneOf() != other.hasAutoDetectGreaterThanAtLeastOneOf()) return false;
if (hasAutoDetectGreaterThanAtLeastOneOf()) {
if (getAutoDetectGreaterThanAtLeastOneOf()
!= other.getAutoDetectGreaterThanAtLeastOneOf()) return false;
}
if (hasStopAfterFirstSolution() != other.hasStopAfterFirstSolution()) return false;
if (hasStopAfterFirstSolution()) {
if (getStopAfterFirstSolution()
!= other.getStopAfterFirstSolution()) return false;
}
if (hasStopAfterPresolve() != other.hasStopAfterPresolve()) return false;
if (hasStopAfterPresolve()) {
if (getStopAfterPresolve()
!= other.getStopAfterPresolve()) return false;
}
if (hasNumSearchWorkers() != other.hasNumSearchWorkers()) return false;
if (hasNumSearchWorkers()) {
if (getNumSearchWorkers()
!= other.getNumSearchWorkers()) return false;
}
if (hasInterleaveSearch() != other.hasInterleaveSearch()) return false;
if (hasInterleaveSearch()) {
if (getInterleaveSearch()
!= other.getInterleaveSearch()) return false;
}
if (hasInterleaveBatchSize() != other.hasInterleaveBatchSize()) return false;
if (hasInterleaveBatchSize()) {
if (getInterleaveBatchSize()
!= other.getInterleaveBatchSize()) return false;
}
if (hasReduceMemoryUsageInInterleaveMode() != other.hasReduceMemoryUsageInInterleaveMode()) return false;
if (hasReduceMemoryUsageInInterleaveMode()) {
if (getReduceMemoryUsageInInterleaveMode()
!= other.getReduceMemoryUsageInInterleaveMode()) return false;
}
if (hasShareObjectiveBounds() != other.hasShareObjectiveBounds()) return false;
if (hasShareObjectiveBounds()) {
if (getShareObjectiveBounds()
!= other.getShareObjectiveBounds()) return false;
}
if (hasShareLevelZeroBounds() != other.hasShareLevelZeroBounds()) return false;
if (hasShareLevelZeroBounds()) {
if (getShareLevelZeroBounds()
!= other.getShareLevelZeroBounds()) return false;
}
if (hasUseLnsOnly() != other.hasUseLnsOnly()) return false;
if (hasUseLnsOnly()) {
if (getUseLnsOnly()
!= other.getUseLnsOnly()) return false;
}
if (hasLnsFocusOnDecisionVariables() != other.hasLnsFocusOnDecisionVariables()) return false;
if (hasLnsFocusOnDecisionVariables()) {
if (getLnsFocusOnDecisionVariables()
!= other.getLnsFocusOnDecisionVariables()) return false;
}
if (hasUseRinsLns() != other.hasUseRinsLns()) return false;
if (hasUseRinsLns()) {
if (getUseRinsLns()
!= other.getUseRinsLns()) return false;
}
if (hasUseFeasibilityPump() != other.hasUseFeasibilityPump()) return false;
if (hasUseFeasibilityPump()) {
if (getUseFeasibilityPump()
!= other.getUseFeasibilityPump()) return false;
}
if (hasFpRounding() != other.hasFpRounding()) return false;
if (hasFpRounding()) {
if (fpRounding_ != other.fpRounding_) return false;
}
if (hasUseRelaxationLns() != other.hasUseRelaxationLns()) return false;
if (hasUseRelaxationLns()) {
if (getUseRelaxationLns()
!= other.getUseRelaxationLns()) return false;
}
if (hasDiversifyLnsParams() != other.hasDiversifyLnsParams()) return false;
if (hasDiversifyLnsParams()) {
if (getDiversifyLnsParams()
!= other.getDiversifyLnsParams()) return false;
}
if (hasRandomizeSearch() != other.hasRandomizeSearch()) return false;
if (hasRandomizeSearch()) {
if (getRandomizeSearch()
!= other.getRandomizeSearch()) return false;
}
if (hasSearchRandomizationTolerance() != other.hasSearchRandomizationTolerance()) return false;
if (hasSearchRandomizationTolerance()) {
if (getSearchRandomizationTolerance()
!= other.getSearchRandomizationTolerance()) return false;
}
if (hasUseOptionalVariables() != other.hasUseOptionalVariables()) return false;
if (hasUseOptionalVariables()) {
if (getUseOptionalVariables()
!= other.getUseOptionalVariables()) return false;
}
if (hasUseExactLpReason() != other.hasUseExactLpReason()) return false;
if (hasUseExactLpReason()) {
if (getUseExactLpReason()
!= other.getUseExactLpReason()) return false;
}
if (hasUseBranchingInLp() != other.hasUseBranchingInLp()) return false;
if (hasUseBranchingInLp()) {
if (getUseBranchingInLp()
!= other.getUseBranchingInLp()) return false;
}
if (hasUseCombinedNoOverlap() != other.hasUseCombinedNoOverlap()) return false;
if (hasUseCombinedNoOverlap()) {
if (getUseCombinedNoOverlap()
!= other.getUseCombinedNoOverlap()) return false;
}
if (hasCatchSigintSignal() != other.hasCatchSigintSignal()) return false;
if (hasCatchSigintSignal()) {
if (getCatchSigintSignal()
!= other.getCatchSigintSignal()) return false;
}
if (hasUseImpliedBounds() != other.hasUseImpliedBounds()) return false;
if (hasUseImpliedBounds()) {
if (getUseImpliedBounds()
!= other.getUseImpliedBounds()) return false;
}
if (hasMipMaxBound() != other.hasMipMaxBound()) return false;
if (hasMipMaxBound()) {
if (java.lang.Double.doubleToLongBits(getMipMaxBound())
!= java.lang.Double.doubleToLongBits(
other.getMipMaxBound())) return false;
}
if (hasMipVarScaling() != other.hasMipVarScaling()) return false;
if (hasMipVarScaling()) {
if (java.lang.Double.doubleToLongBits(getMipVarScaling())
!= java.lang.Double.doubleToLongBits(
other.getMipVarScaling())) return false;
}
if (hasMipAutomaticallyScaleVariables() != other.hasMipAutomaticallyScaleVariables()) return false;
if (hasMipAutomaticallyScaleVariables()) {
if (getMipAutomaticallyScaleVariables()
!= other.getMipAutomaticallyScaleVariables()) return false;
}
if (hasMipWantedPrecision() != other.hasMipWantedPrecision()) return false;
if (hasMipWantedPrecision()) {
if (java.lang.Double.doubleToLongBits(getMipWantedPrecision())
!= java.lang.Double.doubleToLongBits(
other.getMipWantedPrecision())) return false;
}
if (hasMipMaxActivityExponent() != other.hasMipMaxActivityExponent()) return false;
if (hasMipMaxActivityExponent()) {
if (getMipMaxActivityExponent()
!= other.getMipMaxActivityExponent()) return false;
}
if (hasMipCheckPrecision() != other.hasMipCheckPrecision()) return false;
if (hasMipCheckPrecision()) {
if (java.lang.Double.doubleToLongBits(getMipCheckPrecision())
!= java.lang.Double.doubleToLongBits(
other.getMipCheckPrecision())) return false;
}
if (!unknownFields.equals(other.unknownFields)) return false;
return true;
}
@java.lang.Override
public int hashCode() {
if (memoizedHashCode != 0) {
return memoizedHashCode;
}
int hash = 41;
hash = (19 * hash) + getDescriptor().hashCode();
if (hasPreferredVariableOrder()) {
hash = (37 * hash) + PREFERRED_VARIABLE_ORDER_FIELD_NUMBER;
hash = (53 * hash) + preferredVariableOrder_;
}
if (hasInitialPolarity()) {
hash = (37 * hash) + INITIAL_POLARITY_FIELD_NUMBER;
hash = (53 * hash) + initialPolarity_;
}
if (hasUsePhaseSaving()) {
hash = (37 * hash) + USE_PHASE_SAVING_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUsePhaseSaving());
}
if (hasRandomPolarityRatio()) {
hash = (37 * hash) + RANDOM_POLARITY_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getRandomPolarityRatio()));
}
if (hasRandomBranchesRatio()) {
hash = (37 * hash) + RANDOM_BRANCHES_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getRandomBranchesRatio()));
}
if (hasUseErwaHeuristic()) {
hash = (37 * hash) + USE_ERWA_HEURISTIC_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseErwaHeuristic());
}
if (hasInitialVariablesActivity()) {
hash = (37 * hash) + INITIAL_VARIABLES_ACTIVITY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getInitialVariablesActivity()));
}
if (hasAlsoBumpVariablesInConflictReasons()) {
hash = (37 * hash) + ALSO_BUMP_VARIABLES_IN_CONFLICT_REASONS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getAlsoBumpVariablesInConflictReasons());
}
if (hasMinimizationAlgorithm()) {
hash = (37 * hash) + MINIMIZATION_ALGORITHM_FIELD_NUMBER;
hash = (53 * hash) + minimizationAlgorithm_;
}
if (hasBinaryMinimizationAlgorithm()) {
hash = (37 * hash) + BINARY_MINIMIZATION_ALGORITHM_FIELD_NUMBER;
hash = (53 * hash) + binaryMinimizationAlgorithm_;
}
if (hasSubsumptionDuringConflictAnalysis()) {
hash = (37 * hash) + SUBSUMPTION_DURING_CONFLICT_ANALYSIS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getSubsumptionDuringConflictAnalysis());
}
if (hasClauseCleanupPeriod()) {
hash = (37 * hash) + CLAUSE_CLEANUP_PERIOD_FIELD_NUMBER;
hash = (53 * hash) + getClauseCleanupPeriod();
}
if (hasClauseCleanupTarget()) {
hash = (37 * hash) + CLAUSE_CLEANUP_TARGET_FIELD_NUMBER;
hash = (53 * hash) + getClauseCleanupTarget();
}
if (hasClauseCleanupProtection()) {
hash = (37 * hash) + CLAUSE_CLEANUP_PROTECTION_FIELD_NUMBER;
hash = (53 * hash) + clauseCleanupProtection_;
}
if (hasClauseCleanupLbdBound()) {
hash = (37 * hash) + CLAUSE_CLEANUP_LBD_BOUND_FIELD_NUMBER;
hash = (53 * hash) + getClauseCleanupLbdBound();
}
if (hasClauseCleanupOrdering()) {
hash = (37 * hash) + CLAUSE_CLEANUP_ORDERING_FIELD_NUMBER;
hash = (53 * hash) + clauseCleanupOrdering_;
}
if (hasPbCleanupIncrement()) {
hash = (37 * hash) + PB_CLEANUP_INCREMENT_FIELD_NUMBER;
hash = (53 * hash) + getPbCleanupIncrement();
}
if (hasPbCleanupRatio()) {
hash = (37 * hash) + PB_CLEANUP_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getPbCleanupRatio()));
}
if (hasMinimizeWithPropagationRestartPeriod()) {
hash = (37 * hash) + MINIMIZE_WITH_PROPAGATION_RESTART_PERIOD_FIELD_NUMBER;
hash = (53 * hash) + getMinimizeWithPropagationRestartPeriod();
}
if (hasMinimizeWithPropagationNumDecisions()) {
hash = (37 * hash) + MINIMIZE_WITH_PROPAGATION_NUM_DECISIONS_FIELD_NUMBER;
hash = (53 * hash) + getMinimizeWithPropagationNumDecisions();
}
if (hasVariableActivityDecay()) {
hash = (37 * hash) + VARIABLE_ACTIVITY_DECAY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getVariableActivityDecay()));
}
if (hasMaxVariableActivityValue()) {
hash = (37 * hash) + MAX_VARIABLE_ACTIVITY_VALUE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMaxVariableActivityValue()));
}
if (hasGlucoseMaxDecay()) {
hash = (37 * hash) + GLUCOSE_MAX_DECAY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getGlucoseMaxDecay()));
}
if (hasGlucoseDecayIncrement()) {
hash = (37 * hash) + GLUCOSE_DECAY_INCREMENT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getGlucoseDecayIncrement()));
}
if (hasGlucoseDecayIncrementPeriod()) {
hash = (37 * hash) + GLUCOSE_DECAY_INCREMENT_PERIOD_FIELD_NUMBER;
hash = (53 * hash) + getGlucoseDecayIncrementPeriod();
}
if (hasClauseActivityDecay()) {
hash = (37 * hash) + CLAUSE_ACTIVITY_DECAY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getClauseActivityDecay()));
}
if (hasMaxClauseActivityValue()) {
hash = (37 * hash) + MAX_CLAUSE_ACTIVITY_VALUE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMaxClauseActivityValue()));
}
if (getRestartAlgorithmsCount() > 0) {
hash = (37 * hash) + RESTART_ALGORITHMS_FIELD_NUMBER;
hash = (53 * hash) + restartAlgorithms_.hashCode();
}
if (hasDefaultRestartAlgorithms()) {
hash = (37 * hash) + DEFAULT_RESTART_ALGORITHMS_FIELD_NUMBER;
hash = (53 * hash) + getDefaultRestartAlgorithms().hashCode();
}
if (hasRestartPeriod()) {
hash = (37 * hash) + RESTART_PERIOD_FIELD_NUMBER;
hash = (53 * hash) + getRestartPeriod();
}
if (hasRestartRunningWindowSize()) {
hash = (37 * hash) + RESTART_RUNNING_WINDOW_SIZE_FIELD_NUMBER;
hash = (53 * hash) + getRestartRunningWindowSize();
}
if (hasRestartDlAverageRatio()) {
hash = (37 * hash) + RESTART_DL_AVERAGE_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getRestartDlAverageRatio()));
}
if (hasRestartLbdAverageRatio()) {
hash = (37 * hash) + RESTART_LBD_AVERAGE_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getRestartLbdAverageRatio()));
}
if (hasUseBlockingRestart()) {
hash = (37 * hash) + USE_BLOCKING_RESTART_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseBlockingRestart());
}
if (hasBlockingRestartWindowSize()) {
hash = (37 * hash) + BLOCKING_RESTART_WINDOW_SIZE_FIELD_NUMBER;
hash = (53 * hash) + getBlockingRestartWindowSize();
}
if (hasBlockingRestartMultiplier()) {
hash = (37 * hash) + BLOCKING_RESTART_MULTIPLIER_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getBlockingRestartMultiplier()));
}
if (hasNumConflictsBeforeStrategyChanges()) {
hash = (37 * hash) + NUM_CONFLICTS_BEFORE_STRATEGY_CHANGES_FIELD_NUMBER;
hash = (53 * hash) + getNumConflictsBeforeStrategyChanges();
}
if (hasStrategyChangeIncreaseRatio()) {
hash = (37 * hash) + STRATEGY_CHANGE_INCREASE_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getStrategyChangeIncreaseRatio()));
}
if (hasMaxTimeInSeconds()) {
hash = (37 * hash) + MAX_TIME_IN_SECONDS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMaxTimeInSeconds()));
}
if (hasMaxDeterministicTime()) {
hash = (37 * hash) + MAX_DETERMINISTIC_TIME_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMaxDeterministicTime()));
}
if (hasMaxNumberOfConflicts()) {
hash = (37 * hash) + MAX_NUMBER_OF_CONFLICTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
getMaxNumberOfConflicts());
}
if (hasMaxMemoryInMb()) {
hash = (37 * hash) + MAX_MEMORY_IN_MB_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
getMaxMemoryInMb());
}
if (hasAbsoluteGapLimit()) {
hash = (37 * hash) + ABSOLUTE_GAP_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getAbsoluteGapLimit()));
}
if (hasRelativeGapLimit()) {
hash = (37 * hash) + RELATIVE_GAP_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getRelativeGapLimit()));
}
if (hasTreatBinaryClausesSeparately()) {
hash = (37 * hash) + TREAT_BINARY_CLAUSES_SEPARATELY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getTreatBinaryClausesSeparately());
}
if (hasRandomSeed()) {
hash = (37 * hash) + RANDOM_SEED_FIELD_NUMBER;
hash = (53 * hash) + getRandomSeed();
}
if (hasLogSearchProgress()) {
hash = (37 * hash) + LOG_SEARCH_PROGRESS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getLogSearchProgress());
}
if (hasUsePbResolution()) {
hash = (37 * hash) + USE_PB_RESOLUTION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUsePbResolution());
}
if (hasMinimizeReductionDuringPbResolution()) {
hash = (37 * hash) + MINIMIZE_REDUCTION_DURING_PB_RESOLUTION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getMinimizeReductionDuringPbResolution());
}
if (hasCountAssumptionLevelsInLbd()) {
hash = (37 * hash) + COUNT_ASSUMPTION_LEVELS_IN_LBD_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getCountAssumptionLevelsInLbd());
}
if (hasPresolveBveThreshold()) {
hash = (37 * hash) + PRESOLVE_BVE_THRESHOLD_FIELD_NUMBER;
hash = (53 * hash) + getPresolveBveThreshold();
}
if (hasPresolveBveClauseWeight()) {
hash = (37 * hash) + PRESOLVE_BVE_CLAUSE_WEIGHT_FIELD_NUMBER;
hash = (53 * hash) + getPresolveBveClauseWeight();
}
if (hasPresolveProbingDeterministicTimeLimit()) {
hash = (37 * hash) + PRESOLVE_PROBING_DETERMINISTIC_TIME_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getPresolveProbingDeterministicTimeLimit()));
}
if (hasPresolveBlockedClause()) {
hash = (37 * hash) + PRESOLVE_BLOCKED_CLAUSE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getPresolveBlockedClause());
}
if (hasPresolveUseBva()) {
hash = (37 * hash) + PRESOLVE_USE_BVA_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getPresolveUseBva());
}
if (hasPresolveBvaThreshold()) {
hash = (37 * hash) + PRESOLVE_BVA_THRESHOLD_FIELD_NUMBER;
hash = (53 * hash) + getPresolveBvaThreshold();
}
if (hasMaxPresolveIterations()) {
hash = (37 * hash) + MAX_PRESOLVE_ITERATIONS_FIELD_NUMBER;
hash = (53 * hash) + getMaxPresolveIterations();
}
if (hasCpModelPresolve()) {
hash = (37 * hash) + CP_MODEL_PRESOLVE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getCpModelPresolve());
}
if (hasCpModelPostsolveWithFullSolver()) {
hash = (37 * hash) + CP_MODEL_POSTSOLVE_WITH_FULL_SOLVER_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getCpModelPostsolveWithFullSolver());
}
if (hasCpModelMaxNumPresolveOperations()) {
hash = (37 * hash) + CP_MODEL_MAX_NUM_PRESOLVE_OPERATIONS_FIELD_NUMBER;
hash = (53 * hash) + getCpModelMaxNumPresolveOperations();
}
if (hasCpModelProbingLevel()) {
hash = (37 * hash) + CP_MODEL_PROBING_LEVEL_FIELD_NUMBER;
hash = (53 * hash) + getCpModelProbingLevel();
}
if (hasCpModelUseSatPresolve()) {
hash = (37 * hash) + CP_MODEL_USE_SAT_PRESOLVE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getCpModelUseSatPresolve());
}
if (hasUseSatInprocessing()) {
hash = (37 * hash) + USE_SAT_INPROCESSING_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseSatInprocessing());
}
if (hasExpandElementConstraints()) {
hash = (37 * hash) + EXPAND_ELEMENT_CONSTRAINTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExpandElementConstraints());
}
if (hasExpandAutomatonConstraints()) {
hash = (37 * hash) + EXPAND_AUTOMATON_CONSTRAINTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExpandAutomatonConstraints());
}
if (hasExpandTableConstraints()) {
hash = (37 * hash) + EXPAND_TABLE_CONSTRAINTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExpandTableConstraints());
}
if (hasMergeNoOverlapWorkLimit()) {
hash = (37 * hash) + MERGE_NO_OVERLAP_WORK_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMergeNoOverlapWorkLimit()));
}
if (hasMergeAtMostOneWorkLimit()) {
hash = (37 * hash) + MERGE_AT_MOST_ONE_WORK_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMergeAtMostOneWorkLimit()));
}
if (hasPresolveSubstitutionLevel()) {
hash = (37 * hash) + PRESOLVE_SUBSTITUTION_LEVEL_FIELD_NUMBER;
hash = (53 * hash) + getPresolveSubstitutionLevel();
}
if (hasUseOptimizationHints()) {
hash = (37 * hash) + USE_OPTIMIZATION_HINTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseOptimizationHints());
}
if (hasMinimizeCore()) {
hash = (37 * hash) + MINIMIZE_CORE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getMinimizeCore());
}
if (hasFindMultipleCores()) {
hash = (37 * hash) + FIND_MULTIPLE_CORES_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getFindMultipleCores());
}
if (hasCoverOptimization()) {
hash = (37 * hash) + COVER_OPTIMIZATION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getCoverOptimization());
}
if (hasMaxSatAssumptionOrder()) {
hash = (37 * hash) + MAX_SAT_ASSUMPTION_ORDER_FIELD_NUMBER;
hash = (53 * hash) + maxSatAssumptionOrder_;
}
if (hasMaxSatReverseAssumptionOrder()) {
hash = (37 * hash) + MAX_SAT_REVERSE_ASSUMPTION_ORDER_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getMaxSatReverseAssumptionOrder());
}
if (hasMaxSatStratification()) {
hash = (37 * hash) + MAX_SAT_STRATIFICATION_FIELD_NUMBER;
hash = (53 * hash) + maxSatStratification_;
}
if (hasUsePrecedencesInDisjunctiveConstraint()) {
hash = (37 * hash) + USE_PRECEDENCES_IN_DISJUNCTIVE_CONSTRAINT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUsePrecedencesInDisjunctiveConstraint());
}
if (hasUseOverloadCheckerInCumulativeConstraint()) {
hash = (37 * hash) + USE_OVERLOAD_CHECKER_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseOverloadCheckerInCumulativeConstraint());
}
if (hasUseTimetableEdgeFindingInCumulativeConstraint()) {
hash = (37 * hash) + USE_TIMETABLE_EDGE_FINDING_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseTimetableEdgeFindingInCumulativeConstraint());
}
if (hasUseDisjunctiveConstraintInCumulativeConstraint()) {
hash = (37 * hash) + USE_DISJUNCTIVE_CONSTRAINT_IN_CUMULATIVE_CONSTRAINT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseDisjunctiveConstraintInCumulativeConstraint());
}
if (hasLinearizationLevel()) {
hash = (37 * hash) + LINEARIZATION_LEVEL_FIELD_NUMBER;
hash = (53 * hash) + getLinearizationLevel();
}
if (hasBooleanEncodingLevel()) {
hash = (37 * hash) + BOOLEAN_ENCODING_LEVEL_FIELD_NUMBER;
hash = (53 * hash) + getBooleanEncodingLevel();
}
if (hasMaxNumCuts()) {
hash = (37 * hash) + MAX_NUM_CUTS_FIELD_NUMBER;
hash = (53 * hash) + getMaxNumCuts();
}
if (hasOnlyAddCutsAtLevelZero()) {
hash = (37 * hash) + ONLY_ADD_CUTS_AT_LEVEL_ZERO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getOnlyAddCutsAtLevelZero());
}
if (hasAddKnapsackCuts()) {
hash = (37 * hash) + ADD_KNAPSACK_CUTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getAddKnapsackCuts());
}
if (hasAddCgCuts()) {
hash = (37 * hash) + ADD_CG_CUTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getAddCgCuts());
}
if (hasAddMirCuts()) {
hash = (37 * hash) + ADD_MIR_CUTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getAddMirCuts());
}
if (hasMaxAllDiffCutSize()) {
hash = (37 * hash) + MAX_ALL_DIFF_CUT_SIZE_FIELD_NUMBER;
hash = (53 * hash) + getMaxAllDiffCutSize();
}
if (hasAddLinMaxCuts()) {
hash = (37 * hash) + ADD_LIN_MAX_CUTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getAddLinMaxCuts());
}
if (hasMaxIntegerRoundingScaling()) {
hash = (37 * hash) + MAX_INTEGER_ROUNDING_SCALING_FIELD_NUMBER;
hash = (53 * hash) + getMaxIntegerRoundingScaling();
}
if (hasAddLpConstraintsLazily()) {
hash = (37 * hash) + ADD_LP_CONSTRAINTS_LAZILY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getAddLpConstraintsLazily());
}
if (hasMinOrthogonalityForLpConstraints()) {
hash = (37 * hash) + MIN_ORTHOGONALITY_FOR_LP_CONSTRAINTS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMinOrthogonalityForLpConstraints()));
}
if (hasMaxCutRoundsAtLevelZero()) {
hash = (37 * hash) + MAX_CUT_ROUNDS_AT_LEVEL_ZERO_FIELD_NUMBER;
hash = (53 * hash) + getMaxCutRoundsAtLevelZero();
}
if (hasMaxConsecutiveInactiveCount()) {
hash = (37 * hash) + MAX_CONSECUTIVE_INACTIVE_COUNT_FIELD_NUMBER;
hash = (53 * hash) + getMaxConsecutiveInactiveCount();
}
if (hasCutMaxActiveCountValue()) {
hash = (37 * hash) + CUT_MAX_ACTIVE_COUNT_VALUE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getCutMaxActiveCountValue()));
}
if (hasCutActiveCountDecay()) {
hash = (37 * hash) + CUT_ACTIVE_COUNT_DECAY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getCutActiveCountDecay()));
}
if (hasCutCleanupTarget()) {
hash = (37 * hash) + CUT_CLEANUP_TARGET_FIELD_NUMBER;
hash = (53 * hash) + getCutCleanupTarget();
}
if (hasNewConstraintsBatchSize()) {
hash = (37 * hash) + NEW_CONSTRAINTS_BATCH_SIZE_FIELD_NUMBER;
hash = (53 * hash) + getNewConstraintsBatchSize();
}
if (hasSearchBranching()) {
hash = (37 * hash) + SEARCH_BRANCHING_FIELD_NUMBER;
hash = (53 * hash) + searchBranching_;
}
if (hasHintConflictLimit()) {
hash = (37 * hash) + HINT_CONFLICT_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + getHintConflictLimit();
}
if (hasExploitIntegerLpSolution()) {
hash = (37 * hash) + EXPLOIT_INTEGER_LP_SOLUTION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExploitIntegerLpSolution());
}
if (hasExploitAllLpSolution()) {
hash = (37 * hash) + EXPLOIT_ALL_LP_SOLUTION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExploitAllLpSolution());
}
if (hasExploitBestSolution()) {
hash = (37 * hash) + EXPLOIT_BEST_SOLUTION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExploitBestSolution());
}
if (hasExploitRelaxationSolution()) {
hash = (37 * hash) + EXPLOIT_RELAXATION_SOLUTION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExploitRelaxationSolution());
}
if (hasExploitObjective()) {
hash = (37 * hash) + EXPLOIT_OBJECTIVE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getExploitObjective());
}
if (hasProbingPeriodAtRoot()) {
hash = (37 * hash) + PROBING_PERIOD_AT_ROOT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
getProbingPeriodAtRoot());
}
if (hasPseudoCostReliabilityThreshold()) {
hash = (37 * hash) + PSEUDO_COST_RELIABILITY_THRESHOLD_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
getPseudoCostReliabilityThreshold());
}
if (hasOptimizeWithCore()) {
hash = (37 * hash) + OPTIMIZE_WITH_CORE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getOptimizeWithCore());
}
if (hasBinarySearchNumConflicts()) {
hash = (37 * hash) + BINARY_SEARCH_NUM_CONFLICTS_FIELD_NUMBER;
hash = (53 * hash) + getBinarySearchNumConflicts();
}
if (hasOptimizeWithMaxHs()) {
hash = (37 * hash) + OPTIMIZE_WITH_MAX_HS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getOptimizeWithMaxHs());
}
if (hasEnumerateAllSolutions()) {
hash = (37 * hash) + ENUMERATE_ALL_SOLUTIONS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getEnumerateAllSolutions());
}
if (hasFillTightenedDomainsInResponse()) {
hash = (37 * hash) + FILL_TIGHTENED_DOMAINS_IN_RESPONSE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getFillTightenedDomainsInResponse());
}
if (hasInstantiateAllVariables()) {
hash = (37 * hash) + INSTANTIATE_ALL_VARIABLES_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getInstantiateAllVariables());
}
if (hasAutoDetectGreaterThanAtLeastOneOf()) {
hash = (37 * hash) + AUTO_DETECT_GREATER_THAN_AT_LEAST_ONE_OF_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getAutoDetectGreaterThanAtLeastOneOf());
}
if (hasStopAfterFirstSolution()) {
hash = (37 * hash) + STOP_AFTER_FIRST_SOLUTION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getStopAfterFirstSolution());
}
if (hasStopAfterPresolve()) {
hash = (37 * hash) + STOP_AFTER_PRESOLVE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getStopAfterPresolve());
}
if (hasNumSearchWorkers()) {
hash = (37 * hash) + NUM_SEARCH_WORKERS_FIELD_NUMBER;
hash = (53 * hash) + getNumSearchWorkers();
}
if (hasInterleaveSearch()) {
hash = (37 * hash) + INTERLEAVE_SEARCH_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getInterleaveSearch());
}
if (hasInterleaveBatchSize()) {
hash = (37 * hash) + INTERLEAVE_BATCH_SIZE_FIELD_NUMBER;
hash = (53 * hash) + getInterleaveBatchSize();
}
if (hasReduceMemoryUsageInInterleaveMode()) {
hash = (37 * hash) + REDUCE_MEMORY_USAGE_IN_INTERLEAVE_MODE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getReduceMemoryUsageInInterleaveMode());
}
if (hasShareObjectiveBounds()) {
hash = (37 * hash) + SHARE_OBJECTIVE_BOUNDS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getShareObjectiveBounds());
}
if (hasShareLevelZeroBounds()) {
hash = (37 * hash) + SHARE_LEVEL_ZERO_BOUNDS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getShareLevelZeroBounds());
}
if (hasUseLnsOnly()) {
hash = (37 * hash) + USE_LNS_ONLY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseLnsOnly());
}
if (hasLnsFocusOnDecisionVariables()) {
hash = (37 * hash) + LNS_FOCUS_ON_DECISION_VARIABLES_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getLnsFocusOnDecisionVariables());
}
if (hasUseRinsLns()) {
hash = (37 * hash) + USE_RINS_LNS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseRinsLns());
}
if (hasUseFeasibilityPump()) {
hash = (37 * hash) + USE_FEASIBILITY_PUMP_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseFeasibilityPump());
}
if (hasFpRounding()) {
hash = (37 * hash) + FP_ROUNDING_FIELD_NUMBER;
hash = (53 * hash) + fpRounding_;
}
if (hasUseRelaxationLns()) {
hash = (37 * hash) + USE_RELAXATION_LNS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseRelaxationLns());
}
if (hasDiversifyLnsParams()) {
hash = (37 * hash) + DIVERSIFY_LNS_PARAMS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getDiversifyLnsParams());
}
if (hasRandomizeSearch()) {
hash = (37 * hash) + RANDOMIZE_SEARCH_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getRandomizeSearch());
}
if (hasSearchRandomizationTolerance()) {
hash = (37 * hash) + SEARCH_RANDOMIZATION_TOLERANCE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
getSearchRandomizationTolerance());
}
if (hasUseOptionalVariables()) {
hash = (37 * hash) + USE_OPTIONAL_VARIABLES_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseOptionalVariables());
}
if (hasUseExactLpReason()) {
hash = (37 * hash) + USE_EXACT_LP_REASON_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseExactLpReason());
}
if (hasUseBranchingInLp()) {
hash = (37 * hash) + USE_BRANCHING_IN_LP_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseBranchingInLp());
}
if (hasUseCombinedNoOverlap()) {
hash = (37 * hash) + USE_COMBINED_NO_OVERLAP_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseCombinedNoOverlap());
}
if (hasCatchSigintSignal()) {
hash = (37 * hash) + CATCH_SIGINT_SIGNAL_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getCatchSigintSignal());
}
if (hasUseImpliedBounds()) {
hash = (37 * hash) + USE_IMPLIED_BOUNDS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseImpliedBounds());
}
if (hasMipMaxBound()) {
hash = (37 * hash) + MIP_MAX_BOUND_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMipMaxBound()));
}
if (hasMipVarScaling()) {
hash = (37 * hash) + MIP_VAR_SCALING_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMipVarScaling()));
}
if (hasMipAutomaticallyScaleVariables()) {
hash = (37 * hash) + MIP_AUTOMATICALLY_SCALE_VARIABLES_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getMipAutomaticallyScaleVariables());
}
if (hasMipWantedPrecision()) {
hash = (37 * hash) + MIP_WANTED_PRECISION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMipWantedPrecision()));
}
if (hasMipMaxActivityExponent()) {
hash = (37 * hash) + MIP_MAX_ACTIVITY_EXPONENT_FIELD_NUMBER;
hash = (53 * hash) + getMipMaxActivityExponent();
}
if (hasMipCheckPrecision()) {
hash = (37 * hash) + MIP_CHECK_PRECISION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getMipCheckPrecision()));
}
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static com.google.ortools.sat.SatParameters parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.sat.SatParameters parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.google.ortools.sat.SatParameters parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.sat.SatParameters parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.google.ortools.sat.SatParameters parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.sat.SatParameters parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.google.ortools.sat.SatParameters parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.google.ortools.sat.SatParameters parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
public static com.google.ortools.sat.SatParameters parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static com.google.ortools.sat.SatParameters parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
}
public static com.google.ortools.sat.SatParameters parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.google.ortools.sat.SatParameters parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
@java.lang.Override
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder() {
return DEFAULT_INSTANCE.toBuilder();
}
public static Builder newBuilder(com.google.ortools.sat.SatParameters prototype) {
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
}
@java.lang.Override
public Builder toBuilder() {
return this == DEFAULT_INSTANCE
? new Builder() : new Builder().mergeFrom(this);
}
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
*
* Contains the definitions for all the sat algorithm parameters and their
* default values.
* NEXT TAG: 167
*
*
* Protobuf type {@code operations_research.sat.SatParameters}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder implements
// @@protoc_insertion_point(builder_implements:operations_research.sat.SatParameters)
com.google.ortools.sat.SatParametersOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.google.ortools.sat.SatParameters.class, com.google.ortools.sat.SatParameters.Builder.class);
}
// Construct using com.google.ortools.sat.SatParameters.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
}
}
@java.lang.Override
public Builder clear() {
super.clear();
preferredVariableOrder_ = 0;
bitField0_ = (bitField0_ & ~0x00000001);
initialPolarity_ = 1;
bitField0_ = (bitField0_ & ~0x00000002);
usePhaseSaving_ = true;
bitField0_ = (bitField0_ & ~0x00000004);
randomPolarityRatio_ = 0D;
bitField0_ = (bitField0_ & ~0x00000008);
randomBranchesRatio_ = 0D;
bitField0_ = (bitField0_ & ~0x00000010);
useErwaHeuristic_ = false;
bitField0_ = (bitField0_ & ~0x00000020);
initialVariablesActivity_ = 0D;
bitField0_ = (bitField0_ & ~0x00000040);
alsoBumpVariablesInConflictReasons_ = false;
bitField0_ = (bitField0_ & ~0x00000080);
minimizationAlgorithm_ = 2;
bitField0_ = (bitField0_ & ~0x00000100);
binaryMinimizationAlgorithm_ = 1;
bitField0_ = (bitField0_ & ~0x00000200);
subsumptionDuringConflictAnalysis_ = true;
bitField0_ = (bitField0_ & ~0x00000400);
clauseCleanupPeriod_ = 10000;
bitField0_ = (bitField0_ & ~0x00000800);
clauseCleanupTarget_ = 10000;
bitField0_ = (bitField0_ & ~0x00001000);
clauseCleanupProtection_ = 0;
bitField0_ = (bitField0_ & ~0x00002000);
clauseCleanupLbdBound_ = 5;
bitField0_ = (bitField0_ & ~0x00004000);
clauseCleanupOrdering_ = 0;
bitField0_ = (bitField0_ & ~0x00008000);
pbCleanupIncrement_ = 200;
bitField0_ = (bitField0_ & ~0x00010000);
pbCleanupRatio_ = 0.5D;
bitField0_ = (bitField0_ & ~0x00020000);
minimizeWithPropagationRestartPeriod_ = 10;
bitField0_ = (bitField0_ & ~0x00040000);
minimizeWithPropagationNumDecisions_ = 1000;
bitField0_ = (bitField0_ & ~0x00080000);
variableActivityDecay_ = 0.8D;
bitField0_ = (bitField0_ & ~0x00100000);
maxVariableActivityValue_ = 1e+100D;
bitField0_ = (bitField0_ & ~0x00200000);
glucoseMaxDecay_ = 0.95D;
bitField0_ = (bitField0_ & ~0x00400000);
glucoseDecayIncrement_ = 0.01D;
bitField0_ = (bitField0_ & ~0x00800000);
glucoseDecayIncrementPeriod_ = 5000;
bitField0_ = (bitField0_ & ~0x01000000);
clauseActivityDecay_ = 0.999D;
bitField0_ = (bitField0_ & ~0x02000000);
maxClauseActivityValue_ = 1e+20D;
bitField0_ = (bitField0_ & ~0x04000000);
restartAlgorithms_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x08000000);
defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
bitField0_ = (bitField0_ & ~0x10000000);
restartPeriod_ = 50;
bitField0_ = (bitField0_ & ~0x20000000);
restartRunningWindowSize_ = 50;
bitField0_ = (bitField0_ & ~0x40000000);
restartDlAverageRatio_ = 1D;
bitField0_ = (bitField0_ & ~0x80000000);
restartLbdAverageRatio_ = 1D;
bitField1_ = (bitField1_ & ~0x00000001);
useBlockingRestart_ = false;
bitField1_ = (bitField1_ & ~0x00000002);
blockingRestartWindowSize_ = 5000;
bitField1_ = (bitField1_ & ~0x00000004);
blockingRestartMultiplier_ = 1.4D;
bitField1_ = (bitField1_ & ~0x00000008);
numConflictsBeforeStrategyChanges_ = 0;
bitField1_ = (bitField1_ & ~0x00000010);
strategyChangeIncreaseRatio_ = 0D;
bitField1_ = (bitField1_ & ~0x00000020);
maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
bitField1_ = (bitField1_ & ~0x00000040);
maxDeterministicTime_ = Double.POSITIVE_INFINITY;
bitField1_ = (bitField1_ & ~0x00000080);
maxNumberOfConflicts_ = 9223372036854775807L;
bitField1_ = (bitField1_ & ~0x00000100);
maxMemoryInMb_ = 10000L;
bitField1_ = (bitField1_ & ~0x00000200);
absoluteGapLimit_ = 0D;
bitField1_ = (bitField1_ & ~0x00000400);
relativeGapLimit_ = 0D;
bitField1_ = (bitField1_ & ~0x00000800);
treatBinaryClausesSeparately_ = true;
bitField1_ = (bitField1_ & ~0x00001000);
randomSeed_ = 1;
bitField1_ = (bitField1_ & ~0x00002000);
logSearchProgress_ = false;
bitField1_ = (bitField1_ & ~0x00004000);
usePbResolution_ = false;
bitField1_ = (bitField1_ & ~0x00008000);
minimizeReductionDuringPbResolution_ = false;
bitField1_ = (bitField1_ & ~0x00010000);
countAssumptionLevelsInLbd_ = true;
bitField1_ = (bitField1_ & ~0x00020000);
presolveBveThreshold_ = 500;
bitField1_ = (bitField1_ & ~0x00040000);
presolveBveClauseWeight_ = 3;
bitField1_ = (bitField1_ & ~0x00080000);
presolveProbingDeterministicTimeLimit_ = 30D;
bitField1_ = (bitField1_ & ~0x00100000);
presolveBlockedClause_ = true;
bitField1_ = (bitField1_ & ~0x00200000);
presolveUseBva_ = true;
bitField1_ = (bitField1_ & ~0x00400000);
presolveBvaThreshold_ = 1;
bitField1_ = (bitField1_ & ~0x00800000);
maxPresolveIterations_ = 3;
bitField1_ = (bitField1_ & ~0x01000000);
cpModelPresolve_ = true;
bitField1_ = (bitField1_ & ~0x02000000);
cpModelPostsolveWithFullSolver_ = false;
bitField1_ = (bitField1_ & ~0x04000000);
cpModelMaxNumPresolveOperations_ = 0;
bitField1_ = (bitField1_ & ~0x08000000);
cpModelProbingLevel_ = 2;
bitField1_ = (bitField1_ & ~0x10000000);
cpModelUseSatPresolve_ = true;
bitField1_ = (bitField1_ & ~0x20000000);
useSatInprocessing_ = false;
bitField1_ = (bitField1_ & ~0x40000000);
expandElementConstraints_ = true;
bitField1_ = (bitField1_ & ~0x80000000);
expandAutomatonConstraints_ = true;
bitField2_ = (bitField2_ & ~0x00000001);
expandTableConstraints_ = true;
bitField2_ = (bitField2_ & ~0x00000002);
mergeNoOverlapWorkLimit_ = 1000000000000D;
bitField2_ = (bitField2_ & ~0x00000004);
mergeAtMostOneWorkLimit_ = 100000000D;
bitField2_ = (bitField2_ & ~0x00000008);
presolveSubstitutionLevel_ = 1;
bitField2_ = (bitField2_ & ~0x00000010);
useOptimizationHints_ = true;
bitField2_ = (bitField2_ & ~0x00000020);
minimizeCore_ = true;
bitField2_ = (bitField2_ & ~0x00000040);
findMultipleCores_ = true;
bitField2_ = (bitField2_ & ~0x00000080);
coverOptimization_ = true;
bitField2_ = (bitField2_ & ~0x00000100);
maxSatAssumptionOrder_ = 0;
bitField2_ = (bitField2_ & ~0x00000200);
maxSatReverseAssumptionOrder_ = false;
bitField2_ = (bitField2_ & ~0x00000400);
maxSatStratification_ = 1;
bitField2_ = (bitField2_ & ~0x00000800);
usePrecedencesInDisjunctiveConstraint_ = true;
bitField2_ = (bitField2_ & ~0x00001000);
useOverloadCheckerInCumulativeConstraint_ = false;
bitField2_ = (bitField2_ & ~0x00002000);
useTimetableEdgeFindingInCumulativeConstraint_ = false;
bitField2_ = (bitField2_ & ~0x00004000);
useDisjunctiveConstraintInCumulativeConstraint_ = true;
bitField2_ = (bitField2_ & ~0x00008000);
linearizationLevel_ = 1;
bitField2_ = (bitField2_ & ~0x00010000);
booleanEncodingLevel_ = 1;
bitField2_ = (bitField2_ & ~0x00020000);
maxNumCuts_ = 10000;
bitField2_ = (bitField2_ & ~0x00040000);
onlyAddCutsAtLevelZero_ = false;
bitField2_ = (bitField2_ & ~0x00080000);
addKnapsackCuts_ = false;
bitField2_ = (bitField2_ & ~0x00100000);
addCgCuts_ = true;
bitField2_ = (bitField2_ & ~0x00200000);
addMirCuts_ = true;
bitField2_ = (bitField2_ & ~0x00400000);
maxAllDiffCutSize_ = 7;
bitField2_ = (bitField2_ & ~0x00800000);
addLinMaxCuts_ = true;
bitField2_ = (bitField2_ & ~0x01000000);
maxIntegerRoundingScaling_ = 600;
bitField2_ = (bitField2_ & ~0x02000000);
addLpConstraintsLazily_ = true;
bitField2_ = (bitField2_ & ~0x04000000);
minOrthogonalityForLpConstraints_ = 0.05D;
bitField2_ = (bitField2_ & ~0x08000000);
maxCutRoundsAtLevelZero_ = 1;
bitField2_ = (bitField2_ & ~0x10000000);
maxConsecutiveInactiveCount_ = 100;
bitField2_ = (bitField2_ & ~0x20000000);
cutMaxActiveCountValue_ = 10000000000D;
bitField2_ = (bitField2_ & ~0x40000000);
cutActiveCountDecay_ = 0.8D;
bitField2_ = (bitField2_ & ~0x80000000);
cutCleanupTarget_ = 1000;
bitField3_ = (bitField3_ & ~0x00000001);
newConstraintsBatchSize_ = 50;
bitField3_ = (bitField3_ & ~0x00000002);
searchBranching_ = 0;
bitField3_ = (bitField3_ & ~0x00000004);
hintConflictLimit_ = 10;
bitField3_ = (bitField3_ & ~0x00000008);
exploitIntegerLpSolution_ = true;
bitField3_ = (bitField3_ & ~0x00000010);
exploitAllLpSolution_ = true;
bitField3_ = (bitField3_ & ~0x00000020);
exploitBestSolution_ = false;
bitField3_ = (bitField3_ & ~0x00000040);
exploitRelaxationSolution_ = false;
bitField3_ = (bitField3_ & ~0x00000080);
exploitObjective_ = true;
bitField3_ = (bitField3_ & ~0x00000100);
probingPeriodAtRoot_ = 0L;
bitField3_ = (bitField3_ & ~0x00000200);
pseudoCostReliabilityThreshold_ = 100L;
bitField3_ = (bitField3_ & ~0x00000400);
optimizeWithCore_ = false;
bitField3_ = (bitField3_ & ~0x00000800);
binarySearchNumConflicts_ = -1;
bitField3_ = (bitField3_ & ~0x00001000);
optimizeWithMaxHs_ = false;
bitField3_ = (bitField3_ & ~0x00002000);
enumerateAllSolutions_ = false;
bitField3_ = (bitField3_ & ~0x00004000);
fillTightenedDomainsInResponse_ = false;
bitField3_ = (bitField3_ & ~0x00008000);
instantiateAllVariables_ = true;
bitField3_ = (bitField3_ & ~0x00010000);
autoDetectGreaterThanAtLeastOneOf_ = true;
bitField3_ = (bitField3_ & ~0x00020000);
stopAfterFirstSolution_ = false;
bitField3_ = (bitField3_ & ~0x00040000);
stopAfterPresolve_ = false;
bitField3_ = (bitField3_ & ~0x00080000);
numSearchWorkers_ = 1;
bitField3_ = (bitField3_ & ~0x00100000);
interleaveSearch_ = false;
bitField3_ = (bitField3_ & ~0x00200000);
interleaveBatchSize_ = 1;
bitField3_ = (bitField3_ & ~0x00400000);
reduceMemoryUsageInInterleaveMode_ = false;
bitField3_ = (bitField3_ & ~0x00800000);
shareObjectiveBounds_ = true;
bitField3_ = (bitField3_ & ~0x01000000);
shareLevelZeroBounds_ = true;
bitField3_ = (bitField3_ & ~0x02000000);
useLnsOnly_ = false;
bitField3_ = (bitField3_ & ~0x04000000);
lnsFocusOnDecisionVariables_ = false;
bitField3_ = (bitField3_ & ~0x08000000);
useRinsLns_ = true;
bitField3_ = (bitField3_ & ~0x10000000);
useFeasibilityPump_ = true;
bitField3_ = (bitField3_ & ~0x20000000);
fpRounding_ = 2;
bitField3_ = (bitField3_ & ~0x40000000);
useRelaxationLns_ = false;
bitField3_ = (bitField3_ & ~0x80000000);
diversifyLnsParams_ = false;
bitField4_ = (bitField4_ & ~0x00000001);
randomizeSearch_ = false;
bitField4_ = (bitField4_ & ~0x00000002);
searchRandomizationTolerance_ = 0L;
bitField4_ = (bitField4_ & ~0x00000004);
useOptionalVariables_ = true;
bitField4_ = (bitField4_ & ~0x00000008);
useExactLpReason_ = true;
bitField4_ = (bitField4_ & ~0x00000010);
useBranchingInLp_ = false;
bitField4_ = (bitField4_ & ~0x00000020);
useCombinedNoOverlap_ = false;
bitField4_ = (bitField4_ & ~0x00000040);
catchSigintSignal_ = true;
bitField4_ = (bitField4_ & ~0x00000080);
useImpliedBounds_ = true;
bitField4_ = (bitField4_ & ~0x00000100);
mipMaxBound_ = 10000000D;
bitField4_ = (bitField4_ & ~0x00000200);
mipVarScaling_ = 1D;
bitField4_ = (bitField4_ & ~0x00000400);
mipAutomaticallyScaleVariables_ = true;
bitField4_ = (bitField4_ & ~0x00000800);
mipWantedPrecision_ = 1e-06D;
bitField4_ = (bitField4_ & ~0x00001000);
mipMaxActivityExponent_ = 53;
bitField4_ = (bitField4_ & ~0x00002000);
mipCheckPrecision_ = 0.0001D;
bitField4_ = (bitField4_ & ~0x00004000);
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return com.google.ortools.sat.SatParametersOuterClass.internal_static_operations_research_sat_SatParameters_descriptor;
}
@java.lang.Override
public com.google.ortools.sat.SatParameters getDefaultInstanceForType() {
return com.google.ortools.sat.SatParameters.getDefaultInstance();
}
@java.lang.Override
public com.google.ortools.sat.SatParameters build() {
com.google.ortools.sat.SatParameters result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public com.google.ortools.sat.SatParameters buildPartial() {
com.google.ortools.sat.SatParameters result = new com.google.ortools.sat.SatParameters(this);
int from_bitField0_ = bitField0_;
int from_bitField1_ = bitField1_;
int from_bitField2_ = bitField2_;
int from_bitField3_ = bitField3_;
int from_bitField4_ = bitField4_;
int to_bitField0_ = 0;
int to_bitField1_ = 0;
int to_bitField2_ = 0;
int to_bitField3_ = 0;
int to_bitField4_ = 0;
if (((from_bitField0_ & 0x00000001) != 0)) {
to_bitField0_ |= 0x00000001;
}
result.preferredVariableOrder_ = preferredVariableOrder_;
if (((from_bitField0_ & 0x00000002) != 0)) {
to_bitField0_ |= 0x00000002;
}
result.initialPolarity_ = initialPolarity_;
if (((from_bitField0_ & 0x00000004) != 0)) {
to_bitField0_ |= 0x00000004;
}
result.usePhaseSaving_ = usePhaseSaving_;
if (((from_bitField0_ & 0x00000008) != 0)) {
result.randomPolarityRatio_ = randomPolarityRatio_;
to_bitField0_ |= 0x00000008;
}
if (((from_bitField0_ & 0x00000010) != 0)) {
result.randomBranchesRatio_ = randomBranchesRatio_;
to_bitField0_ |= 0x00000010;
}
if (((from_bitField0_ & 0x00000020) != 0)) {
result.useErwaHeuristic_ = useErwaHeuristic_;
to_bitField0_ |= 0x00000020;
}
if (((from_bitField0_ & 0x00000040) != 0)) {
result.initialVariablesActivity_ = initialVariablesActivity_;
to_bitField0_ |= 0x00000040;
}
if (((from_bitField0_ & 0x00000080) != 0)) {
result.alsoBumpVariablesInConflictReasons_ = alsoBumpVariablesInConflictReasons_;
to_bitField0_ |= 0x00000080;
}
if (((from_bitField0_ & 0x00000100) != 0)) {
to_bitField0_ |= 0x00000100;
}
result.minimizationAlgorithm_ = minimizationAlgorithm_;
if (((from_bitField0_ & 0x00000200) != 0)) {
to_bitField0_ |= 0x00000200;
}
result.binaryMinimizationAlgorithm_ = binaryMinimizationAlgorithm_;
if (((from_bitField0_ & 0x00000400) != 0)) {
to_bitField0_ |= 0x00000400;
}
result.subsumptionDuringConflictAnalysis_ = subsumptionDuringConflictAnalysis_;
if (((from_bitField0_ & 0x00000800) != 0)) {
to_bitField0_ |= 0x00000800;
}
result.clauseCleanupPeriod_ = clauseCleanupPeriod_;
if (((from_bitField0_ & 0x00001000) != 0)) {
to_bitField0_ |= 0x00001000;
}
result.clauseCleanupTarget_ = clauseCleanupTarget_;
if (((from_bitField0_ & 0x00002000) != 0)) {
to_bitField0_ |= 0x00002000;
}
result.clauseCleanupProtection_ = clauseCleanupProtection_;
if (((from_bitField0_ & 0x00004000) != 0)) {
to_bitField0_ |= 0x00004000;
}
result.clauseCleanupLbdBound_ = clauseCleanupLbdBound_;
if (((from_bitField0_ & 0x00008000) != 0)) {
to_bitField0_ |= 0x00008000;
}
result.clauseCleanupOrdering_ = clauseCleanupOrdering_;
if (((from_bitField0_ & 0x00010000) != 0)) {
to_bitField0_ |= 0x00010000;
}
result.pbCleanupIncrement_ = pbCleanupIncrement_;
if (((from_bitField0_ & 0x00020000) != 0)) {
to_bitField0_ |= 0x00020000;
}
result.pbCleanupRatio_ = pbCleanupRatio_;
if (((from_bitField0_ & 0x00040000) != 0)) {
to_bitField0_ |= 0x00040000;
}
result.minimizeWithPropagationRestartPeriod_ = minimizeWithPropagationRestartPeriod_;
if (((from_bitField0_ & 0x00080000) != 0)) {
to_bitField0_ |= 0x00080000;
}
result.minimizeWithPropagationNumDecisions_ = minimizeWithPropagationNumDecisions_;
if (((from_bitField0_ & 0x00100000) != 0)) {
to_bitField0_ |= 0x00100000;
}
result.variableActivityDecay_ = variableActivityDecay_;
if (((from_bitField0_ & 0x00200000) != 0)) {
to_bitField0_ |= 0x00200000;
}
result.maxVariableActivityValue_ = maxVariableActivityValue_;
if (((from_bitField0_ & 0x00400000) != 0)) {
to_bitField0_ |= 0x00400000;
}
result.glucoseMaxDecay_ = glucoseMaxDecay_;
if (((from_bitField0_ & 0x00800000) != 0)) {
to_bitField0_ |= 0x00800000;
}
result.glucoseDecayIncrement_ = glucoseDecayIncrement_;
if (((from_bitField0_ & 0x01000000) != 0)) {
to_bitField0_ |= 0x01000000;
}
result.glucoseDecayIncrementPeriod_ = glucoseDecayIncrementPeriod_;
if (((from_bitField0_ & 0x02000000) != 0)) {
to_bitField0_ |= 0x02000000;
}
result.clauseActivityDecay_ = clauseActivityDecay_;
if (((from_bitField0_ & 0x04000000) != 0)) {
to_bitField0_ |= 0x04000000;
}
result.maxClauseActivityValue_ = maxClauseActivityValue_;
if (((bitField0_ & 0x08000000) != 0)) {
restartAlgorithms_ = java.util.Collections.unmodifiableList(restartAlgorithms_);
bitField0_ = (bitField0_ & ~0x08000000);
}
result.restartAlgorithms_ = restartAlgorithms_;
if (((from_bitField0_ & 0x10000000) != 0)) {
to_bitField0_ |= 0x08000000;
}
result.defaultRestartAlgorithms_ = defaultRestartAlgorithms_;
if (((from_bitField0_ & 0x20000000) != 0)) {
to_bitField0_ |= 0x10000000;
}
result.restartPeriod_ = restartPeriod_;
if (((from_bitField0_ & 0x40000000) != 0)) {
to_bitField0_ |= 0x20000000;
}
result.restartRunningWindowSize_ = restartRunningWindowSize_;
if (((from_bitField0_ & 0x80000000) != 0)) {
to_bitField0_ |= 0x40000000;
}
result.restartDlAverageRatio_ = restartDlAverageRatio_;
if (((from_bitField1_ & 0x00000001) != 0)) {
to_bitField0_ |= 0x80000000;
}
result.restartLbdAverageRatio_ = restartLbdAverageRatio_;
if (((from_bitField1_ & 0x00000002) != 0)) {
result.useBlockingRestart_ = useBlockingRestart_;
to_bitField1_ |= 0x00000001;
}
if (((from_bitField1_ & 0x00000004) != 0)) {
to_bitField1_ |= 0x00000002;
}
result.blockingRestartWindowSize_ = blockingRestartWindowSize_;
if (((from_bitField1_ & 0x00000008) != 0)) {
to_bitField1_ |= 0x00000004;
}
result.blockingRestartMultiplier_ = blockingRestartMultiplier_;
if (((from_bitField1_ & 0x00000010) != 0)) {
result.numConflictsBeforeStrategyChanges_ = numConflictsBeforeStrategyChanges_;
to_bitField1_ |= 0x00000008;
}
if (((from_bitField1_ & 0x00000020) != 0)) {
result.strategyChangeIncreaseRatio_ = strategyChangeIncreaseRatio_;
to_bitField1_ |= 0x00000010;
}
if (((from_bitField1_ & 0x00000040) != 0)) {
to_bitField1_ |= 0x00000020;
}
result.maxTimeInSeconds_ = maxTimeInSeconds_;
if (((from_bitField1_ & 0x00000080) != 0)) {
to_bitField1_ |= 0x00000040;
}
result.maxDeterministicTime_ = maxDeterministicTime_;
if (((from_bitField1_ & 0x00000100) != 0)) {
to_bitField1_ |= 0x00000080;
}
result.maxNumberOfConflicts_ = maxNumberOfConflicts_;
if (((from_bitField1_ & 0x00000200) != 0)) {
to_bitField1_ |= 0x00000100;
}
result.maxMemoryInMb_ = maxMemoryInMb_;
if (((from_bitField1_ & 0x00000400) != 0)) {
result.absoluteGapLimit_ = absoluteGapLimit_;
to_bitField1_ |= 0x00000200;
}
if (((from_bitField1_ & 0x00000800) != 0)) {
result.relativeGapLimit_ = relativeGapLimit_;
to_bitField1_ |= 0x00000400;
}
if (((from_bitField1_ & 0x00001000) != 0)) {
to_bitField1_ |= 0x00000800;
}
result.treatBinaryClausesSeparately_ = treatBinaryClausesSeparately_;
if (((from_bitField1_ & 0x00002000) != 0)) {
to_bitField1_ |= 0x00001000;
}
result.randomSeed_ = randomSeed_;
if (((from_bitField1_ & 0x00004000) != 0)) {
result.logSearchProgress_ = logSearchProgress_;
to_bitField1_ |= 0x00002000;
}
if (((from_bitField1_ & 0x00008000) != 0)) {
result.usePbResolution_ = usePbResolution_;
to_bitField1_ |= 0x00004000;
}
if (((from_bitField1_ & 0x00010000) != 0)) {
result.minimizeReductionDuringPbResolution_ = minimizeReductionDuringPbResolution_;
to_bitField1_ |= 0x00008000;
}
if (((from_bitField1_ & 0x00020000) != 0)) {
to_bitField1_ |= 0x00010000;
}
result.countAssumptionLevelsInLbd_ = countAssumptionLevelsInLbd_;
if (((from_bitField1_ & 0x00040000) != 0)) {
to_bitField1_ |= 0x00020000;
}
result.presolveBveThreshold_ = presolveBveThreshold_;
if (((from_bitField1_ & 0x00080000) != 0)) {
to_bitField1_ |= 0x00040000;
}
result.presolveBveClauseWeight_ = presolveBveClauseWeight_;
if (((from_bitField1_ & 0x00100000) != 0)) {
to_bitField1_ |= 0x00080000;
}
result.presolveProbingDeterministicTimeLimit_ = presolveProbingDeterministicTimeLimit_;
if (((from_bitField1_ & 0x00200000) != 0)) {
to_bitField1_ |= 0x00100000;
}
result.presolveBlockedClause_ = presolveBlockedClause_;
if (((from_bitField1_ & 0x00400000) != 0)) {
to_bitField1_ |= 0x00200000;
}
result.presolveUseBva_ = presolveUseBva_;
if (((from_bitField1_ & 0x00800000) != 0)) {
to_bitField1_ |= 0x00400000;
}
result.presolveBvaThreshold_ = presolveBvaThreshold_;
if (((from_bitField1_ & 0x01000000) != 0)) {
to_bitField1_ |= 0x00800000;
}
result.maxPresolveIterations_ = maxPresolveIterations_;
if (((from_bitField1_ & 0x02000000) != 0)) {
to_bitField1_ |= 0x01000000;
}
result.cpModelPresolve_ = cpModelPresolve_;
if (((from_bitField1_ & 0x04000000) != 0)) {
result.cpModelPostsolveWithFullSolver_ = cpModelPostsolveWithFullSolver_;
to_bitField1_ |= 0x02000000;
}
if (((from_bitField1_ & 0x08000000) != 0)) {
result.cpModelMaxNumPresolveOperations_ = cpModelMaxNumPresolveOperations_;
to_bitField1_ |= 0x04000000;
}
if (((from_bitField1_ & 0x10000000) != 0)) {
to_bitField1_ |= 0x08000000;
}
result.cpModelProbingLevel_ = cpModelProbingLevel_;
if (((from_bitField1_ & 0x20000000) != 0)) {
to_bitField1_ |= 0x10000000;
}
result.cpModelUseSatPresolve_ = cpModelUseSatPresolve_;
if (((from_bitField1_ & 0x40000000) != 0)) {
result.useSatInprocessing_ = useSatInprocessing_;
to_bitField1_ |= 0x20000000;
}
if (((from_bitField1_ & 0x80000000) != 0)) {
to_bitField1_ |= 0x40000000;
}
result.expandElementConstraints_ = expandElementConstraints_;
if (((from_bitField2_ & 0x00000001) != 0)) {
to_bitField1_ |= 0x80000000;
}
result.expandAutomatonConstraints_ = expandAutomatonConstraints_;
if (((from_bitField2_ & 0x00000002) != 0)) {
to_bitField2_ |= 0x00000001;
}
result.expandTableConstraints_ = expandTableConstraints_;
if (((from_bitField2_ & 0x00000004) != 0)) {
to_bitField2_ |= 0x00000002;
}
result.mergeNoOverlapWorkLimit_ = mergeNoOverlapWorkLimit_;
if (((from_bitField2_ & 0x00000008) != 0)) {
to_bitField2_ |= 0x00000004;
}
result.mergeAtMostOneWorkLimit_ = mergeAtMostOneWorkLimit_;
if (((from_bitField2_ & 0x00000010) != 0)) {
to_bitField2_ |= 0x00000008;
}
result.presolveSubstitutionLevel_ = presolveSubstitutionLevel_;
if (((from_bitField2_ & 0x00000020) != 0)) {
to_bitField2_ |= 0x00000010;
}
result.useOptimizationHints_ = useOptimizationHints_;
if (((from_bitField2_ & 0x00000040) != 0)) {
to_bitField2_ |= 0x00000020;
}
result.minimizeCore_ = minimizeCore_;
if (((from_bitField2_ & 0x00000080) != 0)) {
to_bitField2_ |= 0x00000040;
}
result.findMultipleCores_ = findMultipleCores_;
if (((from_bitField2_ & 0x00000100) != 0)) {
to_bitField2_ |= 0x00000080;
}
result.coverOptimization_ = coverOptimization_;
if (((from_bitField2_ & 0x00000200) != 0)) {
to_bitField2_ |= 0x00000100;
}
result.maxSatAssumptionOrder_ = maxSatAssumptionOrder_;
if (((from_bitField2_ & 0x00000400) != 0)) {
result.maxSatReverseAssumptionOrder_ = maxSatReverseAssumptionOrder_;
to_bitField2_ |= 0x00000200;
}
if (((from_bitField2_ & 0x00000800) != 0)) {
to_bitField2_ |= 0x00000400;
}
result.maxSatStratification_ = maxSatStratification_;
if (((from_bitField2_ & 0x00001000) != 0)) {
to_bitField2_ |= 0x00000800;
}
result.usePrecedencesInDisjunctiveConstraint_ = usePrecedencesInDisjunctiveConstraint_;
if (((from_bitField2_ & 0x00002000) != 0)) {
result.useOverloadCheckerInCumulativeConstraint_ = useOverloadCheckerInCumulativeConstraint_;
to_bitField2_ |= 0x00001000;
}
if (((from_bitField2_ & 0x00004000) != 0)) {
result.useTimetableEdgeFindingInCumulativeConstraint_ = useTimetableEdgeFindingInCumulativeConstraint_;
to_bitField2_ |= 0x00002000;
}
if (((from_bitField2_ & 0x00008000) != 0)) {
to_bitField2_ |= 0x00004000;
}
result.useDisjunctiveConstraintInCumulativeConstraint_ = useDisjunctiveConstraintInCumulativeConstraint_;
if (((from_bitField2_ & 0x00010000) != 0)) {
to_bitField2_ |= 0x00008000;
}
result.linearizationLevel_ = linearizationLevel_;
if (((from_bitField2_ & 0x00020000) != 0)) {
to_bitField2_ |= 0x00010000;
}
result.booleanEncodingLevel_ = booleanEncodingLevel_;
if (((from_bitField2_ & 0x00040000) != 0)) {
to_bitField2_ |= 0x00020000;
}
result.maxNumCuts_ = maxNumCuts_;
if (((from_bitField2_ & 0x00080000) != 0)) {
result.onlyAddCutsAtLevelZero_ = onlyAddCutsAtLevelZero_;
to_bitField2_ |= 0x00040000;
}
if (((from_bitField2_ & 0x00100000) != 0)) {
result.addKnapsackCuts_ = addKnapsackCuts_;
to_bitField2_ |= 0x00080000;
}
if (((from_bitField2_ & 0x00200000) != 0)) {
to_bitField2_ |= 0x00100000;
}
result.addCgCuts_ = addCgCuts_;
if (((from_bitField2_ & 0x00400000) != 0)) {
to_bitField2_ |= 0x00200000;
}
result.addMirCuts_ = addMirCuts_;
if (((from_bitField2_ & 0x00800000) != 0)) {
to_bitField2_ |= 0x00400000;
}
result.maxAllDiffCutSize_ = maxAllDiffCutSize_;
if (((from_bitField2_ & 0x01000000) != 0)) {
to_bitField2_ |= 0x00800000;
}
result.addLinMaxCuts_ = addLinMaxCuts_;
if (((from_bitField2_ & 0x02000000) != 0)) {
to_bitField2_ |= 0x01000000;
}
result.maxIntegerRoundingScaling_ = maxIntegerRoundingScaling_;
if (((from_bitField2_ & 0x04000000) != 0)) {
to_bitField2_ |= 0x02000000;
}
result.addLpConstraintsLazily_ = addLpConstraintsLazily_;
if (((from_bitField2_ & 0x08000000) != 0)) {
to_bitField2_ |= 0x04000000;
}
result.minOrthogonalityForLpConstraints_ = minOrthogonalityForLpConstraints_;
if (((from_bitField2_ & 0x10000000) != 0)) {
to_bitField2_ |= 0x08000000;
}
result.maxCutRoundsAtLevelZero_ = maxCutRoundsAtLevelZero_;
if (((from_bitField2_ & 0x20000000) != 0)) {
to_bitField2_ |= 0x10000000;
}
result.maxConsecutiveInactiveCount_ = maxConsecutiveInactiveCount_;
if (((from_bitField2_ & 0x40000000) != 0)) {
to_bitField2_ |= 0x20000000;
}
result.cutMaxActiveCountValue_ = cutMaxActiveCountValue_;
if (((from_bitField2_ & 0x80000000) != 0)) {
to_bitField2_ |= 0x40000000;
}
result.cutActiveCountDecay_ = cutActiveCountDecay_;
if (((from_bitField3_ & 0x00000001) != 0)) {
to_bitField2_ |= 0x80000000;
}
result.cutCleanupTarget_ = cutCleanupTarget_;
if (((from_bitField3_ & 0x00000002) != 0)) {
to_bitField3_ |= 0x00000001;
}
result.newConstraintsBatchSize_ = newConstraintsBatchSize_;
if (((from_bitField3_ & 0x00000004) != 0)) {
to_bitField3_ |= 0x00000002;
}
result.searchBranching_ = searchBranching_;
if (((from_bitField3_ & 0x00000008) != 0)) {
to_bitField3_ |= 0x00000004;
}
result.hintConflictLimit_ = hintConflictLimit_;
if (((from_bitField3_ & 0x00000010) != 0)) {
to_bitField3_ |= 0x00000008;
}
result.exploitIntegerLpSolution_ = exploitIntegerLpSolution_;
if (((from_bitField3_ & 0x00000020) != 0)) {
to_bitField3_ |= 0x00000010;
}
result.exploitAllLpSolution_ = exploitAllLpSolution_;
if (((from_bitField3_ & 0x00000040) != 0)) {
result.exploitBestSolution_ = exploitBestSolution_;
to_bitField3_ |= 0x00000020;
}
if (((from_bitField3_ & 0x00000080) != 0)) {
result.exploitRelaxationSolution_ = exploitRelaxationSolution_;
to_bitField3_ |= 0x00000040;
}
if (((from_bitField3_ & 0x00000100) != 0)) {
to_bitField3_ |= 0x00000080;
}
result.exploitObjective_ = exploitObjective_;
if (((from_bitField3_ & 0x00000200) != 0)) {
result.probingPeriodAtRoot_ = probingPeriodAtRoot_;
to_bitField3_ |= 0x00000100;
}
if (((from_bitField3_ & 0x00000400) != 0)) {
to_bitField3_ |= 0x00000200;
}
result.pseudoCostReliabilityThreshold_ = pseudoCostReliabilityThreshold_;
if (((from_bitField3_ & 0x00000800) != 0)) {
result.optimizeWithCore_ = optimizeWithCore_;
to_bitField3_ |= 0x00000400;
}
if (((from_bitField3_ & 0x00001000) != 0)) {
to_bitField3_ |= 0x00000800;
}
result.binarySearchNumConflicts_ = binarySearchNumConflicts_;
if (((from_bitField3_ & 0x00002000) != 0)) {
result.optimizeWithMaxHs_ = optimizeWithMaxHs_;
to_bitField3_ |= 0x00001000;
}
if (((from_bitField3_ & 0x00004000) != 0)) {
result.enumerateAllSolutions_ = enumerateAllSolutions_;
to_bitField3_ |= 0x00002000;
}
if (((from_bitField3_ & 0x00008000) != 0)) {
result.fillTightenedDomainsInResponse_ = fillTightenedDomainsInResponse_;
to_bitField3_ |= 0x00004000;
}
if (((from_bitField3_ & 0x00010000) != 0)) {
to_bitField3_ |= 0x00008000;
}
result.instantiateAllVariables_ = instantiateAllVariables_;
if (((from_bitField3_ & 0x00020000) != 0)) {
to_bitField3_ |= 0x00010000;
}
result.autoDetectGreaterThanAtLeastOneOf_ = autoDetectGreaterThanAtLeastOneOf_;
if (((from_bitField3_ & 0x00040000) != 0)) {
result.stopAfterFirstSolution_ = stopAfterFirstSolution_;
to_bitField3_ |= 0x00020000;
}
if (((from_bitField3_ & 0x00080000) != 0)) {
result.stopAfterPresolve_ = stopAfterPresolve_;
to_bitField3_ |= 0x00040000;
}
if (((from_bitField3_ & 0x00100000) != 0)) {
to_bitField3_ |= 0x00080000;
}
result.numSearchWorkers_ = numSearchWorkers_;
if (((from_bitField3_ & 0x00200000) != 0)) {
result.interleaveSearch_ = interleaveSearch_;
to_bitField3_ |= 0x00100000;
}
if (((from_bitField3_ & 0x00400000) != 0)) {
to_bitField3_ |= 0x00200000;
}
result.interleaveBatchSize_ = interleaveBatchSize_;
if (((from_bitField3_ & 0x00800000) != 0)) {
result.reduceMemoryUsageInInterleaveMode_ = reduceMemoryUsageInInterleaveMode_;
to_bitField3_ |= 0x00400000;
}
if (((from_bitField3_ & 0x01000000) != 0)) {
to_bitField3_ |= 0x00800000;
}
result.shareObjectiveBounds_ = shareObjectiveBounds_;
if (((from_bitField3_ & 0x02000000) != 0)) {
to_bitField3_ |= 0x01000000;
}
result.shareLevelZeroBounds_ = shareLevelZeroBounds_;
if (((from_bitField3_ & 0x04000000) != 0)) {
result.useLnsOnly_ = useLnsOnly_;
to_bitField3_ |= 0x02000000;
}
if (((from_bitField3_ & 0x08000000) != 0)) {
result.lnsFocusOnDecisionVariables_ = lnsFocusOnDecisionVariables_;
to_bitField3_ |= 0x04000000;
}
if (((from_bitField3_ & 0x10000000) != 0)) {
to_bitField3_ |= 0x08000000;
}
result.useRinsLns_ = useRinsLns_;
if (((from_bitField3_ & 0x20000000) != 0)) {
to_bitField3_ |= 0x10000000;
}
result.useFeasibilityPump_ = useFeasibilityPump_;
if (((from_bitField3_ & 0x40000000) != 0)) {
to_bitField3_ |= 0x20000000;
}
result.fpRounding_ = fpRounding_;
if (((from_bitField3_ & 0x80000000) != 0)) {
result.useRelaxationLns_ = useRelaxationLns_;
to_bitField3_ |= 0x40000000;
}
if (((from_bitField4_ & 0x00000001) != 0)) {
result.diversifyLnsParams_ = diversifyLnsParams_;
to_bitField3_ |= 0x80000000;
}
if (((from_bitField4_ & 0x00000002) != 0)) {
result.randomizeSearch_ = randomizeSearch_;
to_bitField4_ |= 0x00000001;
}
if (((from_bitField4_ & 0x00000004) != 0)) {
result.searchRandomizationTolerance_ = searchRandomizationTolerance_;
to_bitField4_ |= 0x00000002;
}
if (((from_bitField4_ & 0x00000008) != 0)) {
to_bitField4_ |= 0x00000004;
}
result.useOptionalVariables_ = useOptionalVariables_;
if (((from_bitField4_ & 0x00000010) != 0)) {
to_bitField4_ |= 0x00000008;
}
result.useExactLpReason_ = useExactLpReason_;
if (((from_bitField4_ & 0x00000020) != 0)) {
result.useBranchingInLp_ = useBranchingInLp_;
to_bitField4_ |= 0x00000010;
}
if (((from_bitField4_ & 0x00000040) != 0)) {
result.useCombinedNoOverlap_ = useCombinedNoOverlap_;
to_bitField4_ |= 0x00000020;
}
if (((from_bitField4_ & 0x00000080) != 0)) {
to_bitField4_ |= 0x00000040;
}
result.catchSigintSignal_ = catchSigintSignal_;
if (((from_bitField4_ & 0x00000100) != 0)) {
to_bitField4_ |= 0x00000080;
}
result.useImpliedBounds_ = useImpliedBounds_;
if (((from_bitField4_ & 0x00000200) != 0)) {
to_bitField4_ |= 0x00000100;
}
result.mipMaxBound_ = mipMaxBound_;
if (((from_bitField4_ & 0x00000400) != 0)) {
to_bitField4_ |= 0x00000200;
}
result.mipVarScaling_ = mipVarScaling_;
if (((from_bitField4_ & 0x00000800) != 0)) {
to_bitField4_ |= 0x00000400;
}
result.mipAutomaticallyScaleVariables_ = mipAutomaticallyScaleVariables_;
if (((from_bitField4_ & 0x00001000) != 0)) {
to_bitField4_ |= 0x00000800;
}
result.mipWantedPrecision_ = mipWantedPrecision_;
if (((from_bitField4_ & 0x00002000) != 0)) {
to_bitField4_ |= 0x00001000;
}
result.mipMaxActivityExponent_ = mipMaxActivityExponent_;
if (((from_bitField4_ & 0x00004000) != 0)) {
to_bitField4_ |= 0x00002000;
}
result.mipCheckPrecision_ = mipCheckPrecision_;
result.bitField0_ = to_bitField0_;
result.bitField1_ = to_bitField1_;
result.bitField2_ = to_bitField2_;
result.bitField3_ = to_bitField3_;
result.bitField4_ = to_bitField4_;
onBuilt();
return result;
}
@java.lang.Override
public Builder clone() {
return super.clone();
}
@java.lang.Override
public Builder setField(
com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value) {
return super.setField(field, value);
}
@java.lang.Override
public Builder clearField(
com.google.protobuf.Descriptors.FieldDescriptor field) {
return super.clearField(field);
}
@java.lang.Override
public Builder clearOneof(
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
return super.clearOneof(oneof);
}
@java.lang.Override
public Builder setRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
int index, java.lang.Object value) {
return super.setRepeatedField(field, index, value);
}
@java.lang.Override
public Builder addRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value) {
return super.addRepeatedField(field, value);
}
@java.lang.Override
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof com.google.ortools.sat.SatParameters) {
return mergeFrom((com.google.ortools.sat.SatParameters)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(com.google.ortools.sat.SatParameters other) {
if (other == com.google.ortools.sat.SatParameters.getDefaultInstance()) return this;
if (other.hasPreferredVariableOrder()) {
setPreferredVariableOrder(other.getPreferredVariableOrder());
}
if (other.hasInitialPolarity()) {
setInitialPolarity(other.getInitialPolarity());
}
if (other.hasUsePhaseSaving()) {
setUsePhaseSaving(other.getUsePhaseSaving());
}
if (other.hasRandomPolarityRatio()) {
setRandomPolarityRatio(other.getRandomPolarityRatio());
}
if (other.hasRandomBranchesRatio()) {
setRandomBranchesRatio(other.getRandomBranchesRatio());
}
if (other.hasUseErwaHeuristic()) {
setUseErwaHeuristic(other.getUseErwaHeuristic());
}
if (other.hasInitialVariablesActivity()) {
setInitialVariablesActivity(other.getInitialVariablesActivity());
}
if (other.hasAlsoBumpVariablesInConflictReasons()) {
setAlsoBumpVariablesInConflictReasons(other.getAlsoBumpVariablesInConflictReasons());
}
if (other.hasMinimizationAlgorithm()) {
setMinimizationAlgorithm(other.getMinimizationAlgorithm());
}
if (other.hasBinaryMinimizationAlgorithm()) {
setBinaryMinimizationAlgorithm(other.getBinaryMinimizationAlgorithm());
}
if (other.hasSubsumptionDuringConflictAnalysis()) {
setSubsumptionDuringConflictAnalysis(other.getSubsumptionDuringConflictAnalysis());
}
if (other.hasClauseCleanupPeriod()) {
setClauseCleanupPeriod(other.getClauseCleanupPeriod());
}
if (other.hasClauseCleanupTarget()) {
setClauseCleanupTarget(other.getClauseCleanupTarget());
}
if (other.hasClauseCleanupProtection()) {
setClauseCleanupProtection(other.getClauseCleanupProtection());
}
if (other.hasClauseCleanupLbdBound()) {
setClauseCleanupLbdBound(other.getClauseCleanupLbdBound());
}
if (other.hasClauseCleanupOrdering()) {
setClauseCleanupOrdering(other.getClauseCleanupOrdering());
}
if (other.hasPbCleanupIncrement()) {
setPbCleanupIncrement(other.getPbCleanupIncrement());
}
if (other.hasPbCleanupRatio()) {
setPbCleanupRatio(other.getPbCleanupRatio());
}
if (other.hasMinimizeWithPropagationRestartPeriod()) {
setMinimizeWithPropagationRestartPeriod(other.getMinimizeWithPropagationRestartPeriod());
}
if (other.hasMinimizeWithPropagationNumDecisions()) {
setMinimizeWithPropagationNumDecisions(other.getMinimizeWithPropagationNumDecisions());
}
if (other.hasVariableActivityDecay()) {
setVariableActivityDecay(other.getVariableActivityDecay());
}
if (other.hasMaxVariableActivityValue()) {
setMaxVariableActivityValue(other.getMaxVariableActivityValue());
}
if (other.hasGlucoseMaxDecay()) {
setGlucoseMaxDecay(other.getGlucoseMaxDecay());
}
if (other.hasGlucoseDecayIncrement()) {
setGlucoseDecayIncrement(other.getGlucoseDecayIncrement());
}
if (other.hasGlucoseDecayIncrementPeriod()) {
setGlucoseDecayIncrementPeriod(other.getGlucoseDecayIncrementPeriod());
}
if (other.hasClauseActivityDecay()) {
setClauseActivityDecay(other.getClauseActivityDecay());
}
if (other.hasMaxClauseActivityValue()) {
setMaxClauseActivityValue(other.getMaxClauseActivityValue());
}
if (!other.restartAlgorithms_.isEmpty()) {
if (restartAlgorithms_.isEmpty()) {
restartAlgorithms_ = other.restartAlgorithms_;
bitField0_ = (bitField0_ & ~0x08000000);
} else {
ensureRestartAlgorithmsIsMutable();
restartAlgorithms_.addAll(other.restartAlgorithms_);
}
onChanged();
}
if (other.hasDefaultRestartAlgorithms()) {
bitField0_ |= 0x10000000;
defaultRestartAlgorithms_ = other.defaultRestartAlgorithms_;
onChanged();
}
if (other.hasRestartPeriod()) {
setRestartPeriod(other.getRestartPeriod());
}
if (other.hasRestartRunningWindowSize()) {
setRestartRunningWindowSize(other.getRestartRunningWindowSize());
}
if (other.hasRestartDlAverageRatio()) {
setRestartDlAverageRatio(other.getRestartDlAverageRatio());
}
if (other.hasRestartLbdAverageRatio()) {
setRestartLbdAverageRatio(other.getRestartLbdAverageRatio());
}
if (other.hasUseBlockingRestart()) {
setUseBlockingRestart(other.getUseBlockingRestart());
}
if (other.hasBlockingRestartWindowSize()) {
setBlockingRestartWindowSize(other.getBlockingRestartWindowSize());
}
if (other.hasBlockingRestartMultiplier()) {
setBlockingRestartMultiplier(other.getBlockingRestartMultiplier());
}
if (other.hasNumConflictsBeforeStrategyChanges()) {
setNumConflictsBeforeStrategyChanges(other.getNumConflictsBeforeStrategyChanges());
}
if (other.hasStrategyChangeIncreaseRatio()) {
setStrategyChangeIncreaseRatio(other.getStrategyChangeIncreaseRatio());
}
if (other.hasMaxTimeInSeconds()) {
setMaxTimeInSeconds(other.getMaxTimeInSeconds());
}
if (other.hasMaxDeterministicTime()) {
setMaxDeterministicTime(other.getMaxDeterministicTime());
}
if (other.hasMaxNumberOfConflicts()) {
setMaxNumberOfConflicts(other.getMaxNumberOfConflicts());
}
if (other.hasMaxMemoryInMb()) {
setMaxMemoryInMb(other.getMaxMemoryInMb());
}
if (other.hasAbsoluteGapLimit()) {
setAbsoluteGapLimit(other.getAbsoluteGapLimit());
}
if (other.hasRelativeGapLimit()) {
setRelativeGapLimit(other.getRelativeGapLimit());
}
if (other.hasTreatBinaryClausesSeparately()) {
setTreatBinaryClausesSeparately(other.getTreatBinaryClausesSeparately());
}
if (other.hasRandomSeed()) {
setRandomSeed(other.getRandomSeed());
}
if (other.hasLogSearchProgress()) {
setLogSearchProgress(other.getLogSearchProgress());
}
if (other.hasUsePbResolution()) {
setUsePbResolution(other.getUsePbResolution());
}
if (other.hasMinimizeReductionDuringPbResolution()) {
setMinimizeReductionDuringPbResolution(other.getMinimizeReductionDuringPbResolution());
}
if (other.hasCountAssumptionLevelsInLbd()) {
setCountAssumptionLevelsInLbd(other.getCountAssumptionLevelsInLbd());
}
if (other.hasPresolveBveThreshold()) {
setPresolveBveThreshold(other.getPresolveBveThreshold());
}
if (other.hasPresolveBveClauseWeight()) {
setPresolveBveClauseWeight(other.getPresolveBveClauseWeight());
}
if (other.hasPresolveProbingDeterministicTimeLimit()) {
setPresolveProbingDeterministicTimeLimit(other.getPresolveProbingDeterministicTimeLimit());
}
if (other.hasPresolveBlockedClause()) {
setPresolveBlockedClause(other.getPresolveBlockedClause());
}
if (other.hasPresolveUseBva()) {
setPresolveUseBva(other.getPresolveUseBva());
}
if (other.hasPresolveBvaThreshold()) {
setPresolveBvaThreshold(other.getPresolveBvaThreshold());
}
if (other.hasMaxPresolveIterations()) {
setMaxPresolveIterations(other.getMaxPresolveIterations());
}
if (other.hasCpModelPresolve()) {
setCpModelPresolve(other.getCpModelPresolve());
}
if (other.hasCpModelPostsolveWithFullSolver()) {
setCpModelPostsolveWithFullSolver(other.getCpModelPostsolveWithFullSolver());
}
if (other.hasCpModelMaxNumPresolveOperations()) {
setCpModelMaxNumPresolveOperations(other.getCpModelMaxNumPresolveOperations());
}
if (other.hasCpModelProbingLevel()) {
setCpModelProbingLevel(other.getCpModelProbingLevel());
}
if (other.hasCpModelUseSatPresolve()) {
setCpModelUseSatPresolve(other.getCpModelUseSatPresolve());
}
if (other.hasUseSatInprocessing()) {
setUseSatInprocessing(other.getUseSatInprocessing());
}
if (other.hasExpandElementConstraints()) {
setExpandElementConstraints(other.getExpandElementConstraints());
}
if (other.hasExpandAutomatonConstraints()) {
setExpandAutomatonConstraints(other.getExpandAutomatonConstraints());
}
if (other.hasExpandTableConstraints()) {
setExpandTableConstraints(other.getExpandTableConstraints());
}
if (other.hasMergeNoOverlapWorkLimit()) {
setMergeNoOverlapWorkLimit(other.getMergeNoOverlapWorkLimit());
}
if (other.hasMergeAtMostOneWorkLimit()) {
setMergeAtMostOneWorkLimit(other.getMergeAtMostOneWorkLimit());
}
if (other.hasPresolveSubstitutionLevel()) {
setPresolveSubstitutionLevel(other.getPresolveSubstitutionLevel());
}
if (other.hasUseOptimizationHints()) {
setUseOptimizationHints(other.getUseOptimizationHints());
}
if (other.hasMinimizeCore()) {
setMinimizeCore(other.getMinimizeCore());
}
if (other.hasFindMultipleCores()) {
setFindMultipleCores(other.getFindMultipleCores());
}
if (other.hasCoverOptimization()) {
setCoverOptimization(other.getCoverOptimization());
}
if (other.hasMaxSatAssumptionOrder()) {
setMaxSatAssumptionOrder(other.getMaxSatAssumptionOrder());
}
if (other.hasMaxSatReverseAssumptionOrder()) {
setMaxSatReverseAssumptionOrder(other.getMaxSatReverseAssumptionOrder());
}
if (other.hasMaxSatStratification()) {
setMaxSatStratification(other.getMaxSatStratification());
}
if (other.hasUsePrecedencesInDisjunctiveConstraint()) {
setUsePrecedencesInDisjunctiveConstraint(other.getUsePrecedencesInDisjunctiveConstraint());
}
if (other.hasUseOverloadCheckerInCumulativeConstraint()) {
setUseOverloadCheckerInCumulativeConstraint(other.getUseOverloadCheckerInCumulativeConstraint());
}
if (other.hasUseTimetableEdgeFindingInCumulativeConstraint()) {
setUseTimetableEdgeFindingInCumulativeConstraint(other.getUseTimetableEdgeFindingInCumulativeConstraint());
}
if (other.hasUseDisjunctiveConstraintInCumulativeConstraint()) {
setUseDisjunctiveConstraintInCumulativeConstraint(other.getUseDisjunctiveConstraintInCumulativeConstraint());
}
if (other.hasLinearizationLevel()) {
setLinearizationLevel(other.getLinearizationLevel());
}
if (other.hasBooleanEncodingLevel()) {
setBooleanEncodingLevel(other.getBooleanEncodingLevel());
}
if (other.hasMaxNumCuts()) {
setMaxNumCuts(other.getMaxNumCuts());
}
if (other.hasOnlyAddCutsAtLevelZero()) {
setOnlyAddCutsAtLevelZero(other.getOnlyAddCutsAtLevelZero());
}
if (other.hasAddKnapsackCuts()) {
setAddKnapsackCuts(other.getAddKnapsackCuts());
}
if (other.hasAddCgCuts()) {
setAddCgCuts(other.getAddCgCuts());
}
if (other.hasAddMirCuts()) {
setAddMirCuts(other.getAddMirCuts());
}
if (other.hasMaxAllDiffCutSize()) {
setMaxAllDiffCutSize(other.getMaxAllDiffCutSize());
}
if (other.hasAddLinMaxCuts()) {
setAddLinMaxCuts(other.getAddLinMaxCuts());
}
if (other.hasMaxIntegerRoundingScaling()) {
setMaxIntegerRoundingScaling(other.getMaxIntegerRoundingScaling());
}
if (other.hasAddLpConstraintsLazily()) {
setAddLpConstraintsLazily(other.getAddLpConstraintsLazily());
}
if (other.hasMinOrthogonalityForLpConstraints()) {
setMinOrthogonalityForLpConstraints(other.getMinOrthogonalityForLpConstraints());
}
if (other.hasMaxCutRoundsAtLevelZero()) {
setMaxCutRoundsAtLevelZero(other.getMaxCutRoundsAtLevelZero());
}
if (other.hasMaxConsecutiveInactiveCount()) {
setMaxConsecutiveInactiveCount(other.getMaxConsecutiveInactiveCount());
}
if (other.hasCutMaxActiveCountValue()) {
setCutMaxActiveCountValue(other.getCutMaxActiveCountValue());
}
if (other.hasCutActiveCountDecay()) {
setCutActiveCountDecay(other.getCutActiveCountDecay());
}
if (other.hasCutCleanupTarget()) {
setCutCleanupTarget(other.getCutCleanupTarget());
}
if (other.hasNewConstraintsBatchSize()) {
setNewConstraintsBatchSize(other.getNewConstraintsBatchSize());
}
if (other.hasSearchBranching()) {
setSearchBranching(other.getSearchBranching());
}
if (other.hasHintConflictLimit()) {
setHintConflictLimit(other.getHintConflictLimit());
}
if (other.hasExploitIntegerLpSolution()) {
setExploitIntegerLpSolution(other.getExploitIntegerLpSolution());
}
if (other.hasExploitAllLpSolution()) {
setExploitAllLpSolution(other.getExploitAllLpSolution());
}
if (other.hasExploitBestSolution()) {
setExploitBestSolution(other.getExploitBestSolution());
}
if (other.hasExploitRelaxationSolution()) {
setExploitRelaxationSolution(other.getExploitRelaxationSolution());
}
if (other.hasExploitObjective()) {
setExploitObjective(other.getExploitObjective());
}
if (other.hasProbingPeriodAtRoot()) {
setProbingPeriodAtRoot(other.getProbingPeriodAtRoot());
}
if (other.hasPseudoCostReliabilityThreshold()) {
setPseudoCostReliabilityThreshold(other.getPseudoCostReliabilityThreshold());
}
if (other.hasOptimizeWithCore()) {
setOptimizeWithCore(other.getOptimizeWithCore());
}
if (other.hasBinarySearchNumConflicts()) {
setBinarySearchNumConflicts(other.getBinarySearchNumConflicts());
}
if (other.hasOptimizeWithMaxHs()) {
setOptimizeWithMaxHs(other.getOptimizeWithMaxHs());
}
if (other.hasEnumerateAllSolutions()) {
setEnumerateAllSolutions(other.getEnumerateAllSolutions());
}
if (other.hasFillTightenedDomainsInResponse()) {
setFillTightenedDomainsInResponse(other.getFillTightenedDomainsInResponse());
}
if (other.hasInstantiateAllVariables()) {
setInstantiateAllVariables(other.getInstantiateAllVariables());
}
if (other.hasAutoDetectGreaterThanAtLeastOneOf()) {
setAutoDetectGreaterThanAtLeastOneOf(other.getAutoDetectGreaterThanAtLeastOneOf());
}
if (other.hasStopAfterFirstSolution()) {
setStopAfterFirstSolution(other.getStopAfterFirstSolution());
}
if (other.hasStopAfterPresolve()) {
setStopAfterPresolve(other.getStopAfterPresolve());
}
if (other.hasNumSearchWorkers()) {
setNumSearchWorkers(other.getNumSearchWorkers());
}
if (other.hasInterleaveSearch()) {
setInterleaveSearch(other.getInterleaveSearch());
}
if (other.hasInterleaveBatchSize()) {
setInterleaveBatchSize(other.getInterleaveBatchSize());
}
if (other.hasReduceMemoryUsageInInterleaveMode()) {
setReduceMemoryUsageInInterleaveMode(other.getReduceMemoryUsageInInterleaveMode());
}
if (other.hasShareObjectiveBounds()) {
setShareObjectiveBounds(other.getShareObjectiveBounds());
}
if (other.hasShareLevelZeroBounds()) {
setShareLevelZeroBounds(other.getShareLevelZeroBounds());
}
if (other.hasUseLnsOnly()) {
setUseLnsOnly(other.getUseLnsOnly());
}
if (other.hasLnsFocusOnDecisionVariables()) {
setLnsFocusOnDecisionVariables(other.getLnsFocusOnDecisionVariables());
}
if (other.hasUseRinsLns()) {
setUseRinsLns(other.getUseRinsLns());
}
if (other.hasUseFeasibilityPump()) {
setUseFeasibilityPump(other.getUseFeasibilityPump());
}
if (other.hasFpRounding()) {
setFpRounding(other.getFpRounding());
}
if (other.hasUseRelaxationLns()) {
setUseRelaxationLns(other.getUseRelaxationLns());
}
if (other.hasDiversifyLnsParams()) {
setDiversifyLnsParams(other.getDiversifyLnsParams());
}
if (other.hasRandomizeSearch()) {
setRandomizeSearch(other.getRandomizeSearch());
}
if (other.hasSearchRandomizationTolerance()) {
setSearchRandomizationTolerance(other.getSearchRandomizationTolerance());
}
if (other.hasUseOptionalVariables()) {
setUseOptionalVariables(other.getUseOptionalVariables());
}
if (other.hasUseExactLpReason()) {
setUseExactLpReason(other.getUseExactLpReason());
}
if (other.hasUseBranchingInLp()) {
setUseBranchingInLp(other.getUseBranchingInLp());
}
if (other.hasUseCombinedNoOverlap()) {
setUseCombinedNoOverlap(other.getUseCombinedNoOverlap());
}
if (other.hasCatchSigintSignal()) {
setCatchSigintSignal(other.getCatchSigintSignal());
}
if (other.hasUseImpliedBounds()) {
setUseImpliedBounds(other.getUseImpliedBounds());
}
if (other.hasMipMaxBound()) {
setMipMaxBound(other.getMipMaxBound());
}
if (other.hasMipVarScaling()) {
setMipVarScaling(other.getMipVarScaling());
}
if (other.hasMipAutomaticallyScaleVariables()) {
setMipAutomaticallyScaleVariables(other.getMipAutomaticallyScaleVariables());
}
if (other.hasMipWantedPrecision()) {
setMipWantedPrecision(other.getMipWantedPrecision());
}
if (other.hasMipMaxActivityExponent()) {
setMipMaxActivityExponent(other.getMipMaxActivityExponent());
}
if (other.hasMipCheckPrecision()) {
setMipCheckPrecision(other.getMipCheckPrecision());
}
this.mergeUnknownFields(other.unknownFields);
onChanged();
return this;
}
@java.lang.Override
public final boolean isInitialized() {
return true;
}
@java.lang.Override
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
com.google.ortools.sat.SatParameters parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (com.google.ortools.sat.SatParameters) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private int bitField1_;
private int bitField2_;
private int bitField3_;
private int bitField4_;
private int preferredVariableOrder_ = 0;
/**
* optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default = IN_ORDER];
* @return Whether the preferredVariableOrder field is set.
*/
@java.lang.Override public boolean hasPreferredVariableOrder() {
return ((bitField0_ & 0x00000001) != 0);
}
/**
* optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default = IN_ORDER];
* @return The preferredVariableOrder.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.VariableOrder getPreferredVariableOrder() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.VariableOrder result = com.google.ortools.sat.SatParameters.VariableOrder.valueOf(preferredVariableOrder_);
return result == null ? com.google.ortools.sat.SatParameters.VariableOrder.IN_ORDER : result;
}
/**
* optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default = IN_ORDER];
* @param value The preferredVariableOrder to set.
* @return This builder for chaining.
*/
public Builder setPreferredVariableOrder(com.google.ortools.sat.SatParameters.VariableOrder value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000001;
preferredVariableOrder_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.VariableOrder preferred_variable_order = 1 [default = IN_ORDER];
* @return This builder for chaining.
*/
public Builder clearPreferredVariableOrder() {
bitField0_ = (bitField0_ & ~0x00000001);
preferredVariableOrder_ = 0;
onChanged();
return this;
}
private int initialPolarity_ = 1;
/**
* optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FALSE];
* @return Whether the initialPolarity field is set.
*/
@java.lang.Override public boolean hasInitialPolarity() {
return ((bitField0_ & 0x00000002) != 0);
}
/**
* optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FALSE];
* @return The initialPolarity.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.Polarity getInitialPolarity() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.Polarity result = com.google.ortools.sat.SatParameters.Polarity.valueOf(initialPolarity_);
return result == null ? com.google.ortools.sat.SatParameters.Polarity.POLARITY_FALSE : result;
}
/**
* optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FALSE];
* @param value The initialPolarity to set.
* @return This builder for chaining.
*/
public Builder setInitialPolarity(com.google.ortools.sat.SatParameters.Polarity value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000002;
initialPolarity_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.Polarity initial_polarity = 2 [default = POLARITY_FALSE];
* @return This builder for chaining.
*/
public Builder clearInitialPolarity() {
bitField0_ = (bitField0_ & ~0x00000002);
initialPolarity_ = 1;
onChanged();
return this;
}
private boolean usePhaseSaving_ = true;
/**
*
* If this is true, then the polarity of a variable will be the last value it
* was assigned to, or its default polarity if it was never assigned since the
* call to ResetDecisionHeuristic().
* This is called 'literal phase saving'. For details see 'A Lightweight
* Component Caching Scheme for Satisfiability Solvers' K. Pipatsrisawat and
* A.Darwiche, In 10th International Conference on Theory and Applications of
* Satisfiability Testing, 2007.
*
*
* optional bool use_phase_saving = 44 [default = true];
* @return Whether the usePhaseSaving field is set.
*/
@java.lang.Override
public boolean hasUsePhaseSaving() {
return ((bitField0_ & 0x00000004) != 0);
}
/**
*
* If this is true, then the polarity of a variable will be the last value it
* was assigned to, or its default polarity if it was never assigned since the
* call to ResetDecisionHeuristic().
* This is called 'literal phase saving'. For details see 'A Lightweight
* Component Caching Scheme for Satisfiability Solvers' K. Pipatsrisawat and
* A.Darwiche, In 10th International Conference on Theory and Applications of
* Satisfiability Testing, 2007.
*
*
* optional bool use_phase_saving = 44 [default = true];
* @return The usePhaseSaving.
*/
@java.lang.Override
public boolean getUsePhaseSaving() {
return usePhaseSaving_;
}
/**
*
* If this is true, then the polarity of a variable will be the last value it
* was assigned to, or its default polarity if it was never assigned since the
* call to ResetDecisionHeuristic().
* This is called 'literal phase saving'. For details see 'A Lightweight
* Component Caching Scheme for Satisfiability Solvers' K. Pipatsrisawat and
* A.Darwiche, In 10th International Conference on Theory and Applications of
* Satisfiability Testing, 2007.
*
*
* optional bool use_phase_saving = 44 [default = true];
* @param value The usePhaseSaving to set.
* @return This builder for chaining.
*/
public Builder setUsePhaseSaving(boolean value) {
bitField0_ |= 0x00000004;
usePhaseSaving_ = value;
onChanged();
return this;
}
/**
*
* If this is true, then the polarity of a variable will be the last value it
* was assigned to, or its default polarity if it was never assigned since the
* call to ResetDecisionHeuristic().
* This is called 'literal phase saving'. For details see 'A Lightweight
* Component Caching Scheme for Satisfiability Solvers' K. Pipatsrisawat and
* A.Darwiche, In 10th International Conference on Theory and Applications of
* Satisfiability Testing, 2007.
*
*
* optional bool use_phase_saving = 44 [default = true];
* @return This builder for chaining.
*/
public Builder clearUsePhaseSaving() {
bitField0_ = (bitField0_ & ~0x00000004);
usePhaseSaving_ = true;
onChanged();
return this;
}
private double randomPolarityRatio_ ;
/**
*
* The proportion of polarity chosen at random. Note that this take
* precedence over the phase saving heuristic. This is different from
* initial_polarity:POLARITY_RANDOM because it will select a new random
* polarity each time the variable is branched upon instead of selecting one
* initially and then always taking this choice.
*
*
* optional double random_polarity_ratio = 45 [default = 0];
* @return Whether the randomPolarityRatio field is set.
*/
@java.lang.Override
public boolean hasRandomPolarityRatio() {
return ((bitField0_ & 0x00000008) != 0);
}
/**
*
* The proportion of polarity chosen at random. Note that this take
* precedence over the phase saving heuristic. This is different from
* initial_polarity:POLARITY_RANDOM because it will select a new random
* polarity each time the variable is branched upon instead of selecting one
* initially and then always taking this choice.
*
*
* optional double random_polarity_ratio = 45 [default = 0];
* @return The randomPolarityRatio.
*/
@java.lang.Override
public double getRandomPolarityRatio() {
return randomPolarityRatio_;
}
/**
*
* The proportion of polarity chosen at random. Note that this take
* precedence over the phase saving heuristic. This is different from
* initial_polarity:POLARITY_RANDOM because it will select a new random
* polarity each time the variable is branched upon instead of selecting one
* initially and then always taking this choice.
*
*
* optional double random_polarity_ratio = 45 [default = 0];
* @param value The randomPolarityRatio to set.
* @return This builder for chaining.
*/
public Builder setRandomPolarityRatio(double value) {
bitField0_ |= 0x00000008;
randomPolarityRatio_ = value;
onChanged();
return this;
}
/**
*
* The proportion of polarity chosen at random. Note that this take
* precedence over the phase saving heuristic. This is different from
* initial_polarity:POLARITY_RANDOM because it will select a new random
* polarity each time the variable is branched upon instead of selecting one
* initially and then always taking this choice.
*
*
* optional double random_polarity_ratio = 45 [default = 0];
* @return This builder for chaining.
*/
public Builder clearRandomPolarityRatio() {
bitField0_ = (bitField0_ & ~0x00000008);
randomPolarityRatio_ = 0D;
onChanged();
return this;
}
private double randomBranchesRatio_ ;
/**
*
* A number between 0 and 1 that indicates the proportion of branching
* variables that are selected randomly instead of choosing the first variable
* from the given variable_ordering strategy.
*
*
* optional double random_branches_ratio = 32 [default = 0];
* @return Whether the randomBranchesRatio field is set.
*/
@java.lang.Override
public boolean hasRandomBranchesRatio() {
return ((bitField0_ & 0x00000010) != 0);
}
/**
*
* A number between 0 and 1 that indicates the proportion of branching
* variables that are selected randomly instead of choosing the first variable
* from the given variable_ordering strategy.
*
*
* optional double random_branches_ratio = 32 [default = 0];
* @return The randomBranchesRatio.
*/
@java.lang.Override
public double getRandomBranchesRatio() {
return randomBranchesRatio_;
}
/**
*
* A number between 0 and 1 that indicates the proportion of branching
* variables that are selected randomly instead of choosing the first variable
* from the given variable_ordering strategy.
*
*
* optional double random_branches_ratio = 32 [default = 0];
* @param value The randomBranchesRatio to set.
* @return This builder for chaining.
*/
public Builder setRandomBranchesRatio(double value) {
bitField0_ |= 0x00000010;
randomBranchesRatio_ = value;
onChanged();
return this;
}
/**
*
* A number between 0 and 1 that indicates the proportion of branching
* variables that are selected randomly instead of choosing the first variable
* from the given variable_ordering strategy.
*
*
* optional double random_branches_ratio = 32 [default = 0];
* @return This builder for chaining.
*/
public Builder clearRandomBranchesRatio() {
bitField0_ = (bitField0_ & ~0x00000010);
randomBranchesRatio_ = 0D;
onChanged();
return this;
}
private boolean useErwaHeuristic_ ;
/**
*
* Whether we use the ERWA (Exponential Recency Weighted Average) heuristic as
* described in "Learning Rate Based Branching Heuristic for SAT solvers",
* J.H.Liang, V. Ganesh, P. Poupart, K.Czarnecki, SAT 2016.
*
*
* optional bool use_erwa_heuristic = 75 [default = false];
* @return Whether the useErwaHeuristic field is set.
*/
@java.lang.Override
public boolean hasUseErwaHeuristic() {
return ((bitField0_ & 0x00000020) != 0);
}
/**
*
* Whether we use the ERWA (Exponential Recency Weighted Average) heuristic as
* described in "Learning Rate Based Branching Heuristic for SAT solvers",
* J.H.Liang, V. Ganesh, P. Poupart, K.Czarnecki, SAT 2016.
*
*
* optional bool use_erwa_heuristic = 75 [default = false];
* @return The useErwaHeuristic.
*/
@java.lang.Override
public boolean getUseErwaHeuristic() {
return useErwaHeuristic_;
}
/**
*
* Whether we use the ERWA (Exponential Recency Weighted Average) heuristic as
* described in "Learning Rate Based Branching Heuristic for SAT solvers",
* J.H.Liang, V. Ganesh, P. Poupart, K.Czarnecki, SAT 2016.
*
*
* optional bool use_erwa_heuristic = 75 [default = false];
* @param value The useErwaHeuristic to set.
* @return This builder for chaining.
*/
public Builder setUseErwaHeuristic(boolean value) {
bitField0_ |= 0x00000020;
useErwaHeuristic_ = value;
onChanged();
return this;
}
/**
*
* Whether we use the ERWA (Exponential Recency Weighted Average) heuristic as
* described in "Learning Rate Based Branching Heuristic for SAT solvers",
* J.H.Liang, V. Ganesh, P. Poupart, K.Czarnecki, SAT 2016.
*
*
* optional bool use_erwa_heuristic = 75 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseErwaHeuristic() {
bitField0_ = (bitField0_ & ~0x00000020);
useErwaHeuristic_ = false;
onChanged();
return this;
}
private double initialVariablesActivity_ ;
/**
*
* The initial value of the variables activity. A non-zero value only make
* sense when use_erwa_heuristic is true. Experiments with a value of 1e-2
* together with the ERWA heuristic showed slighthly better result than simply
* using zero. The idea is that when the "learning rate" of a variable becomes
* lower than this value, then we prefer to branch on never explored before
* variables. This is not in the ERWA paper.
*
*
* optional double initial_variables_activity = 76 [default = 0];
* @return Whether the initialVariablesActivity field is set.
*/
@java.lang.Override
public boolean hasInitialVariablesActivity() {
return ((bitField0_ & 0x00000040) != 0);
}
/**
*
* The initial value of the variables activity. A non-zero value only make
* sense when use_erwa_heuristic is true. Experiments with a value of 1e-2
* together with the ERWA heuristic showed slighthly better result than simply
* using zero. The idea is that when the "learning rate" of a variable becomes
* lower than this value, then we prefer to branch on never explored before
* variables. This is not in the ERWA paper.
*
*
* optional double initial_variables_activity = 76 [default = 0];
* @return The initialVariablesActivity.
*/
@java.lang.Override
public double getInitialVariablesActivity() {
return initialVariablesActivity_;
}
/**
*
* The initial value of the variables activity. A non-zero value only make
* sense when use_erwa_heuristic is true. Experiments with a value of 1e-2
* together with the ERWA heuristic showed slighthly better result than simply
* using zero. The idea is that when the "learning rate" of a variable becomes
* lower than this value, then we prefer to branch on never explored before
* variables. This is not in the ERWA paper.
*
*
* optional double initial_variables_activity = 76 [default = 0];
* @param value The initialVariablesActivity to set.
* @return This builder for chaining.
*/
public Builder setInitialVariablesActivity(double value) {
bitField0_ |= 0x00000040;
initialVariablesActivity_ = value;
onChanged();
return this;
}
/**
*
* The initial value of the variables activity. A non-zero value only make
* sense when use_erwa_heuristic is true. Experiments with a value of 1e-2
* together with the ERWA heuristic showed slighthly better result than simply
* using zero. The idea is that when the "learning rate" of a variable becomes
* lower than this value, then we prefer to branch on never explored before
* variables. This is not in the ERWA paper.
*
*
* optional double initial_variables_activity = 76 [default = 0];
* @return This builder for chaining.
*/
public Builder clearInitialVariablesActivity() {
bitField0_ = (bitField0_ & ~0x00000040);
initialVariablesActivity_ = 0D;
onChanged();
return this;
}
private boolean alsoBumpVariablesInConflictReasons_ ;
/**
*
* When this is true, then the variables that appear in any of the reason of
* the variables in a conflict have their activity bumped. This is addition to
* the variables in the conflict, and the one that were used during conflict
* resolution.
*
*
* optional bool also_bump_variables_in_conflict_reasons = 77 [default = false];
* @return Whether the alsoBumpVariablesInConflictReasons field is set.
*/
@java.lang.Override
public boolean hasAlsoBumpVariablesInConflictReasons() {
return ((bitField0_ & 0x00000080) != 0);
}
/**
*
* When this is true, then the variables that appear in any of the reason of
* the variables in a conflict have their activity bumped. This is addition to
* the variables in the conflict, and the one that were used during conflict
* resolution.
*
*
* optional bool also_bump_variables_in_conflict_reasons = 77 [default = false];
* @return The alsoBumpVariablesInConflictReasons.
*/
@java.lang.Override
public boolean getAlsoBumpVariablesInConflictReasons() {
return alsoBumpVariablesInConflictReasons_;
}
/**
*
* When this is true, then the variables that appear in any of the reason of
* the variables in a conflict have their activity bumped. This is addition to
* the variables in the conflict, and the one that were used during conflict
* resolution.
*
*
* optional bool also_bump_variables_in_conflict_reasons = 77 [default = false];
* @param value The alsoBumpVariablesInConflictReasons to set.
* @return This builder for chaining.
*/
public Builder setAlsoBumpVariablesInConflictReasons(boolean value) {
bitField0_ |= 0x00000080;
alsoBumpVariablesInConflictReasons_ = value;
onChanged();
return this;
}
/**
*
* When this is true, then the variables that appear in any of the reason of
* the variables in a conflict have their activity bumped. This is addition to
* the variables in the conflict, and the one that were used during conflict
* resolution.
*
*
* optional bool also_bump_variables_in_conflict_reasons = 77 [default = false];
* @return This builder for chaining.
*/
public Builder clearAlsoBumpVariablesInConflictReasons() {
bitField0_ = (bitField0_ & ~0x00000080);
alsoBumpVariablesInConflictReasons_ = false;
onChanged();
return this;
}
private int minimizationAlgorithm_ = 2;
/**
* optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm = 4 [default = RECURSIVE];
* @return Whether the minimizationAlgorithm field is set.
*/
@java.lang.Override public boolean hasMinimizationAlgorithm() {
return ((bitField0_ & 0x00000100) != 0);
}
/**
* optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm = 4 [default = RECURSIVE];
* @return The minimizationAlgorithm.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm getMinimizationAlgorithm() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm result = com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.valueOf(minimizationAlgorithm_);
return result == null ? com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm.RECURSIVE : result;
}
/**
* optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm = 4 [default = RECURSIVE];
* @param value The minimizationAlgorithm to set.
* @return This builder for chaining.
*/
public Builder setMinimizationAlgorithm(com.google.ortools.sat.SatParameters.ConflictMinimizationAlgorithm value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000100;
minimizationAlgorithm_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.ConflictMinimizationAlgorithm minimization_algorithm = 4 [default = RECURSIVE];
* @return This builder for chaining.
*/
public Builder clearMinimizationAlgorithm() {
bitField0_ = (bitField0_ & ~0x00000100);
minimizationAlgorithm_ = 2;
onChanged();
return this;
}
private int binaryMinimizationAlgorithm_ = 1;
/**
* optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorithm = 34 [default = BINARY_MINIMIZATION_FIRST];
* @return Whether the binaryMinimizationAlgorithm field is set.
*/
@java.lang.Override public boolean hasBinaryMinimizationAlgorithm() {
return ((bitField0_ & 0x00000200) != 0);
}
/**
* optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorithm = 34 [default = BINARY_MINIMIZATION_FIRST];
* @return The binaryMinimizationAlgorithm.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm getBinaryMinimizationAlgorithm() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm result = com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm.valueOf(binaryMinimizationAlgorithm_);
return result == null ? com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm.BINARY_MINIMIZATION_FIRST : result;
}
/**
* optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorithm = 34 [default = BINARY_MINIMIZATION_FIRST];
* @param value The binaryMinimizationAlgorithm to set.
* @return This builder for chaining.
*/
public Builder setBinaryMinimizationAlgorithm(com.google.ortools.sat.SatParameters.BinaryMinizationAlgorithm value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000200;
binaryMinimizationAlgorithm_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.BinaryMinizationAlgorithm binary_minimization_algorithm = 34 [default = BINARY_MINIMIZATION_FIRST];
* @return This builder for chaining.
*/
public Builder clearBinaryMinimizationAlgorithm() {
bitField0_ = (bitField0_ & ~0x00000200);
binaryMinimizationAlgorithm_ = 1;
onChanged();
return this;
}
private boolean subsumptionDuringConflictAnalysis_ = true;
/**
*
* At a really low cost, during the 1-UIP conflict computation, it is easy to
* detect if some of the involved reasons are subsumed by the current
* conflict. When this is true, such clauses are detached and later removed
* from the problem.
*
*
* optional bool subsumption_during_conflict_analysis = 56 [default = true];
* @return Whether the subsumptionDuringConflictAnalysis field is set.
*/
@java.lang.Override
public boolean hasSubsumptionDuringConflictAnalysis() {
return ((bitField0_ & 0x00000400) != 0);
}
/**
*
* At a really low cost, during the 1-UIP conflict computation, it is easy to
* detect if some of the involved reasons are subsumed by the current
* conflict. When this is true, such clauses are detached and later removed
* from the problem.
*
*
* optional bool subsumption_during_conflict_analysis = 56 [default = true];
* @return The subsumptionDuringConflictAnalysis.
*/
@java.lang.Override
public boolean getSubsumptionDuringConflictAnalysis() {
return subsumptionDuringConflictAnalysis_;
}
/**
*
* At a really low cost, during the 1-UIP conflict computation, it is easy to
* detect if some of the involved reasons are subsumed by the current
* conflict. When this is true, such clauses are detached and later removed
* from the problem.
*
*
* optional bool subsumption_during_conflict_analysis = 56 [default = true];
* @param value The subsumptionDuringConflictAnalysis to set.
* @return This builder for chaining.
*/
public Builder setSubsumptionDuringConflictAnalysis(boolean value) {
bitField0_ |= 0x00000400;
subsumptionDuringConflictAnalysis_ = value;
onChanged();
return this;
}
/**
*
* At a really low cost, during the 1-UIP conflict computation, it is easy to
* detect if some of the involved reasons are subsumed by the current
* conflict. When this is true, such clauses are detached and later removed
* from the problem.
*
*
* optional bool subsumption_during_conflict_analysis = 56 [default = true];
* @return This builder for chaining.
*/
public Builder clearSubsumptionDuringConflictAnalysis() {
bitField0_ = (bitField0_ & ~0x00000400);
subsumptionDuringConflictAnalysis_ = true;
onChanged();
return this;
}
private int clauseCleanupPeriod_ = 10000;
/**
*
* Trigger a cleanup when this number of "deletable" clauses is learned.
*
*
* optional int32 clause_cleanup_period = 11 [default = 10000];
* @return Whether the clauseCleanupPeriod field is set.
*/
@java.lang.Override
public boolean hasClauseCleanupPeriod() {
return ((bitField0_ & 0x00000800) != 0);
}
/**
*
* Trigger a cleanup when this number of "deletable" clauses is learned.
*
*
* optional int32 clause_cleanup_period = 11 [default = 10000];
* @return The clauseCleanupPeriod.
*/
@java.lang.Override
public int getClauseCleanupPeriod() {
return clauseCleanupPeriod_;
}
/**
*
* Trigger a cleanup when this number of "deletable" clauses is learned.
*
*
* optional int32 clause_cleanup_period = 11 [default = 10000];
* @param value The clauseCleanupPeriod to set.
* @return This builder for chaining.
*/
public Builder setClauseCleanupPeriod(int value) {
bitField0_ |= 0x00000800;
clauseCleanupPeriod_ = value;
onChanged();
return this;
}
/**
*
* Trigger a cleanup when this number of "deletable" clauses is learned.
*
*
* optional int32 clause_cleanup_period = 11 [default = 10000];
* @return This builder for chaining.
*/
public Builder clearClauseCleanupPeriod() {
bitField0_ = (bitField0_ & ~0x00000800);
clauseCleanupPeriod_ = 10000;
onChanged();
return this;
}
private int clauseCleanupTarget_ = 10000;
/**
*
* During a cleanup, we will always keep that number of "deletable" clauses.
* Note that this doesn't include the "protected" clauses.
*
*
* optional int32 clause_cleanup_target = 13 [default = 10000];
* @return Whether the clauseCleanupTarget field is set.
*/
@java.lang.Override
public boolean hasClauseCleanupTarget() {
return ((bitField0_ & 0x00001000) != 0);
}
/**
*
* During a cleanup, we will always keep that number of "deletable" clauses.
* Note that this doesn't include the "protected" clauses.
*
*
* optional int32 clause_cleanup_target = 13 [default = 10000];
* @return The clauseCleanupTarget.
*/
@java.lang.Override
public int getClauseCleanupTarget() {
return clauseCleanupTarget_;
}
/**
*
* During a cleanup, we will always keep that number of "deletable" clauses.
* Note that this doesn't include the "protected" clauses.
*
*
* optional int32 clause_cleanup_target = 13 [default = 10000];
* @param value The clauseCleanupTarget to set.
* @return This builder for chaining.
*/
public Builder setClauseCleanupTarget(int value) {
bitField0_ |= 0x00001000;
clauseCleanupTarget_ = value;
onChanged();
return this;
}
/**
*
* During a cleanup, we will always keep that number of "deletable" clauses.
* Note that this doesn't include the "protected" clauses.
*
*
* optional int32 clause_cleanup_target = 13 [default = 10000];
* @return This builder for chaining.
*/
public Builder clearClauseCleanupTarget() {
bitField0_ = (bitField0_ & ~0x00001000);
clauseCleanupTarget_ = 10000;
onChanged();
return this;
}
private int clauseCleanupProtection_ = 0;
/**
* optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [default = PROTECTION_NONE];
* @return Whether the clauseCleanupProtection field is set.
*/
@java.lang.Override public boolean hasClauseCleanupProtection() {
return ((bitField0_ & 0x00002000) != 0);
}
/**
* optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [default = PROTECTION_NONE];
* @return The clauseCleanupProtection.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.ClauseProtection getClauseCleanupProtection() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ClauseProtection result = com.google.ortools.sat.SatParameters.ClauseProtection.valueOf(clauseCleanupProtection_);
return result == null ? com.google.ortools.sat.SatParameters.ClauseProtection.PROTECTION_NONE : result;
}
/**
* optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [default = PROTECTION_NONE];
* @param value The clauseCleanupProtection to set.
* @return This builder for chaining.
*/
public Builder setClauseCleanupProtection(com.google.ortools.sat.SatParameters.ClauseProtection value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00002000;
clauseCleanupProtection_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.ClauseProtection clause_cleanup_protection = 58 [default = PROTECTION_NONE];
* @return This builder for chaining.
*/
public Builder clearClauseCleanupProtection() {
bitField0_ = (bitField0_ & ~0x00002000);
clauseCleanupProtection_ = 0;
onChanged();
return this;
}
private int clauseCleanupLbdBound_ = 5;
/**
*
* All the clauses with a LBD (literal blocks distance) lower or equal to this
* parameters will always be kept.
*
*
* optional int32 clause_cleanup_lbd_bound = 59 [default = 5];
* @return Whether the clauseCleanupLbdBound field is set.
*/
@java.lang.Override
public boolean hasClauseCleanupLbdBound() {
return ((bitField0_ & 0x00004000) != 0);
}
/**
*
* All the clauses with a LBD (literal blocks distance) lower or equal to this
* parameters will always be kept.
*
*
* optional int32 clause_cleanup_lbd_bound = 59 [default = 5];
* @return The clauseCleanupLbdBound.
*/
@java.lang.Override
public int getClauseCleanupLbdBound() {
return clauseCleanupLbdBound_;
}
/**
*
* All the clauses with a LBD (literal blocks distance) lower or equal to this
* parameters will always be kept.
*
*
* optional int32 clause_cleanup_lbd_bound = 59 [default = 5];
* @param value The clauseCleanupLbdBound to set.
* @return This builder for chaining.
*/
public Builder setClauseCleanupLbdBound(int value) {
bitField0_ |= 0x00004000;
clauseCleanupLbdBound_ = value;
onChanged();
return this;
}
/**
*
* All the clauses with a LBD (literal blocks distance) lower or equal to this
* parameters will always be kept.
*
*
* optional int32 clause_cleanup_lbd_bound = 59 [default = 5];
* @return This builder for chaining.
*/
public Builder clearClauseCleanupLbdBound() {
bitField0_ = (bitField0_ & ~0x00004000);
clauseCleanupLbdBound_ = 5;
onChanged();
return this;
}
private int clauseCleanupOrdering_ = 0;
/**
* optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default = CLAUSE_ACTIVITY];
* @return Whether the clauseCleanupOrdering field is set.
*/
@java.lang.Override public boolean hasClauseCleanupOrdering() {
return ((bitField0_ & 0x00008000) != 0);
}
/**
* optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default = CLAUSE_ACTIVITY];
* @return The clauseCleanupOrdering.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.ClauseOrdering getClauseCleanupOrdering() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.ClauseOrdering result = com.google.ortools.sat.SatParameters.ClauseOrdering.valueOf(clauseCleanupOrdering_);
return result == null ? com.google.ortools.sat.SatParameters.ClauseOrdering.CLAUSE_ACTIVITY : result;
}
/**
* optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default = CLAUSE_ACTIVITY];
* @param value The clauseCleanupOrdering to set.
* @return This builder for chaining.
*/
public Builder setClauseCleanupOrdering(com.google.ortools.sat.SatParameters.ClauseOrdering value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00008000;
clauseCleanupOrdering_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.ClauseOrdering clause_cleanup_ordering = 60 [default = CLAUSE_ACTIVITY];
* @return This builder for chaining.
*/
public Builder clearClauseCleanupOrdering() {
bitField0_ = (bitField0_ & ~0x00008000);
clauseCleanupOrdering_ = 0;
onChanged();
return this;
}
private int pbCleanupIncrement_ = 200;
/**
*
* Same as for the clauses, but for the learned pseudo-Boolean constraints.
*
*
* optional int32 pb_cleanup_increment = 46 [default = 200];
* @return Whether the pbCleanupIncrement field is set.
*/
@java.lang.Override
public boolean hasPbCleanupIncrement() {
return ((bitField0_ & 0x00010000) != 0);
}
/**
*
* Same as for the clauses, but for the learned pseudo-Boolean constraints.
*
*
* optional int32 pb_cleanup_increment = 46 [default = 200];
* @return The pbCleanupIncrement.
*/
@java.lang.Override
public int getPbCleanupIncrement() {
return pbCleanupIncrement_;
}
/**
*
* Same as for the clauses, but for the learned pseudo-Boolean constraints.
*
*
* optional int32 pb_cleanup_increment = 46 [default = 200];
* @param value The pbCleanupIncrement to set.
* @return This builder for chaining.
*/
public Builder setPbCleanupIncrement(int value) {
bitField0_ |= 0x00010000;
pbCleanupIncrement_ = value;
onChanged();
return this;
}
/**
*
* Same as for the clauses, but for the learned pseudo-Boolean constraints.
*
*
* optional int32 pb_cleanup_increment = 46 [default = 200];
* @return This builder for chaining.
*/
public Builder clearPbCleanupIncrement() {
bitField0_ = (bitField0_ & ~0x00010000);
pbCleanupIncrement_ = 200;
onChanged();
return this;
}
private double pbCleanupRatio_ = 0.5D;
/**
* optional double pb_cleanup_ratio = 47 [default = 0.5];
* @return Whether the pbCleanupRatio field is set.
*/
@java.lang.Override
public boolean hasPbCleanupRatio() {
return ((bitField0_ & 0x00020000) != 0);
}
/**
* optional double pb_cleanup_ratio = 47 [default = 0.5];
* @return The pbCleanupRatio.
*/
@java.lang.Override
public double getPbCleanupRatio() {
return pbCleanupRatio_;
}
/**
* optional double pb_cleanup_ratio = 47 [default = 0.5];
* @param value The pbCleanupRatio to set.
* @return This builder for chaining.
*/
public Builder setPbCleanupRatio(double value) {
bitField0_ |= 0x00020000;
pbCleanupRatio_ = value;
onChanged();
return this;
}
/**
* optional double pb_cleanup_ratio = 47 [default = 0.5];
* @return This builder for chaining.
*/
public Builder clearPbCleanupRatio() {
bitField0_ = (bitField0_ & ~0x00020000);
pbCleanupRatio_ = 0.5D;
onChanged();
return this;
}
private int minimizeWithPropagationRestartPeriod_ = 10;
/**
*
* Parameters for an heuristic similar to the one descibed in "An effective
* learnt clause minimization approach for CDCL Sat Solvers",
* https://www.ijcai.org/proceedings/2017/0098.pdf
* For now, we have a somewhat simpler implementation where every x restart we
* spend y decisions on clause minimization. The minimization technique is the
* same as the one used to minimize core in max-sat. We also minimize problem
* clauses and not just the learned clause that we keep forever like in the
* paper.
* Changing these parameters or the kind of clause we minimize seems to have
* a big impact on the overall perf on our benchmarks. So this technique seems
* definitely useful, but it is hard to tune properly.
*
*
* optional int32 minimize_with_propagation_restart_period = 96 [default = 10];
* @return Whether the minimizeWithPropagationRestartPeriod field is set.
*/
@java.lang.Override
public boolean hasMinimizeWithPropagationRestartPeriod() {
return ((bitField0_ & 0x00040000) != 0);
}
/**
*
* Parameters for an heuristic similar to the one descibed in "An effective
* learnt clause minimization approach for CDCL Sat Solvers",
* https://www.ijcai.org/proceedings/2017/0098.pdf
* For now, we have a somewhat simpler implementation where every x restart we
* spend y decisions on clause minimization. The minimization technique is the
* same as the one used to minimize core in max-sat. We also minimize problem
* clauses and not just the learned clause that we keep forever like in the
* paper.
* Changing these parameters or the kind of clause we minimize seems to have
* a big impact on the overall perf on our benchmarks. So this technique seems
* definitely useful, but it is hard to tune properly.
*
*
* optional int32 minimize_with_propagation_restart_period = 96 [default = 10];
* @return The minimizeWithPropagationRestartPeriod.
*/
@java.lang.Override
public int getMinimizeWithPropagationRestartPeriod() {
return minimizeWithPropagationRestartPeriod_;
}
/**
*
* Parameters for an heuristic similar to the one descibed in "An effective
* learnt clause minimization approach for CDCL Sat Solvers",
* https://www.ijcai.org/proceedings/2017/0098.pdf
* For now, we have a somewhat simpler implementation where every x restart we
* spend y decisions on clause minimization. The minimization technique is the
* same as the one used to minimize core in max-sat. We also minimize problem
* clauses and not just the learned clause that we keep forever like in the
* paper.
* Changing these parameters or the kind of clause we minimize seems to have
* a big impact on the overall perf on our benchmarks. So this technique seems
* definitely useful, but it is hard to tune properly.
*
*
* optional int32 minimize_with_propagation_restart_period = 96 [default = 10];
* @param value The minimizeWithPropagationRestartPeriod to set.
* @return This builder for chaining.
*/
public Builder setMinimizeWithPropagationRestartPeriod(int value) {
bitField0_ |= 0x00040000;
minimizeWithPropagationRestartPeriod_ = value;
onChanged();
return this;
}
/**
*
* Parameters for an heuristic similar to the one descibed in "An effective
* learnt clause minimization approach for CDCL Sat Solvers",
* https://www.ijcai.org/proceedings/2017/0098.pdf
* For now, we have a somewhat simpler implementation where every x restart we
* spend y decisions on clause minimization. The minimization technique is the
* same as the one used to minimize core in max-sat. We also minimize problem
* clauses and not just the learned clause that we keep forever like in the
* paper.
* Changing these parameters or the kind of clause we minimize seems to have
* a big impact on the overall perf on our benchmarks. So this technique seems
* definitely useful, but it is hard to tune properly.
*
*
* optional int32 minimize_with_propagation_restart_period = 96 [default = 10];
* @return This builder for chaining.
*/
public Builder clearMinimizeWithPropagationRestartPeriod() {
bitField0_ = (bitField0_ & ~0x00040000);
minimizeWithPropagationRestartPeriod_ = 10;
onChanged();
return this;
}
private int minimizeWithPropagationNumDecisions_ = 1000;
/**
* optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
* @return Whether the minimizeWithPropagationNumDecisions field is set.
*/
@java.lang.Override
public boolean hasMinimizeWithPropagationNumDecisions() {
return ((bitField0_ & 0x00080000) != 0);
}
/**
* optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
* @return The minimizeWithPropagationNumDecisions.
*/
@java.lang.Override
public int getMinimizeWithPropagationNumDecisions() {
return minimizeWithPropagationNumDecisions_;
}
/**
* optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
* @param value The minimizeWithPropagationNumDecisions to set.
* @return This builder for chaining.
*/
public Builder setMinimizeWithPropagationNumDecisions(int value) {
bitField0_ |= 0x00080000;
minimizeWithPropagationNumDecisions_ = value;
onChanged();
return this;
}
/**
* optional int32 minimize_with_propagation_num_decisions = 97 [default = 1000];
* @return This builder for chaining.
*/
public Builder clearMinimizeWithPropagationNumDecisions() {
bitField0_ = (bitField0_ & ~0x00080000);
minimizeWithPropagationNumDecisions_ = 1000;
onChanged();
return this;
}
private double variableActivityDecay_ = 0.8D;
/**
*
* Each time a conflict is found, the activities of some variables are
* increased by one. Then, the activity of all variables are multiplied by
* variable_activity_decay.
* To implement this efficiently, the activity of all the variables is not
* decayed at each conflict. Instead, the activity increment is multiplied by
* 1 / decay. When an activity reach max_variable_activity_value, all the
* activity are multiplied by 1 / max_variable_activity_value.
*
*
* optional double variable_activity_decay = 15 [default = 0.8];
* @return Whether the variableActivityDecay field is set.
*/
@java.lang.Override
public boolean hasVariableActivityDecay() {
return ((bitField0_ & 0x00100000) != 0);
}
/**
*
* Each time a conflict is found, the activities of some variables are
* increased by one. Then, the activity of all variables are multiplied by
* variable_activity_decay.
* To implement this efficiently, the activity of all the variables is not
* decayed at each conflict. Instead, the activity increment is multiplied by
* 1 / decay. When an activity reach max_variable_activity_value, all the
* activity are multiplied by 1 / max_variable_activity_value.
*
*
* optional double variable_activity_decay = 15 [default = 0.8];
* @return The variableActivityDecay.
*/
@java.lang.Override
public double getVariableActivityDecay() {
return variableActivityDecay_;
}
/**
*
* Each time a conflict is found, the activities of some variables are
* increased by one. Then, the activity of all variables are multiplied by
* variable_activity_decay.
* To implement this efficiently, the activity of all the variables is not
* decayed at each conflict. Instead, the activity increment is multiplied by
* 1 / decay. When an activity reach max_variable_activity_value, all the
* activity are multiplied by 1 / max_variable_activity_value.
*
*
* optional double variable_activity_decay = 15 [default = 0.8];
* @param value The variableActivityDecay to set.
* @return This builder for chaining.
*/
public Builder setVariableActivityDecay(double value) {
bitField0_ |= 0x00100000;
variableActivityDecay_ = value;
onChanged();
return this;
}
/**
*
* Each time a conflict is found, the activities of some variables are
* increased by one. Then, the activity of all variables are multiplied by
* variable_activity_decay.
* To implement this efficiently, the activity of all the variables is not
* decayed at each conflict. Instead, the activity increment is multiplied by
* 1 / decay. When an activity reach max_variable_activity_value, all the
* activity are multiplied by 1 / max_variable_activity_value.
*
*
* optional double variable_activity_decay = 15 [default = 0.8];
* @return This builder for chaining.
*/
public Builder clearVariableActivityDecay() {
bitField0_ = (bitField0_ & ~0x00100000);
variableActivityDecay_ = 0.8D;
onChanged();
return this;
}
private double maxVariableActivityValue_ = 1e+100D;
/**
* optional double max_variable_activity_value = 16 [default = 1e+100];
* @return Whether the maxVariableActivityValue field is set.
*/
@java.lang.Override
public boolean hasMaxVariableActivityValue() {
return ((bitField0_ & 0x00200000) != 0);
}
/**
* optional double max_variable_activity_value = 16 [default = 1e+100];
* @return The maxVariableActivityValue.
*/
@java.lang.Override
public double getMaxVariableActivityValue() {
return maxVariableActivityValue_;
}
/**
* optional double max_variable_activity_value = 16 [default = 1e+100];
* @param value The maxVariableActivityValue to set.
* @return This builder for chaining.
*/
public Builder setMaxVariableActivityValue(double value) {
bitField0_ |= 0x00200000;
maxVariableActivityValue_ = value;
onChanged();
return this;
}
/**
* optional double max_variable_activity_value = 16 [default = 1e+100];
* @return This builder for chaining.
*/
public Builder clearMaxVariableActivityValue() {
bitField0_ = (bitField0_ & ~0x00200000);
maxVariableActivityValue_ = 1e+100D;
onChanged();
return this;
}
private double glucoseMaxDecay_ = 0.95D;
/**
*
* The activity starts at 0.8 and increment by 0.01 every 5000 conflicts until
* 0.95. This "hack" seems to work well and comes from:
* Glucose 2.3 in the SAT 2013 Competition - SAT Competition 2013
* http://edacc4.informatik.uni-ulm.de/SC13/solver-description-download/136
*
*
* optional double glucose_max_decay = 22 [default = 0.95];
* @return Whether the glucoseMaxDecay field is set.
*/
@java.lang.Override
public boolean hasGlucoseMaxDecay() {
return ((bitField0_ & 0x00400000) != 0);
}
/**
*
* The activity starts at 0.8 and increment by 0.01 every 5000 conflicts until
* 0.95. This "hack" seems to work well and comes from:
* Glucose 2.3 in the SAT 2013 Competition - SAT Competition 2013
* http://edacc4.informatik.uni-ulm.de/SC13/solver-description-download/136
*
*
* optional double glucose_max_decay = 22 [default = 0.95];
* @return The glucoseMaxDecay.
*/
@java.lang.Override
public double getGlucoseMaxDecay() {
return glucoseMaxDecay_;
}
/**
*
* The activity starts at 0.8 and increment by 0.01 every 5000 conflicts until
* 0.95. This "hack" seems to work well and comes from:
* Glucose 2.3 in the SAT 2013 Competition - SAT Competition 2013
* http://edacc4.informatik.uni-ulm.de/SC13/solver-description-download/136
*
*
* optional double glucose_max_decay = 22 [default = 0.95];
* @param value The glucoseMaxDecay to set.
* @return This builder for chaining.
*/
public Builder setGlucoseMaxDecay(double value) {
bitField0_ |= 0x00400000;
glucoseMaxDecay_ = value;
onChanged();
return this;
}
/**
*
* The activity starts at 0.8 and increment by 0.01 every 5000 conflicts until
* 0.95. This "hack" seems to work well and comes from:
* Glucose 2.3 in the SAT 2013 Competition - SAT Competition 2013
* http://edacc4.informatik.uni-ulm.de/SC13/solver-description-download/136
*
*
* optional double glucose_max_decay = 22 [default = 0.95];
* @return This builder for chaining.
*/
public Builder clearGlucoseMaxDecay() {
bitField0_ = (bitField0_ & ~0x00400000);
glucoseMaxDecay_ = 0.95D;
onChanged();
return this;
}
private double glucoseDecayIncrement_ = 0.01D;
/**
* optional double glucose_decay_increment = 23 [default = 0.01];
* @return Whether the glucoseDecayIncrement field is set.
*/
@java.lang.Override
public boolean hasGlucoseDecayIncrement() {
return ((bitField0_ & 0x00800000) != 0);
}
/**
* optional double glucose_decay_increment = 23 [default = 0.01];
* @return The glucoseDecayIncrement.
*/
@java.lang.Override
public double getGlucoseDecayIncrement() {
return glucoseDecayIncrement_;
}
/**
* optional double glucose_decay_increment = 23 [default = 0.01];
* @param value The glucoseDecayIncrement to set.
* @return This builder for chaining.
*/
public Builder setGlucoseDecayIncrement(double value) {
bitField0_ |= 0x00800000;
glucoseDecayIncrement_ = value;
onChanged();
return this;
}
/**
* optional double glucose_decay_increment = 23 [default = 0.01];
* @return This builder for chaining.
*/
public Builder clearGlucoseDecayIncrement() {
bitField0_ = (bitField0_ & ~0x00800000);
glucoseDecayIncrement_ = 0.01D;
onChanged();
return this;
}
private int glucoseDecayIncrementPeriod_ = 5000;
/**
* optional int32 glucose_decay_increment_period = 24 [default = 5000];
* @return Whether the glucoseDecayIncrementPeriod field is set.
*/
@java.lang.Override
public boolean hasGlucoseDecayIncrementPeriod() {
return ((bitField0_ & 0x01000000) != 0);
}
/**
* optional int32 glucose_decay_increment_period = 24 [default = 5000];
* @return The glucoseDecayIncrementPeriod.
*/
@java.lang.Override
public int getGlucoseDecayIncrementPeriod() {
return glucoseDecayIncrementPeriod_;
}
/**
* optional int32 glucose_decay_increment_period = 24 [default = 5000];
* @param value The glucoseDecayIncrementPeriod to set.
* @return This builder for chaining.
*/
public Builder setGlucoseDecayIncrementPeriod(int value) {
bitField0_ |= 0x01000000;
glucoseDecayIncrementPeriod_ = value;
onChanged();
return this;
}
/**
* optional int32 glucose_decay_increment_period = 24 [default = 5000];
* @return This builder for chaining.
*/
public Builder clearGlucoseDecayIncrementPeriod() {
bitField0_ = (bitField0_ & ~0x01000000);
glucoseDecayIncrementPeriod_ = 5000;
onChanged();
return this;
}
private double clauseActivityDecay_ = 0.999D;
/**
*
* Clause activity parameters (same effect as the one on the variables).
*
*
* optional double clause_activity_decay = 17 [default = 0.999];
* @return Whether the clauseActivityDecay field is set.
*/
@java.lang.Override
public boolean hasClauseActivityDecay() {
return ((bitField0_ & 0x02000000) != 0);
}
/**
*
* Clause activity parameters (same effect as the one on the variables).
*
*
* optional double clause_activity_decay = 17 [default = 0.999];
* @return The clauseActivityDecay.
*/
@java.lang.Override
public double getClauseActivityDecay() {
return clauseActivityDecay_;
}
/**
*
* Clause activity parameters (same effect as the one on the variables).
*
*
* optional double clause_activity_decay = 17 [default = 0.999];
* @param value The clauseActivityDecay to set.
* @return This builder for chaining.
*/
public Builder setClauseActivityDecay(double value) {
bitField0_ |= 0x02000000;
clauseActivityDecay_ = value;
onChanged();
return this;
}
/**
*
* Clause activity parameters (same effect as the one on the variables).
*
*
* optional double clause_activity_decay = 17 [default = 0.999];
* @return This builder for chaining.
*/
public Builder clearClauseActivityDecay() {
bitField0_ = (bitField0_ & ~0x02000000);
clauseActivityDecay_ = 0.999D;
onChanged();
return this;
}
private double maxClauseActivityValue_ = 1e+20D;
/**
* optional double max_clause_activity_value = 18 [default = 1e+20];
* @return Whether the maxClauseActivityValue field is set.
*/
@java.lang.Override
public boolean hasMaxClauseActivityValue() {
return ((bitField0_ & 0x04000000) != 0);
}
/**
* optional double max_clause_activity_value = 18 [default = 1e+20];
* @return The maxClauseActivityValue.
*/
@java.lang.Override
public double getMaxClauseActivityValue() {
return maxClauseActivityValue_;
}
/**
* optional double max_clause_activity_value = 18 [default = 1e+20];
* @param value The maxClauseActivityValue to set.
* @return This builder for chaining.
*/
public Builder setMaxClauseActivityValue(double value) {
bitField0_ |= 0x04000000;
maxClauseActivityValue_ = value;
onChanged();
return this;
}
/**
* optional double max_clause_activity_value = 18 [default = 1e+20];
* @return This builder for chaining.
*/
public Builder clearMaxClauseActivityValue() {
bitField0_ = (bitField0_ & ~0x04000000);
maxClauseActivityValue_ = 1e+20D;
onChanged();
return this;
}
private java.util.List restartAlgorithms_ =
java.util.Collections.emptyList();
private void ensureRestartAlgorithmsIsMutable() {
if (!((bitField0_ & 0x08000000) != 0)) {
restartAlgorithms_ = new java.util.ArrayList(restartAlgorithms_);
bitField0_ |= 0x08000000;
}
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @return A list containing the restartAlgorithms.
*/
public java.util.List getRestartAlgorithmsList() {
return new com.google.protobuf.Internal.ListAdapter<
java.lang.Integer, com.google.ortools.sat.SatParameters.RestartAlgorithm>(restartAlgorithms_, restartAlgorithms_converter_);
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @return The count of restartAlgorithms.
*/
public int getRestartAlgorithmsCount() {
return restartAlgorithms_.size();
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @param index The index of the element to return.
* @return The restartAlgorithms at the given index.
*/
public com.google.ortools.sat.SatParameters.RestartAlgorithm getRestartAlgorithms(int index) {
return restartAlgorithms_converter_.convert(restartAlgorithms_.get(index));
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @param index The index to set the value at.
* @param value The restartAlgorithms to set.
* @return This builder for chaining.
*/
public Builder setRestartAlgorithms(
int index, com.google.ortools.sat.SatParameters.RestartAlgorithm value) {
if (value == null) {
throw new NullPointerException();
}
ensureRestartAlgorithmsIsMutable();
restartAlgorithms_.set(index, value.getNumber());
onChanged();
return this;
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @param value The restartAlgorithms to add.
* @return This builder for chaining.
*/
public Builder addRestartAlgorithms(com.google.ortools.sat.SatParameters.RestartAlgorithm value) {
if (value == null) {
throw new NullPointerException();
}
ensureRestartAlgorithmsIsMutable();
restartAlgorithms_.add(value.getNumber());
onChanged();
return this;
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @param values The restartAlgorithms to add.
* @return This builder for chaining.
*/
public Builder addAllRestartAlgorithms(
java.lang.Iterable extends com.google.ortools.sat.SatParameters.RestartAlgorithm> values) {
ensureRestartAlgorithmsIsMutable();
for (com.google.ortools.sat.SatParameters.RestartAlgorithm value : values) {
restartAlgorithms_.add(value.getNumber());
}
onChanged();
return this;
}
/**
*
* The restart strategies will change each time the strategy_counter is
* increased. The current strategy will simply be the one at index
* strategy_counter modulo the number of strategy. Note that if this list
* includes a NO_RESTART, nothing will change when it is reached because the
* strategy_counter will only increment after a restart.
* The idea of switching of search strategy tailored for SAT/UNSAT comes from
* Chanseok Oh with his COMiniSatPS solver, see http://cs.nyu.edu/~chanseok/.
* But more generally, it seems REALLY beneficial to try different strategy.
*
*
* repeated .operations_research.sat.SatParameters.RestartAlgorithm restart_algorithms = 61;
* @return This builder for chaining.
*/
public Builder clearRestartAlgorithms() {
restartAlgorithms_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x08000000);
onChanged();
return this;
}
private java.lang.Object defaultRestartAlgorithms_ = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART";
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @return Whether the defaultRestartAlgorithms field is set.
*/
public boolean hasDefaultRestartAlgorithms() {
return ((bitField0_ & 0x10000000) != 0);
}
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @return The defaultRestartAlgorithms.
*/
public java.lang.String getDefaultRestartAlgorithms() {
java.lang.Object ref = defaultRestartAlgorithms_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
defaultRestartAlgorithms_ = s;
}
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @return The bytes for defaultRestartAlgorithms.
*/
public com.google.protobuf.ByteString
getDefaultRestartAlgorithmsBytes() {
java.lang.Object ref = defaultRestartAlgorithms_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
defaultRestartAlgorithms_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @param value The defaultRestartAlgorithms to set.
* @return This builder for chaining.
*/
public Builder setDefaultRestartAlgorithms(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x10000000;
defaultRestartAlgorithms_ = value;
onChanged();
return this;
}
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @return This builder for chaining.
*/
public Builder clearDefaultRestartAlgorithms() {
bitField0_ = (bitField0_ & ~0x10000000);
defaultRestartAlgorithms_ = getDefaultInstance().getDefaultRestartAlgorithms();
onChanged();
return this;
}
/**
* optional string default_restart_algorithms = 70 [default = "LUBY_RESTART,LBD_MOVING_AVERAGE_RESTART,DL_MOVING_AVERAGE_RESTART"];
* @param value The bytes for defaultRestartAlgorithms to set.
* @return This builder for chaining.
*/
public Builder setDefaultRestartAlgorithmsBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x10000000;
defaultRestartAlgorithms_ = value;
onChanged();
return this;
}
private int restartPeriod_ = 50;
/**
*
* Restart period for the FIXED_RESTART strategy. This is also the multiplier
* used by the LUBY_RESTART strategy.
*
*
* optional int32 restart_period = 30 [default = 50];
* @return Whether the restartPeriod field is set.
*/
@java.lang.Override
public boolean hasRestartPeriod() {
return ((bitField0_ & 0x20000000) != 0);
}
/**
*
* Restart period for the FIXED_RESTART strategy. This is also the multiplier
* used by the LUBY_RESTART strategy.
*
*
* optional int32 restart_period = 30 [default = 50];
* @return The restartPeriod.
*/
@java.lang.Override
public int getRestartPeriod() {
return restartPeriod_;
}
/**
*
* Restart period for the FIXED_RESTART strategy. This is also the multiplier
* used by the LUBY_RESTART strategy.
*
*
* optional int32 restart_period = 30 [default = 50];
* @param value The restartPeriod to set.
* @return This builder for chaining.
*/
public Builder setRestartPeriod(int value) {
bitField0_ |= 0x20000000;
restartPeriod_ = value;
onChanged();
return this;
}
/**
*
* Restart period for the FIXED_RESTART strategy. This is also the multiplier
* used by the LUBY_RESTART strategy.
*
*
* optional int32 restart_period = 30 [default = 50];
* @return This builder for chaining.
*/
public Builder clearRestartPeriod() {
bitField0_ = (bitField0_ & ~0x20000000);
restartPeriod_ = 50;
onChanged();
return this;
}
private int restartRunningWindowSize_ = 50;
/**
*
* Size of the window for the moving average restarts.
*
*
* optional int32 restart_running_window_size = 62 [default = 50];
* @return Whether the restartRunningWindowSize field is set.
*/
@java.lang.Override
public boolean hasRestartRunningWindowSize() {
return ((bitField0_ & 0x40000000) != 0);
}
/**
*
* Size of the window for the moving average restarts.
*
*
* optional int32 restart_running_window_size = 62 [default = 50];
* @return The restartRunningWindowSize.
*/
@java.lang.Override
public int getRestartRunningWindowSize() {
return restartRunningWindowSize_;
}
/**
*
* Size of the window for the moving average restarts.
*
*
* optional int32 restart_running_window_size = 62 [default = 50];
* @param value The restartRunningWindowSize to set.
* @return This builder for chaining.
*/
public Builder setRestartRunningWindowSize(int value) {
bitField0_ |= 0x40000000;
restartRunningWindowSize_ = value;
onChanged();
return this;
}
/**
*
* Size of the window for the moving average restarts.
*
*
* optional int32 restart_running_window_size = 62 [default = 50];
* @return This builder for chaining.
*/
public Builder clearRestartRunningWindowSize() {
bitField0_ = (bitField0_ & ~0x40000000);
restartRunningWindowSize_ = 50;
onChanged();
return this;
}
private double restartDlAverageRatio_ = 1D;
/**
*
* In the moving average restart algorithms, a restart is triggered if the
* window average times this ratio is greater that the global average.
*
*
* optional double restart_dl_average_ratio = 63 [default = 1];
* @return Whether the restartDlAverageRatio field is set.
*/
@java.lang.Override
public boolean hasRestartDlAverageRatio() {
return ((bitField0_ & 0x80000000) != 0);
}
/**
*
* In the moving average restart algorithms, a restart is triggered if the
* window average times this ratio is greater that the global average.
*
*
* optional double restart_dl_average_ratio = 63 [default = 1];
* @return The restartDlAverageRatio.
*/
@java.lang.Override
public double getRestartDlAverageRatio() {
return restartDlAverageRatio_;
}
/**
*
* In the moving average restart algorithms, a restart is triggered if the
* window average times this ratio is greater that the global average.
*
*
* optional double restart_dl_average_ratio = 63 [default = 1];
* @param value The restartDlAverageRatio to set.
* @return This builder for chaining.
*/
public Builder setRestartDlAverageRatio(double value) {
bitField0_ |= 0x80000000;
restartDlAverageRatio_ = value;
onChanged();
return this;
}
/**
*
* In the moving average restart algorithms, a restart is triggered if the
* window average times this ratio is greater that the global average.
*
*
* optional double restart_dl_average_ratio = 63 [default = 1];
* @return This builder for chaining.
*/
public Builder clearRestartDlAverageRatio() {
bitField0_ = (bitField0_ & ~0x80000000);
restartDlAverageRatio_ = 1D;
onChanged();
return this;
}
private double restartLbdAverageRatio_ = 1D;
/**
* optional double restart_lbd_average_ratio = 71 [default = 1];
* @return Whether the restartLbdAverageRatio field is set.
*/
@java.lang.Override
public boolean hasRestartLbdAverageRatio() {
return ((bitField1_ & 0x00000001) != 0);
}
/**
* optional double restart_lbd_average_ratio = 71 [default = 1];
* @return The restartLbdAverageRatio.
*/
@java.lang.Override
public double getRestartLbdAverageRatio() {
return restartLbdAverageRatio_;
}
/**
* optional double restart_lbd_average_ratio = 71 [default = 1];
* @param value The restartLbdAverageRatio to set.
* @return This builder for chaining.
*/
public Builder setRestartLbdAverageRatio(double value) {
bitField1_ |= 0x00000001;
restartLbdAverageRatio_ = value;
onChanged();
return this;
}
/**
* optional double restart_lbd_average_ratio = 71 [default = 1];
* @return This builder for chaining.
*/
public Builder clearRestartLbdAverageRatio() {
bitField1_ = (bitField1_ & ~0x00000001);
restartLbdAverageRatio_ = 1D;
onChanged();
return this;
}
private boolean useBlockingRestart_ ;
/**
*
* Block a moving restart algorithm if the trail size of the current conflict
* is greater than the multiplier times the moving average of the trail size
* at the previous conflicts.
*
*
* optional bool use_blocking_restart = 64 [default = false];
* @return Whether the useBlockingRestart field is set.
*/
@java.lang.Override
public boolean hasUseBlockingRestart() {
return ((bitField1_ & 0x00000002) != 0);
}
/**
*
* Block a moving restart algorithm if the trail size of the current conflict
* is greater than the multiplier times the moving average of the trail size
* at the previous conflicts.
*
*
* optional bool use_blocking_restart = 64 [default = false];
* @return The useBlockingRestart.
*/
@java.lang.Override
public boolean getUseBlockingRestart() {
return useBlockingRestart_;
}
/**
*
* Block a moving restart algorithm if the trail size of the current conflict
* is greater than the multiplier times the moving average of the trail size
* at the previous conflicts.
*
*
* optional bool use_blocking_restart = 64 [default = false];
* @param value The useBlockingRestart to set.
* @return This builder for chaining.
*/
public Builder setUseBlockingRestart(boolean value) {
bitField1_ |= 0x00000002;
useBlockingRestart_ = value;
onChanged();
return this;
}
/**
*
* Block a moving restart algorithm if the trail size of the current conflict
* is greater than the multiplier times the moving average of the trail size
* at the previous conflicts.
*
*
* optional bool use_blocking_restart = 64 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseBlockingRestart() {
bitField1_ = (bitField1_ & ~0x00000002);
useBlockingRestart_ = false;
onChanged();
return this;
}
private int blockingRestartWindowSize_ = 5000;
/**
* optional int32 blocking_restart_window_size = 65 [default = 5000];
* @return Whether the blockingRestartWindowSize field is set.
*/
@java.lang.Override
public boolean hasBlockingRestartWindowSize() {
return ((bitField1_ & 0x00000004) != 0);
}
/**
* optional int32 blocking_restart_window_size = 65 [default = 5000];
* @return The blockingRestartWindowSize.
*/
@java.lang.Override
public int getBlockingRestartWindowSize() {
return blockingRestartWindowSize_;
}
/**
* optional int32 blocking_restart_window_size = 65 [default = 5000];
* @param value The blockingRestartWindowSize to set.
* @return This builder for chaining.
*/
public Builder setBlockingRestartWindowSize(int value) {
bitField1_ |= 0x00000004;
blockingRestartWindowSize_ = value;
onChanged();
return this;
}
/**
* optional int32 blocking_restart_window_size = 65 [default = 5000];
* @return This builder for chaining.
*/
public Builder clearBlockingRestartWindowSize() {
bitField1_ = (bitField1_ & ~0x00000004);
blockingRestartWindowSize_ = 5000;
onChanged();
return this;
}
private double blockingRestartMultiplier_ = 1.4D;
/**
* optional double blocking_restart_multiplier = 66 [default = 1.4];
* @return Whether the blockingRestartMultiplier field is set.
*/
@java.lang.Override
public boolean hasBlockingRestartMultiplier() {
return ((bitField1_ & 0x00000008) != 0);
}
/**
* optional double blocking_restart_multiplier = 66 [default = 1.4];
* @return The blockingRestartMultiplier.
*/
@java.lang.Override
public double getBlockingRestartMultiplier() {
return blockingRestartMultiplier_;
}
/**
* optional double blocking_restart_multiplier = 66 [default = 1.4];
* @param value The blockingRestartMultiplier to set.
* @return This builder for chaining.
*/
public Builder setBlockingRestartMultiplier(double value) {
bitField1_ |= 0x00000008;
blockingRestartMultiplier_ = value;
onChanged();
return this;
}
/**
* optional double blocking_restart_multiplier = 66 [default = 1.4];
* @return This builder for chaining.
*/
public Builder clearBlockingRestartMultiplier() {
bitField1_ = (bitField1_ & ~0x00000008);
blockingRestartMultiplier_ = 1.4D;
onChanged();
return this;
}
private int numConflictsBeforeStrategyChanges_ ;
/**
*
* After each restart, if the number of conflict since the last strategy
* change is greater that this, then we increment a "strategy_counter" that
* can be use to change the search strategy used by the following restarts.
*
*
* optional int32 num_conflicts_before_strategy_changes = 68 [default = 0];
* @return Whether the numConflictsBeforeStrategyChanges field is set.
*/
@java.lang.Override
public boolean hasNumConflictsBeforeStrategyChanges() {
return ((bitField1_ & 0x00000010) != 0);
}
/**
*
* After each restart, if the number of conflict since the last strategy
* change is greater that this, then we increment a "strategy_counter" that
* can be use to change the search strategy used by the following restarts.
*
*
* optional int32 num_conflicts_before_strategy_changes = 68 [default = 0];
* @return The numConflictsBeforeStrategyChanges.
*/
@java.lang.Override
public int getNumConflictsBeforeStrategyChanges() {
return numConflictsBeforeStrategyChanges_;
}
/**
*
* After each restart, if the number of conflict since the last strategy
* change is greater that this, then we increment a "strategy_counter" that
* can be use to change the search strategy used by the following restarts.
*
*
* optional int32 num_conflicts_before_strategy_changes = 68 [default = 0];
* @param value The numConflictsBeforeStrategyChanges to set.
* @return This builder for chaining.
*/
public Builder setNumConflictsBeforeStrategyChanges(int value) {
bitField1_ |= 0x00000010;
numConflictsBeforeStrategyChanges_ = value;
onChanged();
return this;
}
/**
*
* After each restart, if the number of conflict since the last strategy
* change is greater that this, then we increment a "strategy_counter" that
* can be use to change the search strategy used by the following restarts.
*
*
* optional int32 num_conflicts_before_strategy_changes = 68 [default = 0];
* @return This builder for chaining.
*/
public Builder clearNumConflictsBeforeStrategyChanges() {
bitField1_ = (bitField1_ & ~0x00000010);
numConflictsBeforeStrategyChanges_ = 0;
onChanged();
return this;
}
private double strategyChangeIncreaseRatio_ ;
/**
*
* The parameter num_conflicts_before_strategy_changes is increased by that
* much after each strategy change.
*
*
* optional double strategy_change_increase_ratio = 69 [default = 0];
* @return Whether the strategyChangeIncreaseRatio field is set.
*/
@java.lang.Override
public boolean hasStrategyChangeIncreaseRatio() {
return ((bitField1_ & 0x00000020) != 0);
}
/**
*
* The parameter num_conflicts_before_strategy_changes is increased by that
* much after each strategy change.
*
*
* optional double strategy_change_increase_ratio = 69 [default = 0];
* @return The strategyChangeIncreaseRatio.
*/
@java.lang.Override
public double getStrategyChangeIncreaseRatio() {
return strategyChangeIncreaseRatio_;
}
/**
*
* The parameter num_conflicts_before_strategy_changes is increased by that
* much after each strategy change.
*
*
* optional double strategy_change_increase_ratio = 69 [default = 0];
* @param value The strategyChangeIncreaseRatio to set.
* @return This builder for chaining.
*/
public Builder setStrategyChangeIncreaseRatio(double value) {
bitField1_ |= 0x00000020;
strategyChangeIncreaseRatio_ = value;
onChanged();
return this;
}
/**
*
* The parameter num_conflicts_before_strategy_changes is increased by that
* much after each strategy change.
*
*
* optional double strategy_change_increase_ratio = 69 [default = 0];
* @return This builder for chaining.
*/
public Builder clearStrategyChangeIncreaseRatio() {
bitField1_ = (bitField1_ & ~0x00000020);
strategyChangeIncreaseRatio_ = 0D;
onChanged();
return this;
}
private double maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
/**
*
* Maximum time allowed in seconds to solve a problem.
* The counter will starts at the beginning of the Solve() call.
*
*
* optional double max_time_in_seconds = 36 [default = inf];
* @return Whether the maxTimeInSeconds field is set.
*/
@java.lang.Override
public boolean hasMaxTimeInSeconds() {
return ((bitField1_ & 0x00000040) != 0);
}
/**
*
* Maximum time allowed in seconds to solve a problem.
* The counter will starts at the beginning of the Solve() call.
*
*
* optional double max_time_in_seconds = 36 [default = inf];
* @return The maxTimeInSeconds.
*/
@java.lang.Override
public double getMaxTimeInSeconds() {
return maxTimeInSeconds_;
}
/**
*
* Maximum time allowed in seconds to solve a problem.
* The counter will starts at the beginning of the Solve() call.
*
*
* optional double max_time_in_seconds = 36 [default = inf];
* @param value The maxTimeInSeconds to set.
* @return This builder for chaining.
*/
public Builder setMaxTimeInSeconds(double value) {
bitField1_ |= 0x00000040;
maxTimeInSeconds_ = value;
onChanged();
return this;
}
/**
*
* Maximum time allowed in seconds to solve a problem.
* The counter will starts at the beginning of the Solve() call.
*
*
* optional double max_time_in_seconds = 36 [default = inf];
* @return This builder for chaining.
*/
public Builder clearMaxTimeInSeconds() {
bitField1_ = (bitField1_ & ~0x00000040);
maxTimeInSeconds_ = Double.POSITIVE_INFINITY;
onChanged();
return this;
}
private double maxDeterministicTime_ = Double.POSITIVE_INFINITY;
/**
*
* Maximum time allowed in deterministic time to solve a problem.
* The deterministic time should be correlated with the real time used by the
* solver, the time unit being as close as possible to a second.
*
*
* optional double max_deterministic_time = 67 [default = inf];
* @return Whether the maxDeterministicTime field is set.
*/
@java.lang.Override
public boolean hasMaxDeterministicTime() {
return ((bitField1_ & 0x00000080) != 0);
}
/**
*
* Maximum time allowed in deterministic time to solve a problem.
* The deterministic time should be correlated with the real time used by the
* solver, the time unit being as close as possible to a second.
*
*
* optional double max_deterministic_time = 67 [default = inf];
* @return The maxDeterministicTime.
*/
@java.lang.Override
public double getMaxDeterministicTime() {
return maxDeterministicTime_;
}
/**
*
* Maximum time allowed in deterministic time to solve a problem.
* The deterministic time should be correlated with the real time used by the
* solver, the time unit being as close as possible to a second.
*
*
* optional double max_deterministic_time = 67 [default = inf];
* @param value The maxDeterministicTime to set.
* @return This builder for chaining.
*/
public Builder setMaxDeterministicTime(double value) {
bitField1_ |= 0x00000080;
maxDeterministicTime_ = value;
onChanged();
return this;
}
/**
*
* Maximum time allowed in deterministic time to solve a problem.
* The deterministic time should be correlated with the real time used by the
* solver, the time unit being as close as possible to a second.
*
*
* optional double max_deterministic_time = 67 [default = inf];
* @return This builder for chaining.
*/
public Builder clearMaxDeterministicTime() {
bitField1_ = (bitField1_ & ~0x00000080);
maxDeterministicTime_ = Double.POSITIVE_INFINITY;
onChanged();
return this;
}
private long maxNumberOfConflicts_ = 9223372036854775807L;
/**
*
* Maximum number of conflicts allowed to solve a problem.
* TODO(user,user): Maybe change the way the conflict limit is enforced?
* currently it is enforced on each independent internal SAT solve, rather
* than on the overall number of conflicts across all solves. So in the
* context of an optimization problem, this is not really usable directly by a
* client.
*
*
* optional int64 max_number_of_conflicts = 37 [default = 9223372036854775807];
* @return Whether the maxNumberOfConflicts field is set.
*/
@java.lang.Override
public boolean hasMaxNumberOfConflicts() {
return ((bitField1_ & 0x00000100) != 0);
}
/**
*
* Maximum number of conflicts allowed to solve a problem.
* TODO(user,user): Maybe change the way the conflict limit is enforced?
* currently it is enforced on each independent internal SAT solve, rather
* than on the overall number of conflicts across all solves. So in the
* context of an optimization problem, this is not really usable directly by a
* client.
*
*
* optional int64 max_number_of_conflicts = 37 [default = 9223372036854775807];
* @return The maxNumberOfConflicts.
*/
@java.lang.Override
public long getMaxNumberOfConflicts() {
return maxNumberOfConflicts_;
}
/**
*
* Maximum number of conflicts allowed to solve a problem.
* TODO(user,user): Maybe change the way the conflict limit is enforced?
* currently it is enforced on each independent internal SAT solve, rather
* than on the overall number of conflicts across all solves. So in the
* context of an optimization problem, this is not really usable directly by a
* client.
*
*
* optional int64 max_number_of_conflicts = 37 [default = 9223372036854775807];
* @param value The maxNumberOfConflicts to set.
* @return This builder for chaining.
*/
public Builder setMaxNumberOfConflicts(long value) {
bitField1_ |= 0x00000100;
maxNumberOfConflicts_ = value;
onChanged();
return this;
}
/**
*
* Maximum number of conflicts allowed to solve a problem.
* TODO(user,user): Maybe change the way the conflict limit is enforced?
* currently it is enforced on each independent internal SAT solve, rather
* than on the overall number of conflicts across all solves. So in the
* context of an optimization problem, this is not really usable directly by a
* client.
*
*
* optional int64 max_number_of_conflicts = 37 [default = 9223372036854775807];
* @return This builder for chaining.
*/
public Builder clearMaxNumberOfConflicts() {
bitField1_ = (bitField1_ & ~0x00000100);
maxNumberOfConflicts_ = 9223372036854775807L;
onChanged();
return this;
}
private long maxMemoryInMb_ = 10000L;
/**
*
* Maximum memory allowed for the whole thread containing the solver. The
* solver will abort as soon as it detects that this limit is crossed. As a
* result, this limit is approximative, but usually the solver will not go too
* much over.
*
*
* optional int64 max_memory_in_mb = 40 [default = 10000];
* @return Whether the maxMemoryInMb field is set.
*/
@java.lang.Override
public boolean hasMaxMemoryInMb() {
return ((bitField1_ & 0x00000200) != 0);
}
/**
*
* Maximum memory allowed for the whole thread containing the solver. The
* solver will abort as soon as it detects that this limit is crossed. As a
* result, this limit is approximative, but usually the solver will not go too
* much over.
*
*
* optional int64 max_memory_in_mb = 40 [default = 10000];
* @return The maxMemoryInMb.
*/
@java.lang.Override
public long getMaxMemoryInMb() {
return maxMemoryInMb_;
}
/**
*
* Maximum memory allowed for the whole thread containing the solver. The
* solver will abort as soon as it detects that this limit is crossed. As a
* result, this limit is approximative, but usually the solver will not go too
* much over.
*
*
* optional int64 max_memory_in_mb = 40 [default = 10000];
* @param value The maxMemoryInMb to set.
* @return This builder for chaining.
*/
public Builder setMaxMemoryInMb(long value) {
bitField1_ |= 0x00000200;
maxMemoryInMb_ = value;
onChanged();
return this;
}
/**
*
* Maximum memory allowed for the whole thread containing the solver. The
* solver will abort as soon as it detects that this limit is crossed. As a
* result, this limit is approximative, but usually the solver will not go too
* much over.
*
*
* optional int64 max_memory_in_mb = 40 [default = 10000];
* @return This builder for chaining.
*/
public Builder clearMaxMemoryInMb() {
bitField1_ = (bitField1_ & ~0x00000200);
maxMemoryInMb_ = 10000L;
onChanged();
return this;
}
private double absoluteGapLimit_ ;
/**
*
* Stop the search when the gap between the best feasible objective (O) and
* our best objective bound (B) is smaller than a limit.
* The exact definition is:
* - Absolute: abs(O - B)
* - Relative: abs(O - B) / max(1, abs(O)).
* Important: The relative gap depends on the objective offset! If you
* artificially shift the objective, you will get widely different value of
* the relative gap.
* Note that if the gap is reached, the search status will be OPTIMAL. But
* one can check the best objective bound to see the actual gap.
*
*
* optional double absolute_gap_limit = 159 [default = 0];
* @return Whether the absoluteGapLimit field is set.
*/
@java.lang.Override
public boolean hasAbsoluteGapLimit() {
return ((bitField1_ & 0x00000400) != 0);
}
/**
*
* Stop the search when the gap between the best feasible objective (O) and
* our best objective bound (B) is smaller than a limit.
* The exact definition is:
* - Absolute: abs(O - B)
* - Relative: abs(O - B) / max(1, abs(O)).
* Important: The relative gap depends on the objective offset! If you
* artificially shift the objective, you will get widely different value of
* the relative gap.
* Note that if the gap is reached, the search status will be OPTIMAL. But
* one can check the best objective bound to see the actual gap.
*
*
* optional double absolute_gap_limit = 159 [default = 0];
* @return The absoluteGapLimit.
*/
@java.lang.Override
public double getAbsoluteGapLimit() {
return absoluteGapLimit_;
}
/**
*
* Stop the search when the gap between the best feasible objective (O) and
* our best objective bound (B) is smaller than a limit.
* The exact definition is:
* - Absolute: abs(O - B)
* - Relative: abs(O - B) / max(1, abs(O)).
* Important: The relative gap depends on the objective offset! If you
* artificially shift the objective, you will get widely different value of
* the relative gap.
* Note that if the gap is reached, the search status will be OPTIMAL. But
* one can check the best objective bound to see the actual gap.
*
*
* optional double absolute_gap_limit = 159 [default = 0];
* @param value The absoluteGapLimit to set.
* @return This builder for chaining.
*/
public Builder setAbsoluteGapLimit(double value) {
bitField1_ |= 0x00000400;
absoluteGapLimit_ = value;
onChanged();
return this;
}
/**
*
* Stop the search when the gap between the best feasible objective (O) and
* our best objective bound (B) is smaller than a limit.
* The exact definition is:
* - Absolute: abs(O - B)
* - Relative: abs(O - B) / max(1, abs(O)).
* Important: The relative gap depends on the objective offset! If you
* artificially shift the objective, you will get widely different value of
* the relative gap.
* Note that if the gap is reached, the search status will be OPTIMAL. But
* one can check the best objective bound to see the actual gap.
*
*
* optional double absolute_gap_limit = 159 [default = 0];
* @return This builder for chaining.
*/
public Builder clearAbsoluteGapLimit() {
bitField1_ = (bitField1_ & ~0x00000400);
absoluteGapLimit_ = 0D;
onChanged();
return this;
}
private double relativeGapLimit_ ;
/**
* optional double relative_gap_limit = 160 [default = 0];
* @return Whether the relativeGapLimit field is set.
*/
@java.lang.Override
public boolean hasRelativeGapLimit() {
return ((bitField1_ & 0x00000800) != 0);
}
/**
* optional double relative_gap_limit = 160 [default = 0];
* @return The relativeGapLimit.
*/
@java.lang.Override
public double getRelativeGapLimit() {
return relativeGapLimit_;
}
/**
* optional double relative_gap_limit = 160 [default = 0];
* @param value The relativeGapLimit to set.
* @return This builder for chaining.
*/
public Builder setRelativeGapLimit(double value) {
bitField1_ |= 0x00000800;
relativeGapLimit_ = value;
onChanged();
return this;
}
/**
* optional double relative_gap_limit = 160 [default = 0];
* @return This builder for chaining.
*/
public Builder clearRelativeGapLimit() {
bitField1_ = (bitField1_ & ~0x00000800);
relativeGapLimit_ = 0D;
onChanged();
return this;
}
private boolean treatBinaryClausesSeparately_ = true;
/**
*
* If true, the binary clauses are treated separately from the others. This
* should be faster and uses less memory. However it changes the propagation
* order.
*
*
* optional bool treat_binary_clauses_separately = 33 [default = true];
* @return Whether the treatBinaryClausesSeparately field is set.
*/
@java.lang.Override
public boolean hasTreatBinaryClausesSeparately() {
return ((bitField1_ & 0x00001000) != 0);
}
/**
*
* If true, the binary clauses are treated separately from the others. This
* should be faster and uses less memory. However it changes the propagation
* order.
*
*
* optional bool treat_binary_clauses_separately = 33 [default = true];
* @return The treatBinaryClausesSeparately.
*/
@java.lang.Override
public boolean getTreatBinaryClausesSeparately() {
return treatBinaryClausesSeparately_;
}
/**
*
* If true, the binary clauses are treated separately from the others. This
* should be faster and uses less memory. However it changes the propagation
* order.
*
*
* optional bool treat_binary_clauses_separately = 33 [default = true];
* @param value The treatBinaryClausesSeparately to set.
* @return This builder for chaining.
*/
public Builder setTreatBinaryClausesSeparately(boolean value) {
bitField1_ |= 0x00001000;
treatBinaryClausesSeparately_ = value;
onChanged();
return this;
}
/**
*
* If true, the binary clauses are treated separately from the others. This
* should be faster and uses less memory. However it changes the propagation
* order.
*
*
* optional bool treat_binary_clauses_separately = 33 [default = true];
* @return This builder for chaining.
*/
public Builder clearTreatBinaryClausesSeparately() {
bitField1_ = (bitField1_ & ~0x00001000);
treatBinaryClausesSeparately_ = true;
onChanged();
return this;
}
private int randomSeed_ = 1;
/**
*
* At the beginning of each solve, the random number generator used in some
* part of the solver is reinitialized to this seed. If you change the random
* seed, the solver may make different choices during the solving process.
* For some problems, the running time may vary a lot depending on small
* change in the solving algorithm. Running the solver with different seeds
* enables to have more robust benchmarks when evaluating new features.
*
*
* optional int32 random_seed = 31 [default = 1];
* @return Whether the randomSeed field is set.
*/
@java.lang.Override
public boolean hasRandomSeed() {
return ((bitField1_ & 0x00002000) != 0);
}
/**
*
* At the beginning of each solve, the random number generator used in some
* part of the solver is reinitialized to this seed. If you change the random
* seed, the solver may make different choices during the solving process.
* For some problems, the running time may vary a lot depending on small
* change in the solving algorithm. Running the solver with different seeds
* enables to have more robust benchmarks when evaluating new features.
*
*
* optional int32 random_seed = 31 [default = 1];
* @return The randomSeed.
*/
@java.lang.Override
public int getRandomSeed() {
return randomSeed_;
}
/**
*
* At the beginning of each solve, the random number generator used in some
* part of the solver is reinitialized to this seed. If you change the random
* seed, the solver may make different choices during the solving process.
* For some problems, the running time may vary a lot depending on small
* change in the solving algorithm. Running the solver with different seeds
* enables to have more robust benchmarks when evaluating new features.
*
*
* optional int32 random_seed = 31 [default = 1];
* @param value The randomSeed to set.
* @return This builder for chaining.
*/
public Builder setRandomSeed(int value) {
bitField1_ |= 0x00002000;
randomSeed_ = value;
onChanged();
return this;
}
/**
*
* At the beginning of each solve, the random number generator used in some
* part of the solver is reinitialized to this seed. If you change the random
* seed, the solver may make different choices during the solving process.
* For some problems, the running time may vary a lot depending on small
* change in the solving algorithm. Running the solver with different seeds
* enables to have more robust benchmarks when evaluating new features.
*
*
* optional int32 random_seed = 31 [default = 1];
* @return This builder for chaining.
*/
public Builder clearRandomSeed() {
bitField1_ = (bitField1_ & ~0x00002000);
randomSeed_ = 1;
onChanged();
return this;
}
private boolean logSearchProgress_ ;
/**
*
* Whether the solver should log the search progress to LOG(INFO).
*
*
* optional bool log_search_progress = 41 [default = false];
* @return Whether the logSearchProgress field is set.
*/
@java.lang.Override
public boolean hasLogSearchProgress() {
return ((bitField1_ & 0x00004000) != 0);
}
/**
*
* Whether the solver should log the search progress to LOG(INFO).
*
*
* optional bool log_search_progress = 41 [default = false];
* @return The logSearchProgress.
*/
@java.lang.Override
public boolean getLogSearchProgress() {
return logSearchProgress_;
}
/**
*
* Whether the solver should log the search progress to LOG(INFO).
*
*
* optional bool log_search_progress = 41 [default = false];
* @param value The logSearchProgress to set.
* @return This builder for chaining.
*/
public Builder setLogSearchProgress(boolean value) {
bitField1_ |= 0x00004000;
logSearchProgress_ = value;
onChanged();
return this;
}
/**
*
* Whether the solver should log the search progress to LOG(INFO).
*
*
* optional bool log_search_progress = 41 [default = false];
* @return This builder for chaining.
*/
public Builder clearLogSearchProgress() {
bitField1_ = (bitField1_ & ~0x00004000);
logSearchProgress_ = false;
onChanged();
return this;
}
private boolean usePbResolution_ ;
/**
*
* Whether to use pseudo-Boolean resolution to analyze a conflict. Note that
* this option only make sense if your problem is modelized using
* pseudo-Boolean constraints. If you only have clauses, this shouldn't change
* anything (except slow the solver down).
*
*
* optional bool use_pb_resolution = 43 [default = false];
* @return Whether the usePbResolution field is set.
*/
@java.lang.Override
public boolean hasUsePbResolution() {
return ((bitField1_ & 0x00008000) != 0);
}
/**
*
* Whether to use pseudo-Boolean resolution to analyze a conflict. Note that
* this option only make sense if your problem is modelized using
* pseudo-Boolean constraints. If you only have clauses, this shouldn't change
* anything (except slow the solver down).
*
*
* optional bool use_pb_resolution = 43 [default = false];
* @return The usePbResolution.
*/
@java.lang.Override
public boolean getUsePbResolution() {
return usePbResolution_;
}
/**
*
* Whether to use pseudo-Boolean resolution to analyze a conflict. Note that
* this option only make sense if your problem is modelized using
* pseudo-Boolean constraints. If you only have clauses, this shouldn't change
* anything (except slow the solver down).
*
*
* optional bool use_pb_resolution = 43 [default = false];
* @param value The usePbResolution to set.
* @return This builder for chaining.
*/
public Builder setUsePbResolution(boolean value) {
bitField1_ |= 0x00008000;
usePbResolution_ = value;
onChanged();
return this;
}
/**
*
* Whether to use pseudo-Boolean resolution to analyze a conflict. Note that
* this option only make sense if your problem is modelized using
* pseudo-Boolean constraints. If you only have clauses, this shouldn't change
* anything (except slow the solver down).
*
*
* optional bool use_pb_resolution = 43 [default = false];
* @return This builder for chaining.
*/
public Builder clearUsePbResolution() {
bitField1_ = (bitField1_ & ~0x00008000);
usePbResolution_ = false;
onChanged();
return this;
}
private boolean minimizeReductionDuringPbResolution_ ;
/**
*
* A different algorithm during PB resolution. It minimizes the number of
* calls to ReduceCoefficients() which can be time consuming. However, the
* search space will be different and if the coefficients are large, this may
* lead to integer overflows that could otherwise be prevented.
*
*
* optional bool minimize_reduction_during_pb_resolution = 48 [default = false];
* @return Whether the minimizeReductionDuringPbResolution field is set.
*/
@java.lang.Override
public boolean hasMinimizeReductionDuringPbResolution() {
return ((bitField1_ & 0x00010000) != 0);
}
/**
*
* A different algorithm during PB resolution. It minimizes the number of
* calls to ReduceCoefficients() which can be time consuming. However, the
* search space will be different and if the coefficients are large, this may
* lead to integer overflows that could otherwise be prevented.
*
*
* optional bool minimize_reduction_during_pb_resolution = 48 [default = false];
* @return The minimizeReductionDuringPbResolution.
*/
@java.lang.Override
public boolean getMinimizeReductionDuringPbResolution() {
return minimizeReductionDuringPbResolution_;
}
/**
*
* A different algorithm during PB resolution. It minimizes the number of
* calls to ReduceCoefficients() which can be time consuming. However, the
* search space will be different and if the coefficients are large, this may
* lead to integer overflows that could otherwise be prevented.
*
*
* optional bool minimize_reduction_during_pb_resolution = 48 [default = false];
* @param value The minimizeReductionDuringPbResolution to set.
* @return This builder for chaining.
*/
public Builder setMinimizeReductionDuringPbResolution(boolean value) {
bitField1_ |= 0x00010000;
minimizeReductionDuringPbResolution_ = value;
onChanged();
return this;
}
/**
*
* A different algorithm during PB resolution. It minimizes the number of
* calls to ReduceCoefficients() which can be time consuming. However, the
* search space will be different and if the coefficients are large, this may
* lead to integer overflows that could otherwise be prevented.
*
*
* optional bool minimize_reduction_during_pb_resolution = 48 [default = false];
* @return This builder for chaining.
*/
public Builder clearMinimizeReductionDuringPbResolution() {
bitField1_ = (bitField1_ & ~0x00010000);
minimizeReductionDuringPbResolution_ = false;
onChanged();
return this;
}
private boolean countAssumptionLevelsInLbd_ = true;
/**
*
* Whether or not the assumption levels are taken into account during the LBD
* computation. According to the reference below, not counting them improves
* the solver in some situation. Note that this only impact solves under
* assumptions.
* Gilles Audemard, Jean-Marie Lagniez, Laurent Simon, "Improving Glucose for
* Incremental SAT Solving with Assumptions: Application to MUS Extraction"
* Theory and Applications of Satisfiability Testing - SAT 2013, Lecture Notes
* in Computer Science Volume 7962, 2013, pp 309-317.
*
*
* optional bool count_assumption_levels_in_lbd = 49 [default = true];
* @return Whether the countAssumptionLevelsInLbd field is set.
*/
@java.lang.Override
public boolean hasCountAssumptionLevelsInLbd() {
return ((bitField1_ & 0x00020000) != 0);
}
/**
*
* Whether or not the assumption levels are taken into account during the LBD
* computation. According to the reference below, not counting them improves
* the solver in some situation. Note that this only impact solves under
* assumptions.
* Gilles Audemard, Jean-Marie Lagniez, Laurent Simon, "Improving Glucose for
* Incremental SAT Solving with Assumptions: Application to MUS Extraction"
* Theory and Applications of Satisfiability Testing - SAT 2013, Lecture Notes
* in Computer Science Volume 7962, 2013, pp 309-317.
*
*
* optional bool count_assumption_levels_in_lbd = 49 [default = true];
* @return The countAssumptionLevelsInLbd.
*/
@java.lang.Override
public boolean getCountAssumptionLevelsInLbd() {
return countAssumptionLevelsInLbd_;
}
/**
*
* Whether or not the assumption levels are taken into account during the LBD
* computation. According to the reference below, not counting them improves
* the solver in some situation. Note that this only impact solves under
* assumptions.
* Gilles Audemard, Jean-Marie Lagniez, Laurent Simon, "Improving Glucose for
* Incremental SAT Solving with Assumptions: Application to MUS Extraction"
* Theory and Applications of Satisfiability Testing - SAT 2013, Lecture Notes
* in Computer Science Volume 7962, 2013, pp 309-317.
*
*
* optional bool count_assumption_levels_in_lbd = 49 [default = true];
* @param value The countAssumptionLevelsInLbd to set.
* @return This builder for chaining.
*/
public Builder setCountAssumptionLevelsInLbd(boolean value) {
bitField1_ |= 0x00020000;
countAssumptionLevelsInLbd_ = value;
onChanged();
return this;
}
/**
*
* Whether or not the assumption levels are taken into account during the LBD
* computation. According to the reference below, not counting them improves
* the solver in some situation. Note that this only impact solves under
* assumptions.
* Gilles Audemard, Jean-Marie Lagniez, Laurent Simon, "Improving Glucose for
* Incremental SAT Solving with Assumptions: Application to MUS Extraction"
* Theory and Applications of Satisfiability Testing - SAT 2013, Lecture Notes
* in Computer Science Volume 7962, 2013, pp 309-317.
*
*
* optional bool count_assumption_levels_in_lbd = 49 [default = true];
* @return This builder for chaining.
*/
public Builder clearCountAssumptionLevelsInLbd() {
bitField1_ = (bitField1_ & ~0x00020000);
countAssumptionLevelsInLbd_ = true;
onChanged();
return this;
}
private int presolveBveThreshold_ = 500;
/**
*
* During presolve, only try to perform the bounded variable elimination (BVE)
* of a variable x if the number of occurrences of x times the number of
* occurrences of not(x) is not greater than this parameter.
*
*
* optional int32 presolve_bve_threshold = 54 [default = 500];
* @return Whether the presolveBveThreshold field is set.
*/
@java.lang.Override
public boolean hasPresolveBveThreshold() {
return ((bitField1_ & 0x00040000) != 0);
}
/**
*
* During presolve, only try to perform the bounded variable elimination (BVE)
* of a variable x if the number of occurrences of x times the number of
* occurrences of not(x) is not greater than this parameter.
*
*
* optional int32 presolve_bve_threshold = 54 [default = 500];
* @return The presolveBveThreshold.
*/
@java.lang.Override
public int getPresolveBveThreshold() {
return presolveBveThreshold_;
}
/**
*
* During presolve, only try to perform the bounded variable elimination (BVE)
* of a variable x if the number of occurrences of x times the number of
* occurrences of not(x) is not greater than this parameter.
*
*
* optional int32 presolve_bve_threshold = 54 [default = 500];
* @param value The presolveBveThreshold to set.
* @return This builder for chaining.
*/
public Builder setPresolveBveThreshold(int value) {
bitField1_ |= 0x00040000;
presolveBveThreshold_ = value;
onChanged();
return this;
}
/**
*
* During presolve, only try to perform the bounded variable elimination (BVE)
* of a variable x if the number of occurrences of x times the number of
* occurrences of not(x) is not greater than this parameter.
*
*
* optional int32 presolve_bve_threshold = 54 [default = 500];
* @return This builder for chaining.
*/
public Builder clearPresolveBveThreshold() {
bitField1_ = (bitField1_ & ~0x00040000);
presolveBveThreshold_ = 500;
onChanged();
return this;
}
private int presolveBveClauseWeight_ = 3;
/**
*
* During presolve, we apply BVE only if this weight times the number of
* clauses plus the number of clause literals is not increased.
*
*
* optional int32 presolve_bve_clause_weight = 55 [default = 3];
* @return Whether the presolveBveClauseWeight field is set.
*/
@java.lang.Override
public boolean hasPresolveBveClauseWeight() {
return ((bitField1_ & 0x00080000) != 0);
}
/**
*
* During presolve, we apply BVE only if this weight times the number of
* clauses plus the number of clause literals is not increased.
*
*
* optional int32 presolve_bve_clause_weight = 55 [default = 3];
* @return The presolveBveClauseWeight.
*/
@java.lang.Override
public int getPresolveBveClauseWeight() {
return presolveBveClauseWeight_;
}
/**
*
* During presolve, we apply BVE only if this weight times the number of
* clauses plus the number of clause literals is not increased.
*
*
* optional int32 presolve_bve_clause_weight = 55 [default = 3];
* @param value The presolveBveClauseWeight to set.
* @return This builder for chaining.
*/
public Builder setPresolveBveClauseWeight(int value) {
bitField1_ |= 0x00080000;
presolveBveClauseWeight_ = value;
onChanged();
return this;
}
/**
*
* During presolve, we apply BVE only if this weight times the number of
* clauses plus the number of clause literals is not increased.
*
*
* optional int32 presolve_bve_clause_weight = 55 [default = 3];
* @return This builder for chaining.
*/
public Builder clearPresolveBveClauseWeight() {
bitField1_ = (bitField1_ & ~0x00080000);
presolveBveClauseWeight_ = 3;
onChanged();
return this;
}
private double presolveProbingDeterministicTimeLimit_ = 30D;
/**
*
* The maximum "deterministic" time limit to spend in probing. A value of
* zero will disable the probing.
*
*
* optional double presolve_probing_deterministic_time_limit = 57 [default = 30];
* @return Whether the presolveProbingDeterministicTimeLimit field is set.
*/
@java.lang.Override
public boolean hasPresolveProbingDeterministicTimeLimit() {
return ((bitField1_ & 0x00100000) != 0);
}
/**
*
* The maximum "deterministic" time limit to spend in probing. A value of
* zero will disable the probing.
*
*
* optional double presolve_probing_deterministic_time_limit = 57 [default = 30];
* @return The presolveProbingDeterministicTimeLimit.
*/
@java.lang.Override
public double getPresolveProbingDeterministicTimeLimit() {
return presolveProbingDeterministicTimeLimit_;
}
/**
*
* The maximum "deterministic" time limit to spend in probing. A value of
* zero will disable the probing.
*
*
* optional double presolve_probing_deterministic_time_limit = 57 [default = 30];
* @param value The presolveProbingDeterministicTimeLimit to set.
* @return This builder for chaining.
*/
public Builder setPresolveProbingDeterministicTimeLimit(double value) {
bitField1_ |= 0x00100000;
presolveProbingDeterministicTimeLimit_ = value;
onChanged();
return this;
}
/**
*
* The maximum "deterministic" time limit to spend in probing. A value of
* zero will disable the probing.
*
*
* optional double presolve_probing_deterministic_time_limit = 57 [default = 30];
* @return This builder for chaining.
*/
public Builder clearPresolveProbingDeterministicTimeLimit() {
bitField1_ = (bitField1_ & ~0x00100000);
presolveProbingDeterministicTimeLimit_ = 30D;
onChanged();
return this;
}
private boolean presolveBlockedClause_ = true;
/**
*
* Whether we use an heuristic to detect some basic case of blocked clause
* in the SAT presolve.
*
*
* optional bool presolve_blocked_clause = 88 [default = true];
* @return Whether the presolveBlockedClause field is set.
*/
@java.lang.Override
public boolean hasPresolveBlockedClause() {
return ((bitField1_ & 0x00200000) != 0);
}
/**
*
* Whether we use an heuristic to detect some basic case of blocked clause
* in the SAT presolve.
*
*
* optional bool presolve_blocked_clause = 88 [default = true];
* @return The presolveBlockedClause.
*/
@java.lang.Override
public boolean getPresolveBlockedClause() {
return presolveBlockedClause_;
}
/**
*
* Whether we use an heuristic to detect some basic case of blocked clause
* in the SAT presolve.
*
*
* optional bool presolve_blocked_clause = 88 [default = true];
* @param value The presolveBlockedClause to set.
* @return This builder for chaining.
*/
public Builder setPresolveBlockedClause(boolean value) {
bitField1_ |= 0x00200000;
presolveBlockedClause_ = value;
onChanged();
return this;
}
/**
*
* Whether we use an heuristic to detect some basic case of blocked clause
* in the SAT presolve.
*
*
* optional bool presolve_blocked_clause = 88 [default = true];
* @return This builder for chaining.
*/
public Builder clearPresolveBlockedClause() {
bitField1_ = (bitField1_ & ~0x00200000);
presolveBlockedClause_ = true;
onChanged();
return this;
}
private boolean presolveUseBva_ = true;
/**
*
* Whether or not we use Bounded Variable Addition (BVA) in the presolve.
*
*
* optional bool presolve_use_bva = 72 [default = true];
* @return Whether the presolveUseBva field is set.
*/
@java.lang.Override
public boolean hasPresolveUseBva() {
return ((bitField1_ & 0x00400000) != 0);
}
/**
*
* Whether or not we use Bounded Variable Addition (BVA) in the presolve.
*
*
* optional bool presolve_use_bva = 72 [default = true];
* @return The presolveUseBva.
*/
@java.lang.Override
public boolean getPresolveUseBva() {
return presolveUseBva_;
}
/**
*
* Whether or not we use Bounded Variable Addition (BVA) in the presolve.
*
*
* optional bool presolve_use_bva = 72 [default = true];
* @param value The presolveUseBva to set.
* @return This builder for chaining.
*/
public Builder setPresolveUseBva(boolean value) {
bitField1_ |= 0x00400000;
presolveUseBva_ = value;
onChanged();
return this;
}
/**
*
* Whether or not we use Bounded Variable Addition (BVA) in the presolve.
*
*
* optional bool presolve_use_bva = 72 [default = true];
* @return This builder for chaining.
*/
public Builder clearPresolveUseBva() {
bitField1_ = (bitField1_ & ~0x00400000);
presolveUseBva_ = true;
onChanged();
return this;
}
private int presolveBvaThreshold_ = 1;
/**
*
* Apply Bounded Variable Addition (BVA) if the number of clauses is reduced
* by stricly more than this threshold. The algorithm described in the paper
* uses 0, but quick experiments showed that 1 is a good value. It may not be
* worth it to add a new variable just to remove one clause.
*
*
* optional int32 presolve_bva_threshold = 73 [default = 1];
* @return Whether the presolveBvaThreshold field is set.
*/
@java.lang.Override
public boolean hasPresolveBvaThreshold() {
return ((bitField1_ & 0x00800000) != 0);
}
/**
*
* Apply Bounded Variable Addition (BVA) if the number of clauses is reduced
* by stricly more than this threshold. The algorithm described in the paper
* uses 0, but quick experiments showed that 1 is a good value. It may not be
* worth it to add a new variable just to remove one clause.
*
*
* optional int32 presolve_bva_threshold = 73 [default = 1];
* @return The presolveBvaThreshold.
*/
@java.lang.Override
public int getPresolveBvaThreshold() {
return presolveBvaThreshold_;
}
/**
*
* Apply Bounded Variable Addition (BVA) if the number of clauses is reduced
* by stricly more than this threshold. The algorithm described in the paper
* uses 0, but quick experiments showed that 1 is a good value. It may not be
* worth it to add a new variable just to remove one clause.
*
*
* optional int32 presolve_bva_threshold = 73 [default = 1];
* @param value The presolveBvaThreshold to set.
* @return This builder for chaining.
*/
public Builder setPresolveBvaThreshold(int value) {
bitField1_ |= 0x00800000;
presolveBvaThreshold_ = value;
onChanged();
return this;
}
/**
*
* Apply Bounded Variable Addition (BVA) if the number of clauses is reduced
* by stricly more than this threshold. The algorithm described in the paper
* uses 0, but quick experiments showed that 1 is a good value. It may not be
* worth it to add a new variable just to remove one clause.
*
*
* optional int32 presolve_bva_threshold = 73 [default = 1];
* @return This builder for chaining.
*/
public Builder clearPresolveBvaThreshold() {
bitField1_ = (bitField1_ & ~0x00800000);
presolveBvaThreshold_ = 1;
onChanged();
return this;
}
private int maxPresolveIterations_ = 3;
/**
*
* In case of large reduction in a presolve iteration, we perform multiple
* presolve iterations. This parameter controls the maximum number of such
* presolve iterations.
*
*
* optional int32 max_presolve_iterations = 138 [default = 3];
* @return Whether the maxPresolveIterations field is set.
*/
@java.lang.Override
public boolean hasMaxPresolveIterations() {
return ((bitField1_ & 0x01000000) != 0);
}
/**
*
* In case of large reduction in a presolve iteration, we perform multiple
* presolve iterations. This parameter controls the maximum number of such
* presolve iterations.
*
*
* optional int32 max_presolve_iterations = 138 [default = 3];
* @return The maxPresolveIterations.
*/
@java.lang.Override
public int getMaxPresolveIterations() {
return maxPresolveIterations_;
}
/**
*
* In case of large reduction in a presolve iteration, we perform multiple
* presolve iterations. This parameter controls the maximum number of such
* presolve iterations.
*
*
* optional int32 max_presolve_iterations = 138 [default = 3];
* @param value The maxPresolveIterations to set.
* @return This builder for chaining.
*/
public Builder setMaxPresolveIterations(int value) {
bitField1_ |= 0x01000000;
maxPresolveIterations_ = value;
onChanged();
return this;
}
/**
*
* In case of large reduction in a presolve iteration, we perform multiple
* presolve iterations. This parameter controls the maximum number of such
* presolve iterations.
*
*
* optional int32 max_presolve_iterations = 138 [default = 3];
* @return This builder for chaining.
*/
public Builder clearMaxPresolveIterations() {
bitField1_ = (bitField1_ & ~0x01000000);
maxPresolveIterations_ = 3;
onChanged();
return this;
}
private boolean cpModelPresolve_ = true;
/**
*
* Whether we presolve the cp_model before solving it.
*
*
* optional bool cp_model_presolve = 86 [default = true];
* @return Whether the cpModelPresolve field is set.
*/
@java.lang.Override
public boolean hasCpModelPresolve() {
return ((bitField1_ & 0x02000000) != 0);
}
/**
*
* Whether we presolve the cp_model before solving it.
*
*
* optional bool cp_model_presolve = 86 [default = true];
* @return The cpModelPresolve.
*/
@java.lang.Override
public boolean getCpModelPresolve() {
return cpModelPresolve_;
}
/**
*
* Whether we presolve the cp_model before solving it.
*
*
* optional bool cp_model_presolve = 86 [default = true];
* @param value The cpModelPresolve to set.
* @return This builder for chaining.
*/
public Builder setCpModelPresolve(boolean value) {
bitField1_ |= 0x02000000;
cpModelPresolve_ = value;
onChanged();
return this;
}
/**
*
* Whether we presolve the cp_model before solving it.
*
*
* optional bool cp_model_presolve = 86 [default = true];
* @return This builder for chaining.
*/
public Builder clearCpModelPresolve() {
bitField1_ = (bitField1_ & ~0x02000000);
cpModelPresolve_ = true;
onChanged();
return this;
}
private boolean cpModelPostsolveWithFullSolver_ ;
/**
*
* Advanced usage. We have two different postsolve code. The default one
* should be better and it allows for a more powerful presolve, but some
* rarely used features like not fully assigning all variables require the
* other one.
*
*
* optional bool cp_model_postsolve_with_full_solver = 162 [default = false];
* @return Whether the cpModelPostsolveWithFullSolver field is set.
*/
@java.lang.Override
public boolean hasCpModelPostsolveWithFullSolver() {
return ((bitField1_ & 0x04000000) != 0);
}
/**
*
* Advanced usage. We have two different postsolve code. The default one
* should be better and it allows for a more powerful presolve, but some
* rarely used features like not fully assigning all variables require the
* other one.
*
*
* optional bool cp_model_postsolve_with_full_solver = 162 [default = false];
* @return The cpModelPostsolveWithFullSolver.
*/
@java.lang.Override
public boolean getCpModelPostsolveWithFullSolver() {
return cpModelPostsolveWithFullSolver_;
}
/**
*
* Advanced usage. We have two different postsolve code. The default one
* should be better and it allows for a more powerful presolve, but some
* rarely used features like not fully assigning all variables require the
* other one.
*
*
* optional bool cp_model_postsolve_with_full_solver = 162 [default = false];
* @param value The cpModelPostsolveWithFullSolver to set.
* @return This builder for chaining.
*/
public Builder setCpModelPostsolveWithFullSolver(boolean value) {
bitField1_ |= 0x04000000;
cpModelPostsolveWithFullSolver_ = value;
onChanged();
return this;
}
/**
*
* Advanced usage. We have two different postsolve code. The default one
* should be better and it allows for a more powerful presolve, but some
* rarely used features like not fully assigning all variables require the
* other one.
*
*
* optional bool cp_model_postsolve_with_full_solver = 162 [default = false];
* @return This builder for chaining.
*/
public Builder clearCpModelPostsolveWithFullSolver() {
bitField1_ = (bitField1_ & ~0x04000000);
cpModelPostsolveWithFullSolver_ = false;
onChanged();
return this;
}
private int cpModelMaxNumPresolveOperations_ ;
/**
*
* If positive, try to stop just after that many presolve rules have been
* applied. This is mainly useful for debugging presolve.
*
*
* optional int32 cp_model_max_num_presolve_operations = 151 [default = 0];
* @return Whether the cpModelMaxNumPresolveOperations field is set.
*/
@java.lang.Override
public boolean hasCpModelMaxNumPresolveOperations() {
return ((bitField1_ & 0x08000000) != 0);
}
/**
*
* If positive, try to stop just after that many presolve rules have been
* applied. This is mainly useful for debugging presolve.
*
*
* optional int32 cp_model_max_num_presolve_operations = 151 [default = 0];
* @return The cpModelMaxNumPresolveOperations.
*/
@java.lang.Override
public int getCpModelMaxNumPresolveOperations() {
return cpModelMaxNumPresolveOperations_;
}
/**
*
* If positive, try to stop just after that many presolve rules have been
* applied. This is mainly useful for debugging presolve.
*
*
* optional int32 cp_model_max_num_presolve_operations = 151 [default = 0];
* @param value The cpModelMaxNumPresolveOperations to set.
* @return This builder for chaining.
*/
public Builder setCpModelMaxNumPresolveOperations(int value) {
bitField1_ |= 0x08000000;
cpModelMaxNumPresolveOperations_ = value;
onChanged();
return this;
}
/**
*
* If positive, try to stop just after that many presolve rules have been
* applied. This is mainly useful for debugging presolve.
*
*
* optional int32 cp_model_max_num_presolve_operations = 151 [default = 0];
* @return This builder for chaining.
*/
public Builder clearCpModelMaxNumPresolveOperations() {
bitField1_ = (bitField1_ & ~0x08000000);
cpModelMaxNumPresolveOperations_ = 0;
onChanged();
return this;
}
private int cpModelProbingLevel_ = 2;
/**
*
* How much effort do we spend on probing. 0 disables it completely.
*
*
* optional int32 cp_model_probing_level = 110 [default = 2];
* @return Whether the cpModelProbingLevel field is set.
*/
@java.lang.Override
public boolean hasCpModelProbingLevel() {
return ((bitField1_ & 0x10000000) != 0);
}
/**
*
* How much effort do we spend on probing. 0 disables it completely.
*
*
* optional int32 cp_model_probing_level = 110 [default = 2];
* @return The cpModelProbingLevel.
*/
@java.lang.Override
public int getCpModelProbingLevel() {
return cpModelProbingLevel_;
}
/**
*
* How much effort do we spend on probing. 0 disables it completely.
*
*
* optional int32 cp_model_probing_level = 110 [default = 2];
* @param value The cpModelProbingLevel to set.
* @return This builder for chaining.
*/
public Builder setCpModelProbingLevel(int value) {
bitField1_ |= 0x10000000;
cpModelProbingLevel_ = value;
onChanged();
return this;
}
/**
*
* How much effort do we spend on probing. 0 disables it completely.
*
*
* optional int32 cp_model_probing_level = 110 [default = 2];
* @return This builder for chaining.
*/
public Builder clearCpModelProbingLevel() {
bitField1_ = (bitField1_ & ~0x10000000);
cpModelProbingLevel_ = 2;
onChanged();
return this;
}
private boolean cpModelUseSatPresolve_ = true;
/**
*
* Whether we also use the sat presolve when cp_model_presolve is true.
*
*
* optional bool cp_model_use_sat_presolve = 93 [default = true];
* @return Whether the cpModelUseSatPresolve field is set.
*/
@java.lang.Override
public boolean hasCpModelUseSatPresolve() {
return ((bitField1_ & 0x20000000) != 0);
}
/**
*
* Whether we also use the sat presolve when cp_model_presolve is true.
*
*
* optional bool cp_model_use_sat_presolve = 93 [default = true];
* @return The cpModelUseSatPresolve.
*/
@java.lang.Override
public boolean getCpModelUseSatPresolve() {
return cpModelUseSatPresolve_;
}
/**
*
* Whether we also use the sat presolve when cp_model_presolve is true.
*
*
* optional bool cp_model_use_sat_presolve = 93 [default = true];
* @param value The cpModelUseSatPresolve to set.
* @return This builder for chaining.
*/
public Builder setCpModelUseSatPresolve(boolean value) {
bitField1_ |= 0x20000000;
cpModelUseSatPresolve_ = value;
onChanged();
return this;
}
/**
*
* Whether we also use the sat presolve when cp_model_presolve is true.
*
*
* optional bool cp_model_use_sat_presolve = 93 [default = true];
* @return This builder for chaining.
*/
public Builder clearCpModelUseSatPresolve() {
bitField1_ = (bitField1_ & ~0x20000000);
cpModelUseSatPresolve_ = true;
onChanged();
return this;
}
private boolean useSatInprocessing_ ;
/**
* optional bool use_sat_inprocessing = 163 [default = false];
* @return Whether the useSatInprocessing field is set.
*/
@java.lang.Override
public boolean hasUseSatInprocessing() {
return ((bitField1_ & 0x40000000) != 0);
}
/**
* optional bool use_sat_inprocessing = 163 [default = false];
* @return The useSatInprocessing.
*/
@java.lang.Override
public boolean getUseSatInprocessing() {
return useSatInprocessing_;
}
/**
* optional bool use_sat_inprocessing = 163 [default = false];
* @param value The useSatInprocessing to set.
* @return This builder for chaining.
*/
public Builder setUseSatInprocessing(boolean value) {
bitField1_ |= 0x40000000;
useSatInprocessing_ = value;
onChanged();
return this;
}
/**
* optional bool use_sat_inprocessing = 163 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseSatInprocessing() {
bitField1_ = (bitField1_ & ~0x40000000);
useSatInprocessing_ = false;
onChanged();
return this;
}
private boolean expandElementConstraints_ = true;
/**
*
* If true, the element constraints are expanded into many
* linear constraints of the form (index == i) => (element[i] == target).
*
*
* optional bool expand_element_constraints = 140 [default = true];
* @return Whether the expandElementConstraints field is set.
*/
@java.lang.Override
public boolean hasExpandElementConstraints() {
return ((bitField1_ & 0x80000000) != 0);
}
/**
*
* If true, the element constraints are expanded into many
* linear constraints of the form (index == i) => (element[i] == target).
*
*
* optional bool expand_element_constraints = 140 [default = true];
* @return The expandElementConstraints.
*/
@java.lang.Override
public boolean getExpandElementConstraints() {
return expandElementConstraints_;
}
/**
*
* If true, the element constraints are expanded into many
* linear constraints of the form (index == i) => (element[i] == target).
*
*
* optional bool expand_element_constraints = 140 [default = true];
* @param value The expandElementConstraints to set.
* @return This builder for chaining.
*/
public Builder setExpandElementConstraints(boolean value) {
bitField1_ |= 0x80000000;
expandElementConstraints_ = value;
onChanged();
return this;
}
/**
*
* If true, the element constraints are expanded into many
* linear constraints of the form (index == i) => (element[i] == target).
*
*
* optional bool expand_element_constraints = 140 [default = true];
* @return This builder for chaining.
*/
public Builder clearExpandElementConstraints() {
bitField1_ = (bitField1_ & ~0x80000000);
expandElementConstraints_ = true;
onChanged();
return this;
}
private boolean expandAutomatonConstraints_ = true;
/**
*
* If true, the automaton constraints are expanded.
*
*
* optional bool expand_automaton_constraints = 143 [default = true];
* @return Whether the expandAutomatonConstraints field is set.
*/
@java.lang.Override
public boolean hasExpandAutomatonConstraints() {
return ((bitField2_ & 0x00000001) != 0);
}
/**
*
* If true, the automaton constraints are expanded.
*
*
* optional bool expand_automaton_constraints = 143 [default = true];
* @return The expandAutomatonConstraints.
*/
@java.lang.Override
public boolean getExpandAutomatonConstraints() {
return expandAutomatonConstraints_;
}
/**
*
* If true, the automaton constraints are expanded.
*
*
* optional bool expand_automaton_constraints = 143 [default = true];
* @param value The expandAutomatonConstraints to set.
* @return This builder for chaining.
*/
public Builder setExpandAutomatonConstraints(boolean value) {
bitField2_ |= 0x00000001;
expandAutomatonConstraints_ = value;
onChanged();
return this;
}
/**
*
* If true, the automaton constraints are expanded.
*
*
* optional bool expand_automaton_constraints = 143 [default = true];
* @return This builder for chaining.
*/
public Builder clearExpandAutomatonConstraints() {
bitField2_ = (bitField2_ & ~0x00000001);
expandAutomatonConstraints_ = true;
onChanged();
return this;
}
private boolean expandTableConstraints_ = true;
/**
*
* If true, the positive table constraints are expanded.
* Note that currently, negative table constraints are always expanded.
*
*
* optional bool expand_table_constraints = 158 [default = true];
* @return Whether the expandTableConstraints field is set.
*/
@java.lang.Override
public boolean hasExpandTableConstraints() {
return ((bitField2_ & 0x00000002) != 0);
}
/**
*
* If true, the positive table constraints are expanded.
* Note that currently, negative table constraints are always expanded.
*
*
* optional bool expand_table_constraints = 158 [default = true];
* @return The expandTableConstraints.
*/
@java.lang.Override
public boolean getExpandTableConstraints() {
return expandTableConstraints_;
}
/**
*
* If true, the positive table constraints are expanded.
* Note that currently, negative table constraints are always expanded.
*
*
* optional bool expand_table_constraints = 158 [default = true];
* @param value The expandTableConstraints to set.
* @return This builder for chaining.
*/
public Builder setExpandTableConstraints(boolean value) {
bitField2_ |= 0x00000002;
expandTableConstraints_ = value;
onChanged();
return this;
}
/**
*
* If true, the positive table constraints are expanded.
* Note that currently, negative table constraints are always expanded.
*
*
* optional bool expand_table_constraints = 158 [default = true];
* @return This builder for chaining.
*/
public Builder clearExpandTableConstraints() {
bitField2_ = (bitField2_ & ~0x00000002);
expandTableConstraints_ = true;
onChanged();
return this;
}
private double mergeNoOverlapWorkLimit_ = 1000000000000D;
/**
*
* During presolve, we use a maximum clique heuristic to merge together
* no-overlap constraints or at most one constraints. This code can be slow,
* so we have a limit in place on the number of explored nodes in the
* underlying graph. The internal limit is an int64, but we use double here to
* simplify manual input.
*
*
* optional double merge_no_overlap_work_limit = 145 [default = 1000000000000];
* @return Whether the mergeNoOverlapWorkLimit field is set.
*/
@java.lang.Override
public boolean hasMergeNoOverlapWorkLimit() {
return ((bitField2_ & 0x00000004) != 0);
}
/**
*
* During presolve, we use a maximum clique heuristic to merge together
* no-overlap constraints or at most one constraints. This code can be slow,
* so we have a limit in place on the number of explored nodes in the
* underlying graph. The internal limit is an int64, but we use double here to
* simplify manual input.
*
*
* optional double merge_no_overlap_work_limit = 145 [default = 1000000000000];
* @return The mergeNoOverlapWorkLimit.
*/
@java.lang.Override
public double getMergeNoOverlapWorkLimit() {
return mergeNoOverlapWorkLimit_;
}
/**
*
* During presolve, we use a maximum clique heuristic to merge together
* no-overlap constraints or at most one constraints. This code can be slow,
* so we have a limit in place on the number of explored nodes in the
* underlying graph. The internal limit is an int64, but we use double here to
* simplify manual input.
*
*
* optional double merge_no_overlap_work_limit = 145 [default = 1000000000000];
* @param value The mergeNoOverlapWorkLimit to set.
* @return This builder for chaining.
*/
public Builder setMergeNoOverlapWorkLimit(double value) {
bitField2_ |= 0x00000004;
mergeNoOverlapWorkLimit_ = value;
onChanged();
return this;
}
/**
*
* During presolve, we use a maximum clique heuristic to merge together
* no-overlap constraints or at most one constraints. This code can be slow,
* so we have a limit in place on the number of explored nodes in the
* underlying graph. The internal limit is an int64, but we use double here to
* simplify manual input.
*
*
* optional double merge_no_overlap_work_limit = 145 [default = 1000000000000];
* @return This builder for chaining.
*/
public Builder clearMergeNoOverlapWorkLimit() {
bitField2_ = (bitField2_ & ~0x00000004);
mergeNoOverlapWorkLimit_ = 1000000000000D;
onChanged();
return this;
}
private double mergeAtMostOneWorkLimit_ = 100000000D;
/**
* optional double merge_at_most_one_work_limit = 146 [default = 100000000];
* @return Whether the mergeAtMostOneWorkLimit field is set.
*/
@java.lang.Override
public boolean hasMergeAtMostOneWorkLimit() {
return ((bitField2_ & 0x00000008) != 0);
}
/**
* optional double merge_at_most_one_work_limit = 146 [default = 100000000];
* @return The mergeAtMostOneWorkLimit.
*/
@java.lang.Override
public double getMergeAtMostOneWorkLimit() {
return mergeAtMostOneWorkLimit_;
}
/**
* optional double merge_at_most_one_work_limit = 146 [default = 100000000];
* @param value The mergeAtMostOneWorkLimit to set.
* @return This builder for chaining.
*/
public Builder setMergeAtMostOneWorkLimit(double value) {
bitField2_ |= 0x00000008;
mergeAtMostOneWorkLimit_ = value;
onChanged();
return this;
}
/**
* optional double merge_at_most_one_work_limit = 146 [default = 100000000];
* @return This builder for chaining.
*/
public Builder clearMergeAtMostOneWorkLimit() {
bitField2_ = (bitField2_ & ~0x00000008);
mergeAtMostOneWorkLimit_ = 100000000D;
onChanged();
return this;
}
private int presolveSubstitutionLevel_ = 1;
/**
*
* How much substitution (also called free variable aggregation in MIP
* litterature) should we perform at presolve. This currently only concerns
* variable appearing only in linear constraints. For now the value 0 turns it
* off and any positive value performs substitution.
*
*
* optional int32 presolve_substitution_level = 147 [default = 1];
* @return Whether the presolveSubstitutionLevel field is set.
*/
@java.lang.Override
public boolean hasPresolveSubstitutionLevel() {
return ((bitField2_ & 0x00000010) != 0);
}
/**
*
* How much substitution (also called free variable aggregation in MIP
* litterature) should we perform at presolve. This currently only concerns
* variable appearing only in linear constraints. For now the value 0 turns it
* off and any positive value performs substitution.
*
*
* optional int32 presolve_substitution_level = 147 [default = 1];
* @return The presolveSubstitutionLevel.
*/
@java.lang.Override
public int getPresolveSubstitutionLevel() {
return presolveSubstitutionLevel_;
}
/**
*
* How much substitution (also called free variable aggregation in MIP
* litterature) should we perform at presolve. This currently only concerns
* variable appearing only in linear constraints. For now the value 0 turns it
* off and any positive value performs substitution.
*
*
* optional int32 presolve_substitution_level = 147 [default = 1];
* @param value The presolveSubstitutionLevel to set.
* @return This builder for chaining.
*/
public Builder setPresolveSubstitutionLevel(int value) {
bitField2_ |= 0x00000010;
presolveSubstitutionLevel_ = value;
onChanged();
return this;
}
/**
*
* How much substitution (also called free variable aggregation in MIP
* litterature) should we perform at presolve. This currently only concerns
* variable appearing only in linear constraints. For now the value 0 turns it
* off and any positive value performs substitution.
*
*
* optional int32 presolve_substitution_level = 147 [default = 1];
* @return This builder for chaining.
*/
public Builder clearPresolveSubstitutionLevel() {
bitField2_ = (bitField2_ & ~0x00000010);
presolveSubstitutionLevel_ = 1;
onChanged();
return this;
}
private boolean useOptimizationHints_ = true;
/**
*
* For an optimization problem, whether we follow some hints in order to find
* a better first solution. For a variable with hint, the solver will always
* try to follow the hint. It will revert to the variable_branching default
* otherwise.
*
*
* optional bool use_optimization_hints = 35 [default = true];
* @return Whether the useOptimizationHints field is set.
*/
@java.lang.Override
public boolean hasUseOptimizationHints() {
return ((bitField2_ & 0x00000020) != 0);
}
/**
*
* For an optimization problem, whether we follow some hints in order to find
* a better first solution. For a variable with hint, the solver will always
* try to follow the hint. It will revert to the variable_branching default
* otherwise.
*
*
* optional bool use_optimization_hints = 35 [default = true];
* @return The useOptimizationHints.
*/
@java.lang.Override
public boolean getUseOptimizationHints() {
return useOptimizationHints_;
}
/**
*
* For an optimization problem, whether we follow some hints in order to find
* a better first solution. For a variable with hint, the solver will always
* try to follow the hint. It will revert to the variable_branching default
* otherwise.
*
*
* optional bool use_optimization_hints = 35 [default = true];
* @param value The useOptimizationHints to set.
* @return This builder for chaining.
*/
public Builder setUseOptimizationHints(boolean value) {
bitField2_ |= 0x00000020;
useOptimizationHints_ = value;
onChanged();
return this;
}
/**
*
* For an optimization problem, whether we follow some hints in order to find
* a better first solution. For a variable with hint, the solver will always
* try to follow the hint. It will revert to the variable_branching default
* otherwise.
*
*
* optional bool use_optimization_hints = 35 [default = true];
* @return This builder for chaining.
*/
public Builder clearUseOptimizationHints() {
bitField2_ = (bitField2_ & ~0x00000020);
useOptimizationHints_ = true;
onChanged();
return this;
}
private boolean minimizeCore_ = true;
/**
*
* Whether we use a simple heuristic to try to minimize an UNSAT core.
*
*
* optional bool minimize_core = 50 [default = true];
* @return Whether the minimizeCore field is set.
*/
@java.lang.Override
public boolean hasMinimizeCore() {
return ((bitField2_ & 0x00000040) != 0);
}
/**
*
* Whether we use a simple heuristic to try to minimize an UNSAT core.
*
*
* optional bool minimize_core = 50 [default = true];
* @return The minimizeCore.
*/
@java.lang.Override
public boolean getMinimizeCore() {
return minimizeCore_;
}
/**
*
* Whether we use a simple heuristic to try to minimize an UNSAT core.
*
*
* optional bool minimize_core = 50 [default = true];
* @param value The minimizeCore to set.
* @return This builder for chaining.
*/
public Builder setMinimizeCore(boolean value) {
bitField2_ |= 0x00000040;
minimizeCore_ = value;
onChanged();
return this;
}
/**
*
* Whether we use a simple heuristic to try to minimize an UNSAT core.
*
*
* optional bool minimize_core = 50 [default = true];
* @return This builder for chaining.
*/
public Builder clearMinimizeCore() {
bitField2_ = (bitField2_ & ~0x00000040);
minimizeCore_ = true;
onChanged();
return this;
}
private boolean findMultipleCores_ = true;
/**
*
* Whether we try to find more independent cores for a given set of
* assumptions in the core based max-SAT algorithms.
*
*
* optional bool find_multiple_cores = 84 [default = true];
* @return Whether the findMultipleCores field is set.
*/
@java.lang.Override
public boolean hasFindMultipleCores() {
return ((bitField2_ & 0x00000080) != 0);
}
/**
*
* Whether we try to find more independent cores for a given set of
* assumptions in the core based max-SAT algorithms.
*
*
* optional bool find_multiple_cores = 84 [default = true];
* @return The findMultipleCores.
*/
@java.lang.Override
public boolean getFindMultipleCores() {
return findMultipleCores_;
}
/**
*
* Whether we try to find more independent cores for a given set of
* assumptions in the core based max-SAT algorithms.
*
*
* optional bool find_multiple_cores = 84 [default = true];
* @param value The findMultipleCores to set.
* @return This builder for chaining.
*/
public Builder setFindMultipleCores(boolean value) {
bitField2_ |= 0x00000080;
findMultipleCores_ = value;
onChanged();
return this;
}
/**
*
* Whether we try to find more independent cores for a given set of
* assumptions in the core based max-SAT algorithms.
*
*
* optional bool find_multiple_cores = 84 [default = true];
* @return This builder for chaining.
*/
public Builder clearFindMultipleCores() {
bitField2_ = (bitField2_ & ~0x00000080);
findMultipleCores_ = true;
onChanged();
return this;
}
private boolean coverOptimization_ = true;
/**
*
* If true, when the max-sat algo find a core, we compute the minimal number
* of literals in the core that needs to be true to have a feasible solution.
*
*
* optional bool cover_optimization = 89 [default = true];
* @return Whether the coverOptimization field is set.
*/
@java.lang.Override
public boolean hasCoverOptimization() {
return ((bitField2_ & 0x00000100) != 0);
}
/**
*
* If true, when the max-sat algo find a core, we compute the minimal number
* of literals in the core that needs to be true to have a feasible solution.
*
*
* optional bool cover_optimization = 89 [default = true];
* @return The coverOptimization.
*/
@java.lang.Override
public boolean getCoverOptimization() {
return coverOptimization_;
}
/**
*
* If true, when the max-sat algo find a core, we compute the minimal number
* of literals in the core that needs to be true to have a feasible solution.
*
*
* optional bool cover_optimization = 89 [default = true];
* @param value The coverOptimization to set.
* @return This builder for chaining.
*/
public Builder setCoverOptimization(boolean value) {
bitField2_ |= 0x00000100;
coverOptimization_ = value;
onChanged();
return this;
}
/**
*
* If true, when the max-sat algo find a core, we compute the minimal number
* of literals in the core that needs to be true to have a feasible solution.
*
*
* optional bool cover_optimization = 89 [default = true];
* @return This builder for chaining.
*/
public Builder clearCoverOptimization() {
bitField2_ = (bitField2_ & ~0x00000100);
coverOptimization_ = true;
onChanged();
return this;
}
private int maxSatAssumptionOrder_ = 0;
/**
* optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [default = DEFAULT_ASSUMPTION_ORDER];
* @return Whether the maxSatAssumptionOrder field is set.
*/
@java.lang.Override public boolean hasMaxSatAssumptionOrder() {
return ((bitField2_ & 0x00000200) != 0);
}
/**
* optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [default = DEFAULT_ASSUMPTION_ORDER];
* @return The maxSatAssumptionOrder.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder getMaxSatAssumptionOrder() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder result = com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder.valueOf(maxSatAssumptionOrder_);
return result == null ? com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder.DEFAULT_ASSUMPTION_ORDER : result;
}
/**
* optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [default = DEFAULT_ASSUMPTION_ORDER];
* @param value The maxSatAssumptionOrder to set.
* @return This builder for chaining.
*/
public Builder setMaxSatAssumptionOrder(com.google.ortools.sat.SatParameters.MaxSatAssumptionOrder value) {
if (value == null) {
throw new NullPointerException();
}
bitField2_ |= 0x00000200;
maxSatAssumptionOrder_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.MaxSatAssumptionOrder max_sat_assumption_order = 51 [default = DEFAULT_ASSUMPTION_ORDER];
* @return This builder for chaining.
*/
public Builder clearMaxSatAssumptionOrder() {
bitField2_ = (bitField2_ & ~0x00000200);
maxSatAssumptionOrder_ = 0;
onChanged();
return this;
}
private boolean maxSatReverseAssumptionOrder_ ;
/**
*
* If true, adds the assumption in the reverse order of the one defined by
* max_sat_assumption_order.
*
*
* optional bool max_sat_reverse_assumption_order = 52 [default = false];
* @return Whether the maxSatReverseAssumptionOrder field is set.
*/
@java.lang.Override
public boolean hasMaxSatReverseAssumptionOrder() {
return ((bitField2_ & 0x00000400) != 0);
}
/**
*
* If true, adds the assumption in the reverse order of the one defined by
* max_sat_assumption_order.
*
*
* optional bool max_sat_reverse_assumption_order = 52 [default = false];
* @return The maxSatReverseAssumptionOrder.
*/
@java.lang.Override
public boolean getMaxSatReverseAssumptionOrder() {
return maxSatReverseAssumptionOrder_;
}
/**
*
* If true, adds the assumption in the reverse order of the one defined by
* max_sat_assumption_order.
*
*
* optional bool max_sat_reverse_assumption_order = 52 [default = false];
* @param value The maxSatReverseAssumptionOrder to set.
* @return This builder for chaining.
*/
public Builder setMaxSatReverseAssumptionOrder(boolean value) {
bitField2_ |= 0x00000400;
maxSatReverseAssumptionOrder_ = value;
onChanged();
return this;
}
/**
*
* If true, adds the assumption in the reverse order of the one defined by
* max_sat_assumption_order.
*
*
* optional bool max_sat_reverse_assumption_order = 52 [default = false];
* @return This builder for chaining.
*/
public Builder clearMaxSatReverseAssumptionOrder() {
bitField2_ = (bitField2_ & ~0x00000400);
maxSatReverseAssumptionOrder_ = false;
onChanged();
return this;
}
private int maxSatStratification_ = 1;
/**
* optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification = 53 [default = STRATIFICATION_DESCENT];
* @return Whether the maxSatStratification field is set.
*/
@java.lang.Override public boolean hasMaxSatStratification() {
return ((bitField2_ & 0x00000800) != 0);
}
/**
* optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification = 53 [default = STRATIFICATION_DESCENT];
* @return The maxSatStratification.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm getMaxSatStratification() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm result = com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm.valueOf(maxSatStratification_);
return result == null ? com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm.STRATIFICATION_DESCENT : result;
}
/**
* optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification = 53 [default = STRATIFICATION_DESCENT];
* @param value The maxSatStratification to set.
* @return This builder for chaining.
*/
public Builder setMaxSatStratification(com.google.ortools.sat.SatParameters.MaxSatStratificationAlgorithm value) {
if (value == null) {
throw new NullPointerException();
}
bitField2_ |= 0x00000800;
maxSatStratification_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.MaxSatStratificationAlgorithm max_sat_stratification = 53 [default = STRATIFICATION_DESCENT];
* @return This builder for chaining.
*/
public Builder clearMaxSatStratification() {
bitField2_ = (bitField2_ & ~0x00000800);
maxSatStratification_ = 1;
onChanged();
return this;
}
private boolean usePrecedencesInDisjunctiveConstraint_ = true;
/**
*
* When this is true, then a disjunctive constraint will try to use the
* precedence relations between time intervals to propagate their bounds
* further. For instance if task A and B are both before C and task A and B
* are in disjunction, then we can deduce that task C must start after
* duration(A) + duration(B) instead of simply max(duration(A), duration(B)),
* provided that the start time for all task was currently zero.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_precedences_in_disjunctive_constraint = 74 [default = true];
* @return Whether the usePrecedencesInDisjunctiveConstraint field is set.
*/
@java.lang.Override
public boolean hasUsePrecedencesInDisjunctiveConstraint() {
return ((bitField2_ & 0x00001000) != 0);
}
/**
*
* When this is true, then a disjunctive constraint will try to use the
* precedence relations between time intervals to propagate their bounds
* further. For instance if task A and B are both before C and task A and B
* are in disjunction, then we can deduce that task C must start after
* duration(A) + duration(B) instead of simply max(duration(A), duration(B)),
* provided that the start time for all task was currently zero.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_precedences_in_disjunctive_constraint = 74 [default = true];
* @return The usePrecedencesInDisjunctiveConstraint.
*/
@java.lang.Override
public boolean getUsePrecedencesInDisjunctiveConstraint() {
return usePrecedencesInDisjunctiveConstraint_;
}
/**
*
* When this is true, then a disjunctive constraint will try to use the
* precedence relations between time intervals to propagate their bounds
* further. For instance if task A and B are both before C and task A and B
* are in disjunction, then we can deduce that task C must start after
* duration(A) + duration(B) instead of simply max(duration(A), duration(B)),
* provided that the start time for all task was currently zero.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_precedences_in_disjunctive_constraint = 74 [default = true];
* @param value The usePrecedencesInDisjunctiveConstraint to set.
* @return This builder for chaining.
*/
public Builder setUsePrecedencesInDisjunctiveConstraint(boolean value) {
bitField2_ |= 0x00001000;
usePrecedencesInDisjunctiveConstraint_ = value;
onChanged();
return this;
}
/**
*
* When this is true, then a disjunctive constraint will try to use the
* precedence relations between time intervals to propagate their bounds
* further. For instance if task A and B are both before C and task A and B
* are in disjunction, then we can deduce that task C must start after
* duration(A) + duration(B) instead of simply max(duration(A), duration(B)),
* provided that the start time for all task was currently zero.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_precedences_in_disjunctive_constraint = 74 [default = true];
* @return This builder for chaining.
*/
public Builder clearUsePrecedencesInDisjunctiveConstraint() {
bitField2_ = (bitField2_ & ~0x00001000);
usePrecedencesInDisjunctiveConstraint_ = true;
onChanged();
return this;
}
private boolean useOverloadCheckerInCumulativeConstraint_ ;
/**
*
* When this is true, the cumulative constraint is reinforced with overload
* checking, i.e., an additional level of reasoning based on energy. This
* additional level supplements the default level of reasoning as well as
* timetable edge finding.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_overload_checker_in_cumulative_constraint = 78 [default = false];
* @return Whether the useOverloadCheckerInCumulativeConstraint field is set.
*/
@java.lang.Override
public boolean hasUseOverloadCheckerInCumulativeConstraint() {
return ((bitField2_ & 0x00002000) != 0);
}
/**
*
* When this is true, the cumulative constraint is reinforced with overload
* checking, i.e., an additional level of reasoning based on energy. This
* additional level supplements the default level of reasoning as well as
* timetable edge finding.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_overload_checker_in_cumulative_constraint = 78 [default = false];
* @return The useOverloadCheckerInCumulativeConstraint.
*/
@java.lang.Override
public boolean getUseOverloadCheckerInCumulativeConstraint() {
return useOverloadCheckerInCumulativeConstraint_;
}
/**
*
* When this is true, the cumulative constraint is reinforced with overload
* checking, i.e., an additional level of reasoning based on energy. This
* additional level supplements the default level of reasoning as well as
* timetable edge finding.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_overload_checker_in_cumulative_constraint = 78 [default = false];
* @param value The useOverloadCheckerInCumulativeConstraint to set.
* @return This builder for chaining.
*/
public Builder setUseOverloadCheckerInCumulativeConstraint(boolean value) {
bitField2_ |= 0x00002000;
useOverloadCheckerInCumulativeConstraint_ = value;
onChanged();
return this;
}
/**
*
* When this is true, the cumulative constraint is reinforced with overload
* checking, i.e., an additional level of reasoning based on energy. This
* additional level supplements the default level of reasoning as well as
* timetable edge finding.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_overload_checker_in_cumulative_constraint = 78 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseOverloadCheckerInCumulativeConstraint() {
bitField2_ = (bitField2_ & ~0x00002000);
useOverloadCheckerInCumulativeConstraint_ = false;
onChanged();
return this;
}
private boolean useTimetableEdgeFindingInCumulativeConstraint_ ;
/**
*
* When this is true, the cumulative constraint is reinforced with timetable
* edge finding, i.e., an additional level of reasoning based on the
* conjunction of energy and mandatory parts. This additional level
* supplements the default level of reasoning as well as overload_checker.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_timetable_edge_finding_in_cumulative_constraint = 79 [default = false];
* @return Whether the useTimetableEdgeFindingInCumulativeConstraint field is set.
*/
@java.lang.Override
public boolean hasUseTimetableEdgeFindingInCumulativeConstraint() {
return ((bitField2_ & 0x00004000) != 0);
}
/**
*
* When this is true, the cumulative constraint is reinforced with timetable
* edge finding, i.e., an additional level of reasoning based on the
* conjunction of energy and mandatory parts. This additional level
* supplements the default level of reasoning as well as overload_checker.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_timetable_edge_finding_in_cumulative_constraint = 79 [default = false];
* @return The useTimetableEdgeFindingInCumulativeConstraint.
*/
@java.lang.Override
public boolean getUseTimetableEdgeFindingInCumulativeConstraint() {
return useTimetableEdgeFindingInCumulativeConstraint_;
}
/**
*
* When this is true, the cumulative constraint is reinforced with timetable
* edge finding, i.e., an additional level of reasoning based on the
* conjunction of energy and mandatory parts. This additional level
* supplements the default level of reasoning as well as overload_checker.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_timetable_edge_finding_in_cumulative_constraint = 79 [default = false];
* @param value The useTimetableEdgeFindingInCumulativeConstraint to set.
* @return This builder for chaining.
*/
public Builder setUseTimetableEdgeFindingInCumulativeConstraint(boolean value) {
bitField2_ |= 0x00004000;
useTimetableEdgeFindingInCumulativeConstraint_ = value;
onChanged();
return this;
}
/**
*
* When this is true, the cumulative constraint is reinforced with timetable
* edge finding, i.e., an additional level of reasoning based on the
* conjunction of energy and mandatory parts. This additional level
* supplements the default level of reasoning as well as overload_checker.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_timetable_edge_finding_in_cumulative_constraint = 79 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseTimetableEdgeFindingInCumulativeConstraint() {
bitField2_ = (bitField2_ & ~0x00004000);
useTimetableEdgeFindingInCumulativeConstraint_ = false;
onChanged();
return this;
}
private boolean useDisjunctiveConstraintInCumulativeConstraint_ = true;
/**
*
* When this is true, the cumulative constraint is reinforced with propagators
* from the disjunctive constraint to improve the inference on a set of tasks
* that are disjunctive at the root of the problem. This additional level
* supplements the default level of reasoning.
* Propagators of the cumulative constraint will not be used at all if all the
* tasks are disjunctive at root node.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_disjunctive_constraint_in_cumulative_constraint = 80 [default = true];
* @return Whether the useDisjunctiveConstraintInCumulativeConstraint field is set.
*/
@java.lang.Override
public boolean hasUseDisjunctiveConstraintInCumulativeConstraint() {
return ((bitField2_ & 0x00008000) != 0);
}
/**
*
* When this is true, the cumulative constraint is reinforced with propagators
* from the disjunctive constraint to improve the inference on a set of tasks
* that are disjunctive at the root of the problem. This additional level
* supplements the default level of reasoning.
* Propagators of the cumulative constraint will not be used at all if all the
* tasks are disjunctive at root node.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_disjunctive_constraint_in_cumulative_constraint = 80 [default = true];
* @return The useDisjunctiveConstraintInCumulativeConstraint.
*/
@java.lang.Override
public boolean getUseDisjunctiveConstraintInCumulativeConstraint() {
return useDisjunctiveConstraintInCumulativeConstraint_;
}
/**
*
* When this is true, the cumulative constraint is reinforced with propagators
* from the disjunctive constraint to improve the inference on a set of tasks
* that are disjunctive at the root of the problem. This additional level
* supplements the default level of reasoning.
* Propagators of the cumulative constraint will not be used at all if all the
* tasks are disjunctive at root node.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_disjunctive_constraint_in_cumulative_constraint = 80 [default = true];
* @param value The useDisjunctiveConstraintInCumulativeConstraint to set.
* @return This builder for chaining.
*/
public Builder setUseDisjunctiveConstraintInCumulativeConstraint(boolean value) {
bitField2_ |= 0x00008000;
useDisjunctiveConstraintInCumulativeConstraint_ = value;
onChanged();
return this;
}
/**
*
* When this is true, the cumulative constraint is reinforced with propagators
* from the disjunctive constraint to improve the inference on a set of tasks
* that are disjunctive at the root of the problem. This additional level
* supplements the default level of reasoning.
* Propagators of the cumulative constraint will not be used at all if all the
* tasks are disjunctive at root node.
* This always result in better propagation, but it is usually slow, so
* depending on the problem, turning this off may lead to a faster solution.
*
*
* optional bool use_disjunctive_constraint_in_cumulative_constraint = 80 [default = true];
* @return This builder for chaining.
*/
public Builder clearUseDisjunctiveConstraintInCumulativeConstraint() {
bitField2_ = (bitField2_ & ~0x00008000);
useDisjunctiveConstraintInCumulativeConstraint_ = true;
onChanged();
return this;
}
private int linearizationLevel_ = 1;
/**
*
* A non-negative level indicating the type of constraints we consider in the
* LP relaxation. At level zero, no LP relaxation is used. At level 1, only
* the linear constraint and full encoding are added. At level 2, we also add
* all the Boolean constraints.
*
*
* optional int32 linearization_level = 90 [default = 1];
* @return Whether the linearizationLevel field is set.
*/
@java.lang.Override
public boolean hasLinearizationLevel() {
return ((bitField2_ & 0x00010000) != 0);
}
/**
*
* A non-negative level indicating the type of constraints we consider in the
* LP relaxation. At level zero, no LP relaxation is used. At level 1, only
* the linear constraint and full encoding are added. At level 2, we also add
* all the Boolean constraints.
*
*
* optional int32 linearization_level = 90 [default = 1];
* @return The linearizationLevel.
*/
@java.lang.Override
public int getLinearizationLevel() {
return linearizationLevel_;
}
/**
*
* A non-negative level indicating the type of constraints we consider in the
* LP relaxation. At level zero, no LP relaxation is used. At level 1, only
* the linear constraint and full encoding are added. At level 2, we also add
* all the Boolean constraints.
*
*
* optional int32 linearization_level = 90 [default = 1];
* @param value The linearizationLevel to set.
* @return This builder for chaining.
*/
public Builder setLinearizationLevel(int value) {
bitField2_ |= 0x00010000;
linearizationLevel_ = value;
onChanged();
return this;
}
/**
*
* A non-negative level indicating the type of constraints we consider in the
* LP relaxation. At level zero, no LP relaxation is used. At level 1, only
* the linear constraint and full encoding are added. At level 2, we also add
* all the Boolean constraints.
*
*
* optional int32 linearization_level = 90 [default = 1];
* @return This builder for chaining.
*/
public Builder clearLinearizationLevel() {
bitField2_ = (bitField2_ & ~0x00010000);
linearizationLevel_ = 1;
onChanged();
return this;
}
private int booleanEncodingLevel_ = 1;
/**
*
* A non-negative level indicating how much we should try to fully encode
* Integer variables as Boolean.
*
*
* optional int32 boolean_encoding_level = 107 [default = 1];
* @return Whether the booleanEncodingLevel field is set.
*/
@java.lang.Override
public boolean hasBooleanEncodingLevel() {
return ((bitField2_ & 0x00020000) != 0);
}
/**
*
* A non-negative level indicating how much we should try to fully encode
* Integer variables as Boolean.
*
*
* optional int32 boolean_encoding_level = 107 [default = 1];
* @return The booleanEncodingLevel.
*/
@java.lang.Override
public int getBooleanEncodingLevel() {
return booleanEncodingLevel_;
}
/**
*
* A non-negative level indicating how much we should try to fully encode
* Integer variables as Boolean.
*
*
* optional int32 boolean_encoding_level = 107 [default = 1];
* @param value The booleanEncodingLevel to set.
* @return This builder for chaining.
*/
public Builder setBooleanEncodingLevel(int value) {
bitField2_ |= 0x00020000;
booleanEncodingLevel_ = value;
onChanged();
return this;
}
/**
*
* A non-negative level indicating how much we should try to fully encode
* Integer variables as Boolean.
*
*
* optional int32 boolean_encoding_level = 107 [default = 1];
* @return This builder for chaining.
*/
public Builder clearBooleanEncodingLevel() {
bitField2_ = (bitField2_ & ~0x00020000);
booleanEncodingLevel_ = 1;
onChanged();
return this;
}
private int maxNumCuts_ = 10000;
/**
*
* The limit on the number of cuts in our cut pool. When this is reached we do
* not generate cuts anymore.
* TODO(user): We should probably remove this parameters, and just always
* generate cuts but only keep the best n or something.
*
*
* optional int32 max_num_cuts = 91 [default = 10000];
* @return Whether the maxNumCuts field is set.
*/
@java.lang.Override
public boolean hasMaxNumCuts() {
return ((bitField2_ & 0x00040000) != 0);
}
/**
*
* The limit on the number of cuts in our cut pool. When this is reached we do
* not generate cuts anymore.
* TODO(user): We should probably remove this parameters, and just always
* generate cuts but only keep the best n or something.
*
*
* optional int32 max_num_cuts = 91 [default = 10000];
* @return The maxNumCuts.
*/
@java.lang.Override
public int getMaxNumCuts() {
return maxNumCuts_;
}
/**
*
* The limit on the number of cuts in our cut pool. When this is reached we do
* not generate cuts anymore.
* TODO(user): We should probably remove this parameters, and just always
* generate cuts but only keep the best n or something.
*
*
* optional int32 max_num_cuts = 91 [default = 10000];
* @param value The maxNumCuts to set.
* @return This builder for chaining.
*/
public Builder setMaxNumCuts(int value) {
bitField2_ |= 0x00040000;
maxNumCuts_ = value;
onChanged();
return this;
}
/**
*
* The limit on the number of cuts in our cut pool. When this is reached we do
* not generate cuts anymore.
* TODO(user): We should probably remove this parameters, and just always
* generate cuts but only keep the best n or something.
*
*
* optional int32 max_num_cuts = 91 [default = 10000];
* @return This builder for chaining.
*/
public Builder clearMaxNumCuts() {
bitField2_ = (bitField2_ & ~0x00040000);
maxNumCuts_ = 10000;
onChanged();
return this;
}
private boolean onlyAddCutsAtLevelZero_ ;
/**
*
* For the cut that can be generated at any level, this control if we only
* try to generate them at the root node.
*
*
* optional bool only_add_cuts_at_level_zero = 92 [default = false];
* @return Whether the onlyAddCutsAtLevelZero field is set.
*/
@java.lang.Override
public boolean hasOnlyAddCutsAtLevelZero() {
return ((bitField2_ & 0x00080000) != 0);
}
/**
*
* For the cut that can be generated at any level, this control if we only
* try to generate them at the root node.
*
*
* optional bool only_add_cuts_at_level_zero = 92 [default = false];
* @return The onlyAddCutsAtLevelZero.
*/
@java.lang.Override
public boolean getOnlyAddCutsAtLevelZero() {
return onlyAddCutsAtLevelZero_;
}
/**
*
* For the cut that can be generated at any level, this control if we only
* try to generate them at the root node.
*
*
* optional bool only_add_cuts_at_level_zero = 92 [default = false];
* @param value The onlyAddCutsAtLevelZero to set.
* @return This builder for chaining.
*/
public Builder setOnlyAddCutsAtLevelZero(boolean value) {
bitField2_ |= 0x00080000;
onlyAddCutsAtLevelZero_ = value;
onChanged();
return this;
}
/**
*
* For the cut that can be generated at any level, this control if we only
* try to generate them at the root node.
*
*
* optional bool only_add_cuts_at_level_zero = 92 [default = false];
* @return This builder for chaining.
*/
public Builder clearOnlyAddCutsAtLevelZero() {
bitField2_ = (bitField2_ & ~0x00080000);
onlyAddCutsAtLevelZero_ = false;
onChanged();
return this;
}
private boolean addKnapsackCuts_ ;
/**
*
* Whether we generate knapsack cuts. Note that in our setting where all
* variables are integer and bounded on both side, such a cut could be applied
* to any constraint.
*
*
* optional bool add_knapsack_cuts = 111 [default = false];
* @return Whether the addKnapsackCuts field is set.
*/
@java.lang.Override
public boolean hasAddKnapsackCuts() {
return ((bitField2_ & 0x00100000) != 0);
}
/**
*
* Whether we generate knapsack cuts. Note that in our setting where all
* variables are integer and bounded on both side, such a cut could be applied
* to any constraint.
*
*
* optional bool add_knapsack_cuts = 111 [default = false];
* @return The addKnapsackCuts.
*/
@java.lang.Override
public boolean getAddKnapsackCuts() {
return addKnapsackCuts_;
}
/**
*
* Whether we generate knapsack cuts. Note that in our setting where all
* variables are integer and bounded on both side, such a cut could be applied
* to any constraint.
*
*
* optional bool add_knapsack_cuts = 111 [default = false];
* @param value The addKnapsackCuts to set.
* @return This builder for chaining.
*/
public Builder setAddKnapsackCuts(boolean value) {
bitField2_ |= 0x00100000;
addKnapsackCuts_ = value;
onChanged();
return this;
}
/**
*
* Whether we generate knapsack cuts. Note that in our setting where all
* variables are integer and bounded on both side, such a cut could be applied
* to any constraint.
*
*
* optional bool add_knapsack_cuts = 111 [default = false];
* @return This builder for chaining.
*/
public Builder clearAddKnapsackCuts() {
bitField2_ = (bitField2_ & ~0x00100000);
addKnapsackCuts_ = false;
onChanged();
return this;
}
private boolean addCgCuts_ = true;
/**
*
* Whether we generate and add Chvatal-Gomory cuts to the LP at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_cg_cuts = 117 [default = true];
* @return Whether the addCgCuts field is set.
*/
@java.lang.Override
public boolean hasAddCgCuts() {
return ((bitField2_ & 0x00200000) != 0);
}
/**
*
* Whether we generate and add Chvatal-Gomory cuts to the LP at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_cg_cuts = 117 [default = true];
* @return The addCgCuts.
*/
@java.lang.Override
public boolean getAddCgCuts() {
return addCgCuts_;
}
/**
*
* Whether we generate and add Chvatal-Gomory cuts to the LP at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_cg_cuts = 117 [default = true];
* @param value The addCgCuts to set.
* @return This builder for chaining.
*/
public Builder setAddCgCuts(boolean value) {
bitField2_ |= 0x00200000;
addCgCuts_ = value;
onChanged();
return this;
}
/**
*
* Whether we generate and add Chvatal-Gomory cuts to the LP at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_cg_cuts = 117 [default = true];
* @return This builder for chaining.
*/
public Builder clearAddCgCuts() {
bitField2_ = (bitField2_ & ~0x00200000);
addCgCuts_ = true;
onChanged();
return this;
}
private boolean addMirCuts_ = true;
/**
*
* Whether we generate MIR cuts at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_mir_cuts = 120 [default = true];
* @return Whether the addMirCuts field is set.
*/
@java.lang.Override
public boolean hasAddMirCuts() {
return ((bitField2_ & 0x00400000) != 0);
}
/**
*
* Whether we generate MIR cuts at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_mir_cuts = 120 [default = true];
* @return The addMirCuts.
*/
@java.lang.Override
public boolean getAddMirCuts() {
return addMirCuts_;
}
/**
*
* Whether we generate MIR cuts at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_mir_cuts = 120 [default = true];
* @param value The addMirCuts to set.
* @return This builder for chaining.
*/
public Builder setAddMirCuts(boolean value) {
bitField2_ |= 0x00400000;
addMirCuts_ = value;
onChanged();
return this;
}
/**
*
* Whether we generate MIR cuts at root node.
* Note that for now, this is not heavily tunned.
*
*
* optional bool add_mir_cuts = 120 [default = true];
* @return This builder for chaining.
*/
public Builder clearAddMirCuts() {
bitField2_ = (bitField2_ & ~0x00400000);
addMirCuts_ = true;
onChanged();
return this;
}
private int maxAllDiffCutSize_ = 7;
/**
*
* Cut generator for all diffs can add too many cuts for large all_diff
* constraints. This parameter restricts the large all_diff constraints to
* have a cut generator.
*
*
* optional int32 max_all_diff_cut_size = 148 [default = 7];
* @return Whether the maxAllDiffCutSize field is set.
*/
@java.lang.Override
public boolean hasMaxAllDiffCutSize() {
return ((bitField2_ & 0x00800000) != 0);
}
/**
*
* Cut generator for all diffs can add too many cuts for large all_diff
* constraints. This parameter restricts the large all_diff constraints to
* have a cut generator.
*
*
* optional int32 max_all_diff_cut_size = 148 [default = 7];
* @return The maxAllDiffCutSize.
*/
@java.lang.Override
public int getMaxAllDiffCutSize() {
return maxAllDiffCutSize_;
}
/**
*
* Cut generator for all diffs can add too many cuts for large all_diff
* constraints. This parameter restricts the large all_diff constraints to
* have a cut generator.
*
*
* optional int32 max_all_diff_cut_size = 148 [default = 7];
* @param value The maxAllDiffCutSize to set.
* @return This builder for chaining.
*/
public Builder setMaxAllDiffCutSize(int value) {
bitField2_ |= 0x00800000;
maxAllDiffCutSize_ = value;
onChanged();
return this;
}
/**
*
* Cut generator for all diffs can add too many cuts for large all_diff
* constraints. This parameter restricts the large all_diff constraints to
* have a cut generator.
*
*
* optional int32 max_all_diff_cut_size = 148 [default = 7];
* @return This builder for chaining.
*/
public Builder clearMaxAllDiffCutSize() {
bitField2_ = (bitField2_ & ~0x00800000);
maxAllDiffCutSize_ = 7;
onChanged();
return this;
}
private boolean addLinMaxCuts_ = true;
/**
*
* For the lin max constraints, generates the cuts described in "Strong
* mixed-integer programming formulations for trained neural networks" by Ross
* Anderson et. (https://arxiv.org/pdf/1811.01988.pdf)
*
*
* optional bool add_lin_max_cuts = 152 [default = true];
* @return Whether the addLinMaxCuts field is set.
*/
@java.lang.Override
public boolean hasAddLinMaxCuts() {
return ((bitField2_ & 0x01000000) != 0);
}
/**
*
* For the lin max constraints, generates the cuts described in "Strong
* mixed-integer programming formulations for trained neural networks" by Ross
* Anderson et. (https://arxiv.org/pdf/1811.01988.pdf)
*
*
* optional bool add_lin_max_cuts = 152 [default = true];
* @return The addLinMaxCuts.
*/
@java.lang.Override
public boolean getAddLinMaxCuts() {
return addLinMaxCuts_;
}
/**
*
* For the lin max constraints, generates the cuts described in "Strong
* mixed-integer programming formulations for trained neural networks" by Ross
* Anderson et. (https://arxiv.org/pdf/1811.01988.pdf)
*
*
* optional bool add_lin_max_cuts = 152 [default = true];
* @param value The addLinMaxCuts to set.
* @return This builder for chaining.
*/
public Builder setAddLinMaxCuts(boolean value) {
bitField2_ |= 0x01000000;
addLinMaxCuts_ = value;
onChanged();
return this;
}
/**
*
* For the lin max constraints, generates the cuts described in "Strong
* mixed-integer programming formulations for trained neural networks" by Ross
* Anderson et. (https://arxiv.org/pdf/1811.01988.pdf)
*
*
* optional bool add_lin_max_cuts = 152 [default = true];
* @return This builder for chaining.
*/
public Builder clearAddLinMaxCuts() {
bitField2_ = (bitField2_ & ~0x01000000);
addLinMaxCuts_ = true;
onChanged();
return this;
}
private int maxIntegerRoundingScaling_ = 600;
/**
*
* In the integer rounding procedure used for MIR and Gomory cut, the maximum
* "scaling" we use (must be positive). The lower this is, the lower the
* integer coefficients of the cut will be. Note that cut generated by lower
* values are not necessarily worse than cut generated by larger value. There
* is no strict dominance relationship.
* Setting this to 2 result in the "strong fractional rouding" of Letchford
* and Lodi.
*
*
* optional int32 max_integer_rounding_scaling = 119 [default = 600];
* @return Whether the maxIntegerRoundingScaling field is set.
*/
@java.lang.Override
public boolean hasMaxIntegerRoundingScaling() {
return ((bitField2_ & 0x02000000) != 0);
}
/**
*
* In the integer rounding procedure used for MIR and Gomory cut, the maximum
* "scaling" we use (must be positive). The lower this is, the lower the
* integer coefficients of the cut will be. Note that cut generated by lower
* values are not necessarily worse than cut generated by larger value. There
* is no strict dominance relationship.
* Setting this to 2 result in the "strong fractional rouding" of Letchford
* and Lodi.
*
*
* optional int32 max_integer_rounding_scaling = 119 [default = 600];
* @return The maxIntegerRoundingScaling.
*/
@java.lang.Override
public int getMaxIntegerRoundingScaling() {
return maxIntegerRoundingScaling_;
}
/**
*
* In the integer rounding procedure used for MIR and Gomory cut, the maximum
* "scaling" we use (must be positive). The lower this is, the lower the
* integer coefficients of the cut will be. Note that cut generated by lower
* values are not necessarily worse than cut generated by larger value. There
* is no strict dominance relationship.
* Setting this to 2 result in the "strong fractional rouding" of Letchford
* and Lodi.
*
*
* optional int32 max_integer_rounding_scaling = 119 [default = 600];
* @param value The maxIntegerRoundingScaling to set.
* @return This builder for chaining.
*/
public Builder setMaxIntegerRoundingScaling(int value) {
bitField2_ |= 0x02000000;
maxIntegerRoundingScaling_ = value;
onChanged();
return this;
}
/**
*
* In the integer rounding procedure used for MIR and Gomory cut, the maximum
* "scaling" we use (must be positive). The lower this is, the lower the
* integer coefficients of the cut will be. Note that cut generated by lower
* values are not necessarily worse than cut generated by larger value. There
* is no strict dominance relationship.
* Setting this to 2 result in the "strong fractional rouding" of Letchford
* and Lodi.
*
*
* optional int32 max_integer_rounding_scaling = 119 [default = 600];
* @return This builder for chaining.
*/
public Builder clearMaxIntegerRoundingScaling() {
bitField2_ = (bitField2_ & ~0x02000000);
maxIntegerRoundingScaling_ = 600;
onChanged();
return this;
}
private boolean addLpConstraintsLazily_ = true;
/**
*
* If true, we start by an empty LP, and only add constraints not satisfied
* by the current LP solution batch by batch. A constraint that is only added
* like this is known as a "lazy" constraint in the literature, except that we
* currently consider all constraints as lazy here.
*
*
* optional bool add_lp_constraints_lazily = 112 [default = true];
* @return Whether the addLpConstraintsLazily field is set.
*/
@java.lang.Override
public boolean hasAddLpConstraintsLazily() {
return ((bitField2_ & 0x04000000) != 0);
}
/**
*
* If true, we start by an empty LP, and only add constraints not satisfied
* by the current LP solution batch by batch. A constraint that is only added
* like this is known as a "lazy" constraint in the literature, except that we
* currently consider all constraints as lazy here.
*
*
* optional bool add_lp_constraints_lazily = 112 [default = true];
* @return The addLpConstraintsLazily.
*/
@java.lang.Override
public boolean getAddLpConstraintsLazily() {
return addLpConstraintsLazily_;
}
/**
*
* If true, we start by an empty LP, and only add constraints not satisfied
* by the current LP solution batch by batch. A constraint that is only added
* like this is known as a "lazy" constraint in the literature, except that we
* currently consider all constraints as lazy here.
*
*
* optional bool add_lp_constraints_lazily = 112 [default = true];
* @param value The addLpConstraintsLazily to set.
* @return This builder for chaining.
*/
public Builder setAddLpConstraintsLazily(boolean value) {
bitField2_ |= 0x04000000;
addLpConstraintsLazily_ = value;
onChanged();
return this;
}
/**
*
* If true, we start by an empty LP, and only add constraints not satisfied
* by the current LP solution batch by batch. A constraint that is only added
* like this is known as a "lazy" constraint in the literature, except that we
* currently consider all constraints as lazy here.
*
*
* optional bool add_lp_constraints_lazily = 112 [default = true];
* @return This builder for chaining.
*/
public Builder clearAddLpConstraintsLazily() {
bitField2_ = (bitField2_ & ~0x04000000);
addLpConstraintsLazily_ = true;
onChanged();
return this;
}
private double minOrthogonalityForLpConstraints_ = 0.05D;
/**
*
* While adding constraints, skip the constraints which have orthogonality
* less than 'min_orthogonality_for_lp_constraints' with already added
* constraints during current call. Orthogonality is defined as 1 -
* cosine(vector angle between constraints). A value of zero disable this
* feature.
*
*
* optional double min_orthogonality_for_lp_constraints = 115 [default = 0.05];
* @return Whether the minOrthogonalityForLpConstraints field is set.
*/
@java.lang.Override
public boolean hasMinOrthogonalityForLpConstraints() {
return ((bitField2_ & 0x08000000) != 0);
}
/**
*
* While adding constraints, skip the constraints which have orthogonality
* less than 'min_orthogonality_for_lp_constraints' with already added
* constraints during current call. Orthogonality is defined as 1 -
* cosine(vector angle between constraints). A value of zero disable this
* feature.
*
*
* optional double min_orthogonality_for_lp_constraints = 115 [default = 0.05];
* @return The minOrthogonalityForLpConstraints.
*/
@java.lang.Override
public double getMinOrthogonalityForLpConstraints() {
return minOrthogonalityForLpConstraints_;
}
/**
*
* While adding constraints, skip the constraints which have orthogonality
* less than 'min_orthogonality_for_lp_constraints' with already added
* constraints during current call. Orthogonality is defined as 1 -
* cosine(vector angle between constraints). A value of zero disable this
* feature.
*
*
* optional double min_orthogonality_for_lp_constraints = 115 [default = 0.05];
* @param value The minOrthogonalityForLpConstraints to set.
* @return This builder for chaining.
*/
public Builder setMinOrthogonalityForLpConstraints(double value) {
bitField2_ |= 0x08000000;
minOrthogonalityForLpConstraints_ = value;
onChanged();
return this;
}
/**
*
* While adding constraints, skip the constraints which have orthogonality
* less than 'min_orthogonality_for_lp_constraints' with already added
* constraints during current call. Orthogonality is defined as 1 -
* cosine(vector angle between constraints). A value of zero disable this
* feature.
*
*
* optional double min_orthogonality_for_lp_constraints = 115 [default = 0.05];
* @return This builder for chaining.
*/
public Builder clearMinOrthogonalityForLpConstraints() {
bitField2_ = (bitField2_ & ~0x08000000);
minOrthogonalityForLpConstraints_ = 0.05D;
onChanged();
return this;
}
private int maxCutRoundsAtLevelZero_ = 1;
/**
*
* Max number of time we perform cut generation and resolve the LP at level 0.
*
*
* optional int32 max_cut_rounds_at_level_zero = 154 [default = 1];
* @return Whether the maxCutRoundsAtLevelZero field is set.
*/
@java.lang.Override
public boolean hasMaxCutRoundsAtLevelZero() {
return ((bitField2_ & 0x10000000) != 0);
}
/**
*
* Max number of time we perform cut generation and resolve the LP at level 0.
*
*
* optional int32 max_cut_rounds_at_level_zero = 154 [default = 1];
* @return The maxCutRoundsAtLevelZero.
*/
@java.lang.Override
public int getMaxCutRoundsAtLevelZero() {
return maxCutRoundsAtLevelZero_;
}
/**
*
* Max number of time we perform cut generation and resolve the LP at level 0.
*
*
* optional int32 max_cut_rounds_at_level_zero = 154 [default = 1];
* @param value The maxCutRoundsAtLevelZero to set.
* @return This builder for chaining.
*/
public Builder setMaxCutRoundsAtLevelZero(int value) {
bitField2_ |= 0x10000000;
maxCutRoundsAtLevelZero_ = value;
onChanged();
return this;
}
/**
*
* Max number of time we perform cut generation and resolve the LP at level 0.
*
*
* optional int32 max_cut_rounds_at_level_zero = 154 [default = 1];
* @return This builder for chaining.
*/
public Builder clearMaxCutRoundsAtLevelZero() {
bitField2_ = (bitField2_ & ~0x10000000);
maxCutRoundsAtLevelZero_ = 1;
onChanged();
return this;
}
private int maxConsecutiveInactiveCount_ = 100;
/**
*
* If a constraint/cut in LP is not active for that many consecutive OPTIMAL
* solves, remove it from the LP. Note that it might be added again later if
* it become violated by the current LP solution.
*
*
* optional int32 max_consecutive_inactive_count = 121 [default = 100];
* @return Whether the maxConsecutiveInactiveCount field is set.
*/
@java.lang.Override
public boolean hasMaxConsecutiveInactiveCount() {
return ((bitField2_ & 0x20000000) != 0);
}
/**
*
* If a constraint/cut in LP is not active for that many consecutive OPTIMAL
* solves, remove it from the LP. Note that it might be added again later if
* it become violated by the current LP solution.
*
*
* optional int32 max_consecutive_inactive_count = 121 [default = 100];
* @return The maxConsecutiveInactiveCount.
*/
@java.lang.Override
public int getMaxConsecutiveInactiveCount() {
return maxConsecutiveInactiveCount_;
}
/**
*
* If a constraint/cut in LP is not active for that many consecutive OPTIMAL
* solves, remove it from the LP. Note that it might be added again later if
* it become violated by the current LP solution.
*
*
* optional int32 max_consecutive_inactive_count = 121 [default = 100];
* @param value The maxConsecutiveInactiveCount to set.
* @return This builder for chaining.
*/
public Builder setMaxConsecutiveInactiveCount(int value) {
bitField2_ |= 0x20000000;
maxConsecutiveInactiveCount_ = value;
onChanged();
return this;
}
/**
*
* If a constraint/cut in LP is not active for that many consecutive OPTIMAL
* solves, remove it from the LP. Note that it might be added again later if
* it become violated by the current LP solution.
*
*
* optional int32 max_consecutive_inactive_count = 121 [default = 100];
* @return This builder for chaining.
*/
public Builder clearMaxConsecutiveInactiveCount() {
bitField2_ = (bitField2_ & ~0x20000000);
maxConsecutiveInactiveCount_ = 100;
onChanged();
return this;
}
private double cutMaxActiveCountValue_ = 10000000000D;
/**
*
* These parameters are similar to sat clause management activity parameters.
* They are effective only if the number of generated cuts exceed the storage
* limit. Default values are based on a few experiments on miplib instances.
*
*
* optional double cut_max_active_count_value = 155 [default = 10000000000];
* @return Whether the cutMaxActiveCountValue field is set.
*/
@java.lang.Override
public boolean hasCutMaxActiveCountValue() {
return ((bitField2_ & 0x40000000) != 0);
}
/**
*
* These parameters are similar to sat clause management activity parameters.
* They are effective only if the number of generated cuts exceed the storage
* limit. Default values are based on a few experiments on miplib instances.
*
*
* optional double cut_max_active_count_value = 155 [default = 10000000000];
* @return The cutMaxActiveCountValue.
*/
@java.lang.Override
public double getCutMaxActiveCountValue() {
return cutMaxActiveCountValue_;
}
/**
*
* These parameters are similar to sat clause management activity parameters.
* They are effective only if the number of generated cuts exceed the storage
* limit. Default values are based on a few experiments on miplib instances.
*
*
* optional double cut_max_active_count_value = 155 [default = 10000000000];
* @param value The cutMaxActiveCountValue to set.
* @return This builder for chaining.
*/
public Builder setCutMaxActiveCountValue(double value) {
bitField2_ |= 0x40000000;
cutMaxActiveCountValue_ = value;
onChanged();
return this;
}
/**
*
* These parameters are similar to sat clause management activity parameters.
* They are effective only if the number of generated cuts exceed the storage
* limit. Default values are based on a few experiments on miplib instances.
*
*
* optional double cut_max_active_count_value = 155 [default = 10000000000];
* @return This builder for chaining.
*/
public Builder clearCutMaxActiveCountValue() {
bitField2_ = (bitField2_ & ~0x40000000);
cutMaxActiveCountValue_ = 10000000000D;
onChanged();
return this;
}
private double cutActiveCountDecay_ = 0.8D;
/**
* optional double cut_active_count_decay = 156 [default = 0.8];
* @return Whether the cutActiveCountDecay field is set.
*/
@java.lang.Override
public boolean hasCutActiveCountDecay() {
return ((bitField2_ & 0x80000000) != 0);
}
/**
* optional double cut_active_count_decay = 156 [default = 0.8];
* @return The cutActiveCountDecay.
*/
@java.lang.Override
public double getCutActiveCountDecay() {
return cutActiveCountDecay_;
}
/**
* optional double cut_active_count_decay = 156 [default = 0.8];
* @param value The cutActiveCountDecay to set.
* @return This builder for chaining.
*/
public Builder setCutActiveCountDecay(double value) {
bitField2_ |= 0x80000000;
cutActiveCountDecay_ = value;
onChanged();
return this;
}
/**
* optional double cut_active_count_decay = 156 [default = 0.8];
* @return This builder for chaining.
*/
public Builder clearCutActiveCountDecay() {
bitField2_ = (bitField2_ & ~0x80000000);
cutActiveCountDecay_ = 0.8D;
onChanged();
return this;
}
private int cutCleanupTarget_ = 1000;
/**
*
* Target number of constraints to remove during cleanup.
*
*
* optional int32 cut_cleanup_target = 157 [default = 1000];
* @return Whether the cutCleanupTarget field is set.
*/
@java.lang.Override
public boolean hasCutCleanupTarget() {
return ((bitField3_ & 0x00000001) != 0);
}
/**
*
* Target number of constraints to remove during cleanup.
*
*
* optional int32 cut_cleanup_target = 157 [default = 1000];
* @return The cutCleanupTarget.
*/
@java.lang.Override
public int getCutCleanupTarget() {
return cutCleanupTarget_;
}
/**
*
* Target number of constraints to remove during cleanup.
*
*
* optional int32 cut_cleanup_target = 157 [default = 1000];
* @param value The cutCleanupTarget to set.
* @return This builder for chaining.
*/
public Builder setCutCleanupTarget(int value) {
bitField3_ |= 0x00000001;
cutCleanupTarget_ = value;
onChanged();
return this;
}
/**
*
* Target number of constraints to remove during cleanup.
*
*
* optional int32 cut_cleanup_target = 157 [default = 1000];
* @return This builder for chaining.
*/
public Builder clearCutCleanupTarget() {
bitField3_ = (bitField3_ & ~0x00000001);
cutCleanupTarget_ = 1000;
onChanged();
return this;
}
private int newConstraintsBatchSize_ = 50;
/**
*
* Add that many lazy contraints (or cuts) at once in the LP. Note that at the
* beginning of the solve, we do add more than this.
*
*
* optional int32 new_constraints_batch_size = 122 [default = 50];
* @return Whether the newConstraintsBatchSize field is set.
*/
@java.lang.Override
public boolean hasNewConstraintsBatchSize() {
return ((bitField3_ & 0x00000002) != 0);
}
/**
*
* Add that many lazy contraints (or cuts) at once in the LP. Note that at the
* beginning of the solve, we do add more than this.
*
*
* optional int32 new_constraints_batch_size = 122 [default = 50];
* @return The newConstraintsBatchSize.
*/
@java.lang.Override
public int getNewConstraintsBatchSize() {
return newConstraintsBatchSize_;
}
/**
*
* Add that many lazy contraints (or cuts) at once in the LP. Note that at the
* beginning of the solve, we do add more than this.
*
*
* optional int32 new_constraints_batch_size = 122 [default = 50];
* @param value The newConstraintsBatchSize to set.
* @return This builder for chaining.
*/
public Builder setNewConstraintsBatchSize(int value) {
bitField3_ |= 0x00000002;
newConstraintsBatchSize_ = value;
onChanged();
return this;
}
/**
*
* Add that many lazy contraints (or cuts) at once in the LP. Note that at the
* beginning of the solve, we do add more than this.
*
*
* optional int32 new_constraints_batch_size = 122 [default = 50];
* @return This builder for chaining.
*/
public Builder clearNewConstraintsBatchSize() {
bitField3_ = (bitField3_ & ~0x00000002);
newConstraintsBatchSize_ = 50;
onChanged();
return this;
}
private int searchBranching_ = 0;
/**
* optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTOMATIC_SEARCH];
* @return Whether the searchBranching field is set.
*/
@java.lang.Override public boolean hasSearchBranching() {
return ((bitField3_ & 0x00000004) != 0);
}
/**
* optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTOMATIC_SEARCH];
* @return The searchBranching.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.SearchBranching getSearchBranching() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.SearchBranching result = com.google.ortools.sat.SatParameters.SearchBranching.valueOf(searchBranching_);
return result == null ? com.google.ortools.sat.SatParameters.SearchBranching.AUTOMATIC_SEARCH : result;
}
/**
* optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTOMATIC_SEARCH];
* @param value The searchBranching to set.
* @return This builder for chaining.
*/
public Builder setSearchBranching(com.google.ortools.sat.SatParameters.SearchBranching value) {
if (value == null) {
throw new NullPointerException();
}
bitField3_ |= 0x00000004;
searchBranching_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.SearchBranching search_branching = 82 [default = AUTOMATIC_SEARCH];
* @return This builder for chaining.
*/
public Builder clearSearchBranching() {
bitField3_ = (bitField3_ & ~0x00000004);
searchBranching_ = 0;
onChanged();
return this;
}
private int hintConflictLimit_ = 10;
/**
*
* When we try to follow the hint, we do a FIXED_SEARCH using the hint until
* this number of conflict is reached.
*
*
* optional int32 hint_conflict_limit = 153 [default = 10];
* @return Whether the hintConflictLimit field is set.
*/
@java.lang.Override
public boolean hasHintConflictLimit() {
return ((bitField3_ & 0x00000008) != 0);
}
/**
*
* When we try to follow the hint, we do a FIXED_SEARCH using the hint until
* this number of conflict is reached.
*
*
* optional int32 hint_conflict_limit = 153 [default = 10];
* @return The hintConflictLimit.
*/
@java.lang.Override
public int getHintConflictLimit() {
return hintConflictLimit_;
}
/**
*
* When we try to follow the hint, we do a FIXED_SEARCH using the hint until
* this number of conflict is reached.
*
*
* optional int32 hint_conflict_limit = 153 [default = 10];
* @param value The hintConflictLimit to set.
* @return This builder for chaining.
*/
public Builder setHintConflictLimit(int value) {
bitField3_ |= 0x00000008;
hintConflictLimit_ = value;
onChanged();
return this;
}
/**
*
* When we try to follow the hint, we do a FIXED_SEARCH using the hint until
* this number of conflict is reached.
*
*
* optional int32 hint_conflict_limit = 153 [default = 10];
* @return This builder for chaining.
*/
public Builder clearHintConflictLimit() {
bitField3_ = (bitField3_ & ~0x00000008);
hintConflictLimit_ = 10;
onChanged();
return this;
}
private boolean exploitIntegerLpSolution_ = true;
/**
*
* If true and the Lp relaxation of the problem has an integer optimal
* solution, try to exploit it. Note that since the LP relaxation may not
* contain all the constraints, such a solution is not necessarily a solution
* of the full problem.
*
*
* optional bool exploit_integer_lp_solution = 94 [default = true];
* @return Whether the exploitIntegerLpSolution field is set.
*/
@java.lang.Override
public boolean hasExploitIntegerLpSolution() {
return ((bitField3_ & 0x00000010) != 0);
}
/**
*
* If true and the Lp relaxation of the problem has an integer optimal
* solution, try to exploit it. Note that since the LP relaxation may not
* contain all the constraints, such a solution is not necessarily a solution
* of the full problem.
*
*
* optional bool exploit_integer_lp_solution = 94 [default = true];
* @return The exploitIntegerLpSolution.
*/
@java.lang.Override
public boolean getExploitIntegerLpSolution() {
return exploitIntegerLpSolution_;
}
/**
*
* If true and the Lp relaxation of the problem has an integer optimal
* solution, try to exploit it. Note that since the LP relaxation may not
* contain all the constraints, such a solution is not necessarily a solution
* of the full problem.
*
*
* optional bool exploit_integer_lp_solution = 94 [default = true];
* @param value The exploitIntegerLpSolution to set.
* @return This builder for chaining.
*/
public Builder setExploitIntegerLpSolution(boolean value) {
bitField3_ |= 0x00000010;
exploitIntegerLpSolution_ = value;
onChanged();
return this;
}
/**
*
* If true and the Lp relaxation of the problem has an integer optimal
* solution, try to exploit it. Note that since the LP relaxation may not
* contain all the constraints, such a solution is not necessarily a solution
* of the full problem.
*
*
* optional bool exploit_integer_lp_solution = 94 [default = true];
* @return This builder for chaining.
*/
public Builder clearExploitIntegerLpSolution() {
bitField3_ = (bitField3_ & ~0x00000010);
exploitIntegerLpSolution_ = true;
onChanged();
return this;
}
private boolean exploitAllLpSolution_ = true;
/**
*
* If true and the Lp relaxation of the problem has a solution, try to exploit
* it. This is same as above except in this case the lp solution might not be
* an integer solution.
*
*
* optional bool exploit_all_lp_solution = 116 [default = true];
* @return Whether the exploitAllLpSolution field is set.
*/
@java.lang.Override
public boolean hasExploitAllLpSolution() {
return ((bitField3_ & 0x00000020) != 0);
}
/**
*
* If true and the Lp relaxation of the problem has a solution, try to exploit
* it. This is same as above except in this case the lp solution might not be
* an integer solution.
*
*
* optional bool exploit_all_lp_solution = 116 [default = true];
* @return The exploitAllLpSolution.
*/
@java.lang.Override
public boolean getExploitAllLpSolution() {
return exploitAllLpSolution_;
}
/**
*
* If true and the Lp relaxation of the problem has a solution, try to exploit
* it. This is same as above except in this case the lp solution might not be
* an integer solution.
*
*
* optional bool exploit_all_lp_solution = 116 [default = true];
* @param value The exploitAllLpSolution to set.
* @return This builder for chaining.
*/
public Builder setExploitAllLpSolution(boolean value) {
bitField3_ |= 0x00000020;
exploitAllLpSolution_ = value;
onChanged();
return this;
}
/**
*
* If true and the Lp relaxation of the problem has a solution, try to exploit
* it. This is same as above except in this case the lp solution might not be
* an integer solution.
*
*
* optional bool exploit_all_lp_solution = 116 [default = true];
* @return This builder for chaining.
*/
public Builder clearExploitAllLpSolution() {
bitField3_ = (bitField3_ & ~0x00000020);
exploitAllLpSolution_ = true;
onChanged();
return this;
}
private boolean exploitBestSolution_ ;
/**
*
* When branching on a variable, follow the last best solution value.
*
*
* optional bool exploit_best_solution = 130 [default = false];
* @return Whether the exploitBestSolution field is set.
*/
@java.lang.Override
public boolean hasExploitBestSolution() {
return ((bitField3_ & 0x00000040) != 0);
}
/**
*
* When branching on a variable, follow the last best solution value.
*
*
* optional bool exploit_best_solution = 130 [default = false];
* @return The exploitBestSolution.
*/
@java.lang.Override
public boolean getExploitBestSolution() {
return exploitBestSolution_;
}
/**
*
* When branching on a variable, follow the last best solution value.
*
*
* optional bool exploit_best_solution = 130 [default = false];
* @param value The exploitBestSolution to set.
* @return This builder for chaining.
*/
public Builder setExploitBestSolution(boolean value) {
bitField3_ |= 0x00000040;
exploitBestSolution_ = value;
onChanged();
return this;
}
/**
*
* When branching on a variable, follow the last best solution value.
*
*
* optional bool exploit_best_solution = 130 [default = false];
* @return This builder for chaining.
*/
public Builder clearExploitBestSolution() {
bitField3_ = (bitField3_ & ~0x00000040);
exploitBestSolution_ = false;
onChanged();
return this;
}
private boolean exploitRelaxationSolution_ ;
/**
*
* When branching on a variable, follow the last best relaxation solution
* value. We use the relaxation with the tightest bound on the objective as
* the best relaxation solution.
*
*
* optional bool exploit_relaxation_solution = 161 [default = false];
* @return Whether the exploitRelaxationSolution field is set.
*/
@java.lang.Override
public boolean hasExploitRelaxationSolution() {
return ((bitField3_ & 0x00000080) != 0);
}
/**
*
* When branching on a variable, follow the last best relaxation solution
* value. We use the relaxation with the tightest bound on the objective as
* the best relaxation solution.
*
*
* optional bool exploit_relaxation_solution = 161 [default = false];
* @return The exploitRelaxationSolution.
*/
@java.lang.Override
public boolean getExploitRelaxationSolution() {
return exploitRelaxationSolution_;
}
/**
*
* When branching on a variable, follow the last best relaxation solution
* value. We use the relaxation with the tightest bound on the objective as
* the best relaxation solution.
*
*
* optional bool exploit_relaxation_solution = 161 [default = false];
* @param value The exploitRelaxationSolution to set.
* @return This builder for chaining.
*/
public Builder setExploitRelaxationSolution(boolean value) {
bitField3_ |= 0x00000080;
exploitRelaxationSolution_ = value;
onChanged();
return this;
}
/**
*
* When branching on a variable, follow the last best relaxation solution
* value. We use the relaxation with the tightest bound on the objective as
* the best relaxation solution.
*
*
* optional bool exploit_relaxation_solution = 161 [default = false];
* @return This builder for chaining.
*/
public Builder clearExploitRelaxationSolution() {
bitField3_ = (bitField3_ & ~0x00000080);
exploitRelaxationSolution_ = false;
onChanged();
return this;
}
private boolean exploitObjective_ = true;
/**
*
* When branching an a variable that directly affect the objective,
* branch on the value that lead to the best objective first.
*
*
* optional bool exploit_objective = 131 [default = true];
* @return Whether the exploitObjective field is set.
*/
@java.lang.Override
public boolean hasExploitObjective() {
return ((bitField3_ & 0x00000100) != 0);
}
/**
*
* When branching an a variable that directly affect the objective,
* branch on the value that lead to the best objective first.
*
*
* optional bool exploit_objective = 131 [default = true];
* @return The exploitObjective.
*/
@java.lang.Override
public boolean getExploitObjective() {
return exploitObjective_;
}
/**
*
* When branching an a variable that directly affect the objective,
* branch on the value that lead to the best objective first.
*
*
* optional bool exploit_objective = 131 [default = true];
* @param value The exploitObjective to set.
* @return This builder for chaining.
*/
public Builder setExploitObjective(boolean value) {
bitField3_ |= 0x00000100;
exploitObjective_ = value;
onChanged();
return this;
}
/**
*
* When branching an a variable that directly affect the objective,
* branch on the value that lead to the best objective first.
*
*
* optional bool exploit_objective = 131 [default = true];
* @return This builder for chaining.
*/
public Builder clearExploitObjective() {
bitField3_ = (bitField3_ & ~0x00000100);
exploitObjective_ = true;
onChanged();
return this;
}
private long probingPeriodAtRoot_ ;
/**
*
* If set at zero (the default), it is disabled. Otherwise the solver attempts
* probing at every 'probing_period' root node. Period of 1 enables probing at
* every root node.
*
*
* optional int64 probing_period_at_root = 142 [default = 0];
* @return Whether the probingPeriodAtRoot field is set.
*/
@java.lang.Override
public boolean hasProbingPeriodAtRoot() {
return ((bitField3_ & 0x00000200) != 0);
}
/**
*
* If set at zero (the default), it is disabled. Otherwise the solver attempts
* probing at every 'probing_period' root node. Period of 1 enables probing at
* every root node.
*
*
* optional int64 probing_period_at_root = 142 [default = 0];
* @return The probingPeriodAtRoot.
*/
@java.lang.Override
public long getProbingPeriodAtRoot() {
return probingPeriodAtRoot_;
}
/**
*
* If set at zero (the default), it is disabled. Otherwise the solver attempts
* probing at every 'probing_period' root node. Period of 1 enables probing at
* every root node.
*
*
* optional int64 probing_period_at_root = 142 [default = 0];
* @param value The probingPeriodAtRoot to set.
* @return This builder for chaining.
*/
public Builder setProbingPeriodAtRoot(long value) {
bitField3_ |= 0x00000200;
probingPeriodAtRoot_ = value;
onChanged();
return this;
}
/**
*
* If set at zero (the default), it is disabled. Otherwise the solver attempts
* probing at every 'probing_period' root node. Period of 1 enables probing at
* every root node.
*
*
* optional int64 probing_period_at_root = 142 [default = 0];
* @return This builder for chaining.
*/
public Builder clearProbingPeriodAtRoot() {
bitField3_ = (bitField3_ & ~0x00000200);
probingPeriodAtRoot_ = 0L;
onChanged();
return this;
}
private long pseudoCostReliabilityThreshold_ = 100L;
/**
*
* The solver ignores the pseudo costs of variables with number of recordings
* less than this threshold.
*
*
* optional int64 pseudo_cost_reliability_threshold = 123 [default = 100];
* @return Whether the pseudoCostReliabilityThreshold field is set.
*/
@java.lang.Override
public boolean hasPseudoCostReliabilityThreshold() {
return ((bitField3_ & 0x00000400) != 0);
}
/**
*
* The solver ignores the pseudo costs of variables with number of recordings
* less than this threshold.
*
*
* optional int64 pseudo_cost_reliability_threshold = 123 [default = 100];
* @return The pseudoCostReliabilityThreshold.
*/
@java.lang.Override
public long getPseudoCostReliabilityThreshold() {
return pseudoCostReliabilityThreshold_;
}
/**
*
* The solver ignores the pseudo costs of variables with number of recordings
* less than this threshold.
*
*
* optional int64 pseudo_cost_reliability_threshold = 123 [default = 100];
* @param value The pseudoCostReliabilityThreshold to set.
* @return This builder for chaining.
*/
public Builder setPseudoCostReliabilityThreshold(long value) {
bitField3_ |= 0x00000400;
pseudoCostReliabilityThreshold_ = value;
onChanged();
return this;
}
/**
*
* The solver ignores the pseudo costs of variables with number of recordings
* less than this threshold.
*
*
* optional int64 pseudo_cost_reliability_threshold = 123 [default = 100];
* @return This builder for chaining.
*/
public Builder clearPseudoCostReliabilityThreshold() {
bitField3_ = (bitField3_ & ~0x00000400);
pseudoCostReliabilityThreshold_ = 100L;
onChanged();
return this;
}
private boolean optimizeWithCore_ ;
/**
*
* The default optimization method is a simple "linear scan", each time trying
* to find a better solution than the previous one. If this is true, then we
* use a core-based approach (like in max-SAT) when we try to increase the
* lower bound instead.
*
*
* optional bool optimize_with_core = 83 [default = false];
* @return Whether the optimizeWithCore field is set.
*/
@java.lang.Override
public boolean hasOptimizeWithCore() {
return ((bitField3_ & 0x00000800) != 0);
}
/**
*
* The default optimization method is a simple "linear scan", each time trying
* to find a better solution than the previous one. If this is true, then we
* use a core-based approach (like in max-SAT) when we try to increase the
* lower bound instead.
*
*
* optional bool optimize_with_core = 83 [default = false];
* @return The optimizeWithCore.
*/
@java.lang.Override
public boolean getOptimizeWithCore() {
return optimizeWithCore_;
}
/**
*
* The default optimization method is a simple "linear scan", each time trying
* to find a better solution than the previous one. If this is true, then we
* use a core-based approach (like in max-SAT) when we try to increase the
* lower bound instead.
*
*
* optional bool optimize_with_core = 83 [default = false];
* @param value The optimizeWithCore to set.
* @return This builder for chaining.
*/
public Builder setOptimizeWithCore(boolean value) {
bitField3_ |= 0x00000800;
optimizeWithCore_ = value;
onChanged();
return this;
}
/**
*
* The default optimization method is a simple "linear scan", each time trying
* to find a better solution than the previous one. If this is true, then we
* use a core-based approach (like in max-SAT) when we try to increase the
* lower bound instead.
*
*
* optional bool optimize_with_core = 83 [default = false];
* @return This builder for chaining.
*/
public Builder clearOptimizeWithCore() {
bitField3_ = (bitField3_ & ~0x00000800);
optimizeWithCore_ = false;
onChanged();
return this;
}
private int binarySearchNumConflicts_ = -1;
/**
*
* If non-negative, perform a binary search on the objective variable in order
* to find an [min, max] interval outside of which the solver proved unsat/sat
* under this amount of conflict. This can quickly reduce the objective domain
* on some problems.
*
*
* optional int32 binary_search_num_conflicts = 99 [default = -1];
* @return Whether the binarySearchNumConflicts field is set.
*/
@java.lang.Override
public boolean hasBinarySearchNumConflicts() {
return ((bitField3_ & 0x00001000) != 0);
}
/**
*
* If non-negative, perform a binary search on the objective variable in order
* to find an [min, max] interval outside of which the solver proved unsat/sat
* under this amount of conflict. This can quickly reduce the objective domain
* on some problems.
*
*
* optional int32 binary_search_num_conflicts = 99 [default = -1];
* @return The binarySearchNumConflicts.
*/
@java.lang.Override
public int getBinarySearchNumConflicts() {
return binarySearchNumConflicts_;
}
/**
*
* If non-negative, perform a binary search on the objective variable in order
* to find an [min, max] interval outside of which the solver proved unsat/sat
* under this amount of conflict. This can quickly reduce the objective domain
* on some problems.
*
*
* optional int32 binary_search_num_conflicts = 99 [default = -1];
* @param value The binarySearchNumConflicts to set.
* @return This builder for chaining.
*/
public Builder setBinarySearchNumConflicts(int value) {
bitField3_ |= 0x00001000;
binarySearchNumConflicts_ = value;
onChanged();
return this;
}
/**
*
* If non-negative, perform a binary search on the objective variable in order
* to find an [min, max] interval outside of which the solver proved unsat/sat
* under this amount of conflict. This can quickly reduce the objective domain
* on some problems.
*
*
* optional int32 binary_search_num_conflicts = 99 [default = -1];
* @return This builder for chaining.
*/
public Builder clearBinarySearchNumConflicts() {
bitField3_ = (bitField3_ & ~0x00001000);
binarySearchNumConflicts_ = -1;
onChanged();
return this;
}
private boolean optimizeWithMaxHs_ ;
/**
*
* This has no effect if optimize_with_core is false. If true, use a different
* core-based algorithm similar to the max-HS algo for max-SAT. This is a
* hybrid MIP/CP approach and it uses a MIP solver in addition to the CP/SAT
* one. This is also related to the PhD work of tobyodavies@
* "Automatic Logic-Based Benders Decomposition with MiniZinc"
* http://aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14489
*
*
* optional bool optimize_with_max_hs = 85 [default = false];
* @return Whether the optimizeWithMaxHs field is set.
*/
@java.lang.Override
public boolean hasOptimizeWithMaxHs() {
return ((bitField3_ & 0x00002000) != 0);
}
/**
*
* This has no effect if optimize_with_core is false. If true, use a different
* core-based algorithm similar to the max-HS algo for max-SAT. This is a
* hybrid MIP/CP approach and it uses a MIP solver in addition to the CP/SAT
* one. This is also related to the PhD work of tobyodavies@
* "Automatic Logic-Based Benders Decomposition with MiniZinc"
* http://aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14489
*
*
* optional bool optimize_with_max_hs = 85 [default = false];
* @return The optimizeWithMaxHs.
*/
@java.lang.Override
public boolean getOptimizeWithMaxHs() {
return optimizeWithMaxHs_;
}
/**
*
* This has no effect if optimize_with_core is false. If true, use a different
* core-based algorithm similar to the max-HS algo for max-SAT. This is a
* hybrid MIP/CP approach and it uses a MIP solver in addition to the CP/SAT
* one. This is also related to the PhD work of tobyodavies@
* "Automatic Logic-Based Benders Decomposition with MiniZinc"
* http://aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14489
*
*
* optional bool optimize_with_max_hs = 85 [default = false];
* @param value The optimizeWithMaxHs to set.
* @return This builder for chaining.
*/
public Builder setOptimizeWithMaxHs(boolean value) {
bitField3_ |= 0x00002000;
optimizeWithMaxHs_ = value;
onChanged();
return this;
}
/**
*
* This has no effect if optimize_with_core is false. If true, use a different
* core-based algorithm similar to the max-HS algo for max-SAT. This is a
* hybrid MIP/CP approach and it uses a MIP solver in addition to the CP/SAT
* one. This is also related to the PhD work of tobyodavies@
* "Automatic Logic-Based Benders Decomposition with MiniZinc"
* http://aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14489
*
*
* optional bool optimize_with_max_hs = 85 [default = false];
* @return This builder for chaining.
*/
public Builder clearOptimizeWithMaxHs() {
bitField3_ = (bitField3_ & ~0x00002000);
optimizeWithMaxHs_ = false;
onChanged();
return this;
}
private boolean enumerateAllSolutions_ ;
/**
*
* Whether we enumerate all solutions of a problem without objective. Note
* that setting this to true automatically disable the presolve. This is
* because the presolve rules only guarantee the existence of one feasible
* solution to the presolved problem.
* TODO(user): Activate the presolve but with just the rules that do not
* change the set of feasible solutions.
*
*
* optional bool enumerate_all_solutions = 87 [default = false];
* @return Whether the enumerateAllSolutions field is set.
*/
@java.lang.Override
public boolean hasEnumerateAllSolutions() {
return ((bitField3_ & 0x00004000) != 0);
}
/**
*
* Whether we enumerate all solutions of a problem without objective. Note
* that setting this to true automatically disable the presolve. This is
* because the presolve rules only guarantee the existence of one feasible
* solution to the presolved problem.
* TODO(user): Activate the presolve but with just the rules that do not
* change the set of feasible solutions.
*
*
* optional bool enumerate_all_solutions = 87 [default = false];
* @return The enumerateAllSolutions.
*/
@java.lang.Override
public boolean getEnumerateAllSolutions() {
return enumerateAllSolutions_;
}
/**
*
* Whether we enumerate all solutions of a problem without objective. Note
* that setting this to true automatically disable the presolve. This is
* because the presolve rules only guarantee the existence of one feasible
* solution to the presolved problem.
* TODO(user): Activate the presolve but with just the rules that do not
* change the set of feasible solutions.
*
*
* optional bool enumerate_all_solutions = 87 [default = false];
* @param value The enumerateAllSolutions to set.
* @return This builder for chaining.
*/
public Builder setEnumerateAllSolutions(boolean value) {
bitField3_ |= 0x00004000;
enumerateAllSolutions_ = value;
onChanged();
return this;
}
/**
*
* Whether we enumerate all solutions of a problem without objective. Note
* that setting this to true automatically disable the presolve. This is
* because the presolve rules only guarantee the existence of one feasible
* solution to the presolved problem.
* TODO(user): Activate the presolve but with just the rules that do not
* change the set of feasible solutions.
*
*
* optional bool enumerate_all_solutions = 87 [default = false];
* @return This builder for chaining.
*/
public Builder clearEnumerateAllSolutions() {
bitField3_ = (bitField3_ & ~0x00004000);
enumerateAllSolutions_ = false;
onChanged();
return this;
}
private boolean fillTightenedDomainsInResponse_ ;
/**
*
* If true, add information about the derived variable domains to the
* CpSolverResponse. It is an option because it makes the response slighly
* bigger and there is a bit more work involved during the postsolve to
* construct it, but it should still have a low overhead. See the
* tightened_variables field in CpSolverResponse for more details.
*
*
* optional bool fill_tightened_domains_in_response = 132 [default = false];
* @return Whether the fillTightenedDomainsInResponse field is set.
*/
@java.lang.Override
public boolean hasFillTightenedDomainsInResponse() {
return ((bitField3_ & 0x00008000) != 0);
}
/**
*
* If true, add information about the derived variable domains to the
* CpSolverResponse. It is an option because it makes the response slighly
* bigger and there is a bit more work involved during the postsolve to
* construct it, but it should still have a low overhead. See the
* tightened_variables field in CpSolverResponse for more details.
*
*
* optional bool fill_tightened_domains_in_response = 132 [default = false];
* @return The fillTightenedDomainsInResponse.
*/
@java.lang.Override
public boolean getFillTightenedDomainsInResponse() {
return fillTightenedDomainsInResponse_;
}
/**
*
* If true, add information about the derived variable domains to the
* CpSolverResponse. It is an option because it makes the response slighly
* bigger and there is a bit more work involved during the postsolve to
* construct it, but it should still have a low overhead. See the
* tightened_variables field in CpSolverResponse for more details.
*
*
* optional bool fill_tightened_domains_in_response = 132 [default = false];
* @param value The fillTightenedDomainsInResponse to set.
* @return This builder for chaining.
*/
public Builder setFillTightenedDomainsInResponse(boolean value) {
bitField3_ |= 0x00008000;
fillTightenedDomainsInResponse_ = value;
onChanged();
return this;
}
/**
*
* If true, add information about the derived variable domains to the
* CpSolverResponse. It is an option because it makes the response slighly
* bigger and there is a bit more work involved during the postsolve to
* construct it, but it should still have a low overhead. See the
* tightened_variables field in CpSolverResponse for more details.
*
*
* optional bool fill_tightened_domains_in_response = 132 [default = false];
* @return This builder for chaining.
*/
public Builder clearFillTightenedDomainsInResponse() {
bitField3_ = (bitField3_ & ~0x00008000);
fillTightenedDomainsInResponse_ = false;
onChanged();
return this;
}
private boolean instantiateAllVariables_ = true;
/**
*
* If true, the solver will add a default integer branching strategy to the
* already defined search strategy.
*
*
* optional bool instantiate_all_variables = 106 [default = true];
* @return Whether the instantiateAllVariables field is set.
*/
@java.lang.Override
public boolean hasInstantiateAllVariables() {
return ((bitField3_ & 0x00010000) != 0);
}
/**
*
* If true, the solver will add a default integer branching strategy to the
* already defined search strategy.
*
*
* optional bool instantiate_all_variables = 106 [default = true];
* @return The instantiateAllVariables.
*/
@java.lang.Override
public boolean getInstantiateAllVariables() {
return instantiateAllVariables_;
}
/**
*
* If true, the solver will add a default integer branching strategy to the
* already defined search strategy.
*
*
* optional bool instantiate_all_variables = 106 [default = true];
* @param value The instantiateAllVariables to set.
* @return This builder for chaining.
*/
public Builder setInstantiateAllVariables(boolean value) {
bitField3_ |= 0x00010000;
instantiateAllVariables_ = value;
onChanged();
return this;
}
/**
*
* If true, the solver will add a default integer branching strategy to the
* already defined search strategy.
*
*
* optional bool instantiate_all_variables = 106 [default = true];
* @return This builder for chaining.
*/
public Builder clearInstantiateAllVariables() {
bitField3_ = (bitField3_ & ~0x00010000);
instantiateAllVariables_ = true;
onChanged();
return this;
}
private boolean autoDetectGreaterThanAtLeastOneOf_ = true;
/**
*
* If true, then the precedences propagator try to detect for each variable if
* it has a set of "optional incoming arc" for which at least one of them is
* present. This is usually useful to have but can be slow on model with a lot
* of precedence.
*
*
* optional bool auto_detect_greater_than_at_least_one_of = 95 [default = true];
* @return Whether the autoDetectGreaterThanAtLeastOneOf field is set.
*/
@java.lang.Override
public boolean hasAutoDetectGreaterThanAtLeastOneOf() {
return ((bitField3_ & 0x00020000) != 0);
}
/**
*
* If true, then the precedences propagator try to detect for each variable if
* it has a set of "optional incoming arc" for which at least one of them is
* present. This is usually useful to have but can be slow on model with a lot
* of precedence.
*
*
* optional bool auto_detect_greater_than_at_least_one_of = 95 [default = true];
* @return The autoDetectGreaterThanAtLeastOneOf.
*/
@java.lang.Override
public boolean getAutoDetectGreaterThanAtLeastOneOf() {
return autoDetectGreaterThanAtLeastOneOf_;
}
/**
*
* If true, then the precedences propagator try to detect for each variable if
* it has a set of "optional incoming arc" for which at least one of them is
* present. This is usually useful to have but can be slow on model with a lot
* of precedence.
*
*
* optional bool auto_detect_greater_than_at_least_one_of = 95 [default = true];
* @param value The autoDetectGreaterThanAtLeastOneOf to set.
* @return This builder for chaining.
*/
public Builder setAutoDetectGreaterThanAtLeastOneOf(boolean value) {
bitField3_ |= 0x00020000;
autoDetectGreaterThanAtLeastOneOf_ = value;
onChanged();
return this;
}
/**
*
* If true, then the precedences propagator try to detect for each variable if
* it has a set of "optional incoming arc" for which at least one of them is
* present. This is usually useful to have but can be slow on model with a lot
* of precedence.
*
*
* optional bool auto_detect_greater_than_at_least_one_of = 95 [default = true];
* @return This builder for chaining.
*/
public Builder clearAutoDetectGreaterThanAtLeastOneOf() {
bitField3_ = (bitField3_ & ~0x00020000);
autoDetectGreaterThanAtLeastOneOf_ = true;
onChanged();
return this;
}
private boolean stopAfterFirstSolution_ ;
/**
*
* For an optimization problem, stop the solver as soon as we have a solution.
*
*
* optional bool stop_after_first_solution = 98 [default = false];
* @return Whether the stopAfterFirstSolution field is set.
*/
@java.lang.Override
public boolean hasStopAfterFirstSolution() {
return ((bitField3_ & 0x00040000) != 0);
}
/**
*
* For an optimization problem, stop the solver as soon as we have a solution.
*
*
* optional bool stop_after_first_solution = 98 [default = false];
* @return The stopAfterFirstSolution.
*/
@java.lang.Override
public boolean getStopAfterFirstSolution() {
return stopAfterFirstSolution_;
}
/**
*
* For an optimization problem, stop the solver as soon as we have a solution.
*
*
* optional bool stop_after_first_solution = 98 [default = false];
* @param value The stopAfterFirstSolution to set.
* @return This builder for chaining.
*/
public Builder setStopAfterFirstSolution(boolean value) {
bitField3_ |= 0x00040000;
stopAfterFirstSolution_ = value;
onChanged();
return this;
}
/**
*
* For an optimization problem, stop the solver as soon as we have a solution.
*
*
* optional bool stop_after_first_solution = 98 [default = false];
* @return This builder for chaining.
*/
public Builder clearStopAfterFirstSolution() {
bitField3_ = (bitField3_ & ~0x00040000);
stopAfterFirstSolution_ = false;
onChanged();
return this;
}
private boolean stopAfterPresolve_ ;
/**
*
* Mainly used when improving the presolver. When true, stops the solver after
* the presolve is complete.
*
*
* optional bool stop_after_presolve = 149 [default = false];
* @return Whether the stopAfterPresolve field is set.
*/
@java.lang.Override
public boolean hasStopAfterPresolve() {
return ((bitField3_ & 0x00080000) != 0);
}
/**
*
* Mainly used when improving the presolver. When true, stops the solver after
* the presolve is complete.
*
*
* optional bool stop_after_presolve = 149 [default = false];
* @return The stopAfterPresolve.
*/
@java.lang.Override
public boolean getStopAfterPresolve() {
return stopAfterPresolve_;
}
/**
*
* Mainly used when improving the presolver. When true, stops the solver after
* the presolve is complete.
*
*
* optional bool stop_after_presolve = 149 [default = false];
* @param value The stopAfterPresolve to set.
* @return This builder for chaining.
*/
public Builder setStopAfterPresolve(boolean value) {
bitField3_ |= 0x00080000;
stopAfterPresolve_ = value;
onChanged();
return this;
}
/**
*
* Mainly used when improving the presolver. When true, stops the solver after
* the presolve is complete.
*
*
* optional bool stop_after_presolve = 149 [default = false];
* @return This builder for chaining.
*/
public Builder clearStopAfterPresolve() {
bitField3_ = (bitField3_ & ~0x00080000);
stopAfterPresolve_ = false;
onChanged();
return this;
}
private int numSearchWorkers_ = 1;
/**
*
* Specify the number of parallel workers to use during search.
* A number <= 1 means no parallelism.
* As of 2020-04-10, if you're using SAT via MPSolver (to solve integer
* programs) this field is overridden with a value of 8, if the field is not
* set *explicitly*. Thus, always set this field explicitly or via
* MPSolver::SetNumThreads().
*
*
* optional int32 num_search_workers = 100 [default = 1];
* @return Whether the numSearchWorkers field is set.
*/
@java.lang.Override
public boolean hasNumSearchWorkers() {
return ((bitField3_ & 0x00100000) != 0);
}
/**
*
* Specify the number of parallel workers to use during search.
* A number <= 1 means no parallelism.
* As of 2020-04-10, if you're using SAT via MPSolver (to solve integer
* programs) this field is overridden with a value of 8, if the field is not
* set *explicitly*. Thus, always set this field explicitly or via
* MPSolver::SetNumThreads().
*
*
* optional int32 num_search_workers = 100 [default = 1];
* @return The numSearchWorkers.
*/
@java.lang.Override
public int getNumSearchWorkers() {
return numSearchWorkers_;
}
/**
*
* Specify the number of parallel workers to use during search.
* A number <= 1 means no parallelism.
* As of 2020-04-10, if you're using SAT via MPSolver (to solve integer
* programs) this field is overridden with a value of 8, if the field is not
* set *explicitly*. Thus, always set this field explicitly or via
* MPSolver::SetNumThreads().
*
*
* optional int32 num_search_workers = 100 [default = 1];
* @param value The numSearchWorkers to set.
* @return This builder for chaining.
*/
public Builder setNumSearchWorkers(int value) {
bitField3_ |= 0x00100000;
numSearchWorkers_ = value;
onChanged();
return this;
}
/**
*
* Specify the number of parallel workers to use during search.
* A number <= 1 means no parallelism.
* As of 2020-04-10, if you're using SAT via MPSolver (to solve integer
* programs) this field is overridden with a value of 8, if the field is not
* set *explicitly*. Thus, always set this field explicitly or via
* MPSolver::SetNumThreads().
*
*
* optional int32 num_search_workers = 100 [default = 1];
* @return This builder for chaining.
*/
public Builder clearNumSearchWorkers() {
bitField3_ = (bitField3_ & ~0x00100000);
numSearchWorkers_ = 1;
onChanged();
return this;
}
private boolean interleaveSearch_ ;
/**
*
* Experimental. If this is true, then we interleave all our major search
* strategy and distribute the work amongst num_search_workers.
* The search is deterministic (independently of num_search_workers!), and we
* schedule and wait for interleave_batch_size task to be completed before
* synchronizing and scheduling the next batch of tasks.
*
*
* optional bool interleave_search = 136 [default = false];
* @return Whether the interleaveSearch field is set.
*/
@java.lang.Override
public boolean hasInterleaveSearch() {
return ((bitField3_ & 0x00200000) != 0);
}
/**
*
* Experimental. If this is true, then we interleave all our major search
* strategy and distribute the work amongst num_search_workers.
* The search is deterministic (independently of num_search_workers!), and we
* schedule and wait for interleave_batch_size task to be completed before
* synchronizing and scheduling the next batch of tasks.
*
*
* optional bool interleave_search = 136 [default = false];
* @return The interleaveSearch.
*/
@java.lang.Override
public boolean getInterleaveSearch() {
return interleaveSearch_;
}
/**
*
* Experimental. If this is true, then we interleave all our major search
* strategy and distribute the work amongst num_search_workers.
* The search is deterministic (independently of num_search_workers!), and we
* schedule and wait for interleave_batch_size task to be completed before
* synchronizing and scheduling the next batch of tasks.
*
*
* optional bool interleave_search = 136 [default = false];
* @param value The interleaveSearch to set.
* @return This builder for chaining.
*/
public Builder setInterleaveSearch(boolean value) {
bitField3_ |= 0x00200000;
interleaveSearch_ = value;
onChanged();
return this;
}
/**
*
* Experimental. If this is true, then we interleave all our major search
* strategy and distribute the work amongst num_search_workers.
* The search is deterministic (independently of num_search_workers!), and we
* schedule and wait for interleave_batch_size task to be completed before
* synchronizing and scheduling the next batch of tasks.
*
*
* optional bool interleave_search = 136 [default = false];
* @return This builder for chaining.
*/
public Builder clearInterleaveSearch() {
bitField3_ = (bitField3_ & ~0x00200000);
interleaveSearch_ = false;
onChanged();
return this;
}
private int interleaveBatchSize_ = 1;
/**
* optional int32 interleave_batch_size = 134 [default = 1];
* @return Whether the interleaveBatchSize field is set.
*/
@java.lang.Override
public boolean hasInterleaveBatchSize() {
return ((bitField3_ & 0x00400000) != 0);
}
/**
* optional int32 interleave_batch_size = 134 [default = 1];
* @return The interleaveBatchSize.
*/
@java.lang.Override
public int getInterleaveBatchSize() {
return interleaveBatchSize_;
}
/**
* optional int32 interleave_batch_size = 134 [default = 1];
* @param value The interleaveBatchSize to set.
* @return This builder for chaining.
*/
public Builder setInterleaveBatchSize(int value) {
bitField3_ |= 0x00400000;
interleaveBatchSize_ = value;
onChanged();
return this;
}
/**
* optional int32 interleave_batch_size = 134 [default = 1];
* @return This builder for chaining.
*/
public Builder clearInterleaveBatchSize() {
bitField3_ = (bitField3_ & ~0x00400000);
interleaveBatchSize_ = 1;
onChanged();
return this;
}
private boolean reduceMemoryUsageInInterleaveMode_ ;
/**
*
* Temporary parameter until the memory usage is more optimized.
*
*
* optional bool reduce_memory_usage_in_interleave_mode = 141 [default = false];
* @return Whether the reduceMemoryUsageInInterleaveMode field is set.
*/
@java.lang.Override
public boolean hasReduceMemoryUsageInInterleaveMode() {
return ((bitField3_ & 0x00800000) != 0);
}
/**
*
* Temporary parameter until the memory usage is more optimized.
*
*
* optional bool reduce_memory_usage_in_interleave_mode = 141 [default = false];
* @return The reduceMemoryUsageInInterleaveMode.
*/
@java.lang.Override
public boolean getReduceMemoryUsageInInterleaveMode() {
return reduceMemoryUsageInInterleaveMode_;
}
/**
*
* Temporary parameter until the memory usage is more optimized.
*
*
* optional bool reduce_memory_usage_in_interleave_mode = 141 [default = false];
* @param value The reduceMemoryUsageInInterleaveMode to set.
* @return This builder for chaining.
*/
public Builder setReduceMemoryUsageInInterleaveMode(boolean value) {
bitField3_ |= 0x00800000;
reduceMemoryUsageInInterleaveMode_ = value;
onChanged();
return this;
}
/**
*
* Temporary parameter until the memory usage is more optimized.
*
*
* optional bool reduce_memory_usage_in_interleave_mode = 141 [default = false];
* @return This builder for chaining.
*/
public Builder clearReduceMemoryUsageInInterleaveMode() {
bitField3_ = (bitField3_ & ~0x00800000);
reduceMemoryUsageInInterleaveMode_ = false;
onChanged();
return this;
}
private boolean shareObjectiveBounds_ = true;
/**
*
* Allows objective sharing between workers.
*
*
* optional bool share_objective_bounds = 113 [default = true];
* @return Whether the shareObjectiveBounds field is set.
*/
@java.lang.Override
public boolean hasShareObjectiveBounds() {
return ((bitField3_ & 0x01000000) != 0);
}
/**
*
* Allows objective sharing between workers.
*
*
* optional bool share_objective_bounds = 113 [default = true];
* @return The shareObjectiveBounds.
*/
@java.lang.Override
public boolean getShareObjectiveBounds() {
return shareObjectiveBounds_;
}
/**
*
* Allows objective sharing between workers.
*
*
* optional bool share_objective_bounds = 113 [default = true];
* @param value The shareObjectiveBounds to set.
* @return This builder for chaining.
*/
public Builder setShareObjectiveBounds(boolean value) {
bitField3_ |= 0x01000000;
shareObjectiveBounds_ = value;
onChanged();
return this;
}
/**
*
* Allows objective sharing between workers.
*
*
* optional bool share_objective_bounds = 113 [default = true];
* @return This builder for chaining.
*/
public Builder clearShareObjectiveBounds() {
bitField3_ = (bitField3_ & ~0x01000000);
shareObjectiveBounds_ = true;
onChanged();
return this;
}
private boolean shareLevelZeroBounds_ = true;
/**
*
* Allows sharing of the bounds of modified variables at level 0.
*
*
* optional bool share_level_zero_bounds = 114 [default = true];
* @return Whether the shareLevelZeroBounds field is set.
*/
@java.lang.Override
public boolean hasShareLevelZeroBounds() {
return ((bitField3_ & 0x02000000) != 0);
}
/**
*
* Allows sharing of the bounds of modified variables at level 0.
*
*
* optional bool share_level_zero_bounds = 114 [default = true];
* @return The shareLevelZeroBounds.
*/
@java.lang.Override
public boolean getShareLevelZeroBounds() {
return shareLevelZeroBounds_;
}
/**
*
* Allows sharing of the bounds of modified variables at level 0.
*
*
* optional bool share_level_zero_bounds = 114 [default = true];
* @param value The shareLevelZeroBounds to set.
* @return This builder for chaining.
*/
public Builder setShareLevelZeroBounds(boolean value) {
bitField3_ |= 0x02000000;
shareLevelZeroBounds_ = value;
onChanged();
return this;
}
/**
*
* Allows sharing of the bounds of modified variables at level 0.
*
*
* optional bool share_level_zero_bounds = 114 [default = true];
* @return This builder for chaining.
*/
public Builder clearShareLevelZeroBounds() {
bitField3_ = (bitField3_ & ~0x02000000);
shareLevelZeroBounds_ = true;
onChanged();
return this;
}
private boolean useLnsOnly_ ;
/**
*
* LNS parameters.
*
*
* optional bool use_lns_only = 101 [default = false];
* @return Whether the useLnsOnly field is set.
*/
@java.lang.Override
public boolean hasUseLnsOnly() {
return ((bitField3_ & 0x04000000) != 0);
}
/**
*
* LNS parameters.
*
*
* optional bool use_lns_only = 101 [default = false];
* @return The useLnsOnly.
*/
@java.lang.Override
public boolean getUseLnsOnly() {
return useLnsOnly_;
}
/**
*
* LNS parameters.
*
*
* optional bool use_lns_only = 101 [default = false];
* @param value The useLnsOnly to set.
* @return This builder for chaining.
*/
public Builder setUseLnsOnly(boolean value) {
bitField3_ |= 0x04000000;
useLnsOnly_ = value;
onChanged();
return this;
}
/**
*
* LNS parameters.
*
*
* optional bool use_lns_only = 101 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseLnsOnly() {
bitField3_ = (bitField3_ & ~0x04000000);
useLnsOnly_ = false;
onChanged();
return this;
}
private boolean lnsFocusOnDecisionVariables_ ;
/**
* optional bool lns_focus_on_decision_variables = 105 [default = false];
* @return Whether the lnsFocusOnDecisionVariables field is set.
*/
@java.lang.Override
public boolean hasLnsFocusOnDecisionVariables() {
return ((bitField3_ & 0x08000000) != 0);
}
/**
* optional bool lns_focus_on_decision_variables = 105 [default = false];
* @return The lnsFocusOnDecisionVariables.
*/
@java.lang.Override
public boolean getLnsFocusOnDecisionVariables() {
return lnsFocusOnDecisionVariables_;
}
/**
* optional bool lns_focus_on_decision_variables = 105 [default = false];
* @param value The lnsFocusOnDecisionVariables to set.
* @return This builder for chaining.
*/
public Builder setLnsFocusOnDecisionVariables(boolean value) {
bitField3_ |= 0x08000000;
lnsFocusOnDecisionVariables_ = value;
onChanged();
return this;
}
/**
* optional bool lns_focus_on_decision_variables = 105 [default = false];
* @return This builder for chaining.
*/
public Builder clearLnsFocusOnDecisionVariables() {
bitField3_ = (bitField3_ & ~0x08000000);
lnsFocusOnDecisionVariables_ = false;
onChanged();
return this;
}
private boolean useRinsLns_ = true;
/**
*
* Turns on relaxation induced neighborhood generator.
*
*
* optional bool use_rins_lns = 129 [default = true];
* @return Whether the useRinsLns field is set.
*/
@java.lang.Override
public boolean hasUseRinsLns() {
return ((bitField3_ & 0x10000000) != 0);
}
/**
*
* Turns on relaxation induced neighborhood generator.
*
*
* optional bool use_rins_lns = 129 [default = true];
* @return The useRinsLns.
*/
@java.lang.Override
public boolean getUseRinsLns() {
return useRinsLns_;
}
/**
*
* Turns on relaxation induced neighborhood generator.
*
*
* optional bool use_rins_lns = 129 [default = true];
* @param value The useRinsLns to set.
* @return This builder for chaining.
*/
public Builder setUseRinsLns(boolean value) {
bitField3_ |= 0x10000000;
useRinsLns_ = value;
onChanged();
return this;
}
/**
*
* Turns on relaxation induced neighborhood generator.
*
*
* optional bool use_rins_lns = 129 [default = true];
* @return This builder for chaining.
*/
public Builder clearUseRinsLns() {
bitField3_ = (bitField3_ & ~0x10000000);
useRinsLns_ = true;
onChanged();
return this;
}
private boolean useFeasibilityPump_ = true;
/**
*
* Adds a feasibility pump subsolver along with lns subsolvers.
*
*
* optional bool use_feasibility_pump = 164 [default = true];
* @return Whether the useFeasibilityPump field is set.
*/
@java.lang.Override
public boolean hasUseFeasibilityPump() {
return ((bitField3_ & 0x20000000) != 0);
}
/**
*
* Adds a feasibility pump subsolver along with lns subsolvers.
*
*
* optional bool use_feasibility_pump = 164 [default = true];
* @return The useFeasibilityPump.
*/
@java.lang.Override
public boolean getUseFeasibilityPump() {
return useFeasibilityPump_;
}
/**
*
* Adds a feasibility pump subsolver along with lns subsolvers.
*
*
* optional bool use_feasibility_pump = 164 [default = true];
* @param value The useFeasibilityPump to set.
* @return This builder for chaining.
*/
public Builder setUseFeasibilityPump(boolean value) {
bitField3_ |= 0x20000000;
useFeasibilityPump_ = value;
onChanged();
return this;
}
/**
*
* Adds a feasibility pump subsolver along with lns subsolvers.
*
*
* optional bool use_feasibility_pump = 164 [default = true];
* @return This builder for chaining.
*/
public Builder clearUseFeasibilityPump() {
bitField3_ = (bitField3_ & ~0x20000000);
useFeasibilityPump_ = true;
onChanged();
return this;
}
private int fpRounding_ = 2;
/**
* optional .operations_research.sat.SatParameters.FPRoundingMethod fp_rounding = 165 [default = PROPAGATION_ASSISTED];
* @return Whether the fpRounding field is set.
*/
@java.lang.Override public boolean hasFpRounding() {
return ((bitField3_ & 0x40000000) != 0);
}
/**
* optional .operations_research.sat.SatParameters.FPRoundingMethod fp_rounding = 165 [default = PROPAGATION_ASSISTED];
* @return The fpRounding.
*/
@java.lang.Override
public com.google.ortools.sat.SatParameters.FPRoundingMethod getFpRounding() {
@SuppressWarnings("deprecation")
com.google.ortools.sat.SatParameters.FPRoundingMethod result = com.google.ortools.sat.SatParameters.FPRoundingMethod.valueOf(fpRounding_);
return result == null ? com.google.ortools.sat.SatParameters.FPRoundingMethod.PROPAGATION_ASSISTED : result;
}
/**
* optional .operations_research.sat.SatParameters.FPRoundingMethod fp_rounding = 165 [default = PROPAGATION_ASSISTED];
* @param value The fpRounding to set.
* @return This builder for chaining.
*/
public Builder setFpRounding(com.google.ortools.sat.SatParameters.FPRoundingMethod value) {
if (value == null) {
throw new NullPointerException();
}
bitField3_ |= 0x40000000;
fpRounding_ = value.getNumber();
onChanged();
return this;
}
/**
* optional .operations_research.sat.SatParameters.FPRoundingMethod fp_rounding = 165 [default = PROPAGATION_ASSISTED];
* @return This builder for chaining.
*/
public Builder clearFpRounding() {
bitField3_ = (bitField3_ & ~0x40000000);
fpRounding_ = 2;
onChanged();
return this;
}
private boolean useRelaxationLns_ ;
/**
*
* Turns on a lns worker which solves relaxed version of the original problem
* by removing constraints from the problem in order to get better bounds.
*
*
* optional bool use_relaxation_lns = 150 [default = false];
* @return Whether the useRelaxationLns field is set.
*/
@java.lang.Override
public boolean hasUseRelaxationLns() {
return ((bitField3_ & 0x80000000) != 0);
}
/**
*
* Turns on a lns worker which solves relaxed version of the original problem
* by removing constraints from the problem in order to get better bounds.
*
*
* optional bool use_relaxation_lns = 150 [default = false];
* @return The useRelaxationLns.
*/
@java.lang.Override
public boolean getUseRelaxationLns() {
return useRelaxationLns_;
}
/**
*
* Turns on a lns worker which solves relaxed version of the original problem
* by removing constraints from the problem in order to get better bounds.
*
*
* optional bool use_relaxation_lns = 150 [default = false];
* @param value The useRelaxationLns to set.
* @return This builder for chaining.
*/
public Builder setUseRelaxationLns(boolean value) {
bitField3_ |= 0x80000000;
useRelaxationLns_ = value;
onChanged();
return this;
}
/**
*
* Turns on a lns worker which solves relaxed version of the original problem
* by removing constraints from the problem in order to get better bounds.
*
*
* optional bool use_relaxation_lns = 150 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseRelaxationLns() {
bitField3_ = (bitField3_ & ~0x80000000);
useRelaxationLns_ = false;
onChanged();
return this;
}
private boolean diversifyLnsParams_ ;
/**
*
* If true, registers more lns subsolvers with different parameters.
*
*
* optional bool diversify_lns_params = 137 [default = false];
* @return Whether the diversifyLnsParams field is set.
*/
@java.lang.Override
public boolean hasDiversifyLnsParams() {
return ((bitField4_ & 0x00000001) != 0);
}
/**
*
* If true, registers more lns subsolvers with different parameters.
*
*
* optional bool diversify_lns_params = 137 [default = false];
* @return The diversifyLnsParams.
*/
@java.lang.Override
public boolean getDiversifyLnsParams() {
return diversifyLnsParams_;
}
/**
*
* If true, registers more lns subsolvers with different parameters.
*
*
* optional bool diversify_lns_params = 137 [default = false];
* @param value The diversifyLnsParams to set.
* @return This builder for chaining.
*/
public Builder setDiversifyLnsParams(boolean value) {
bitField4_ |= 0x00000001;
diversifyLnsParams_ = value;
onChanged();
return this;
}
/**
*
* If true, registers more lns subsolvers with different parameters.
*
*
* optional bool diversify_lns_params = 137 [default = false];
* @return This builder for chaining.
*/
public Builder clearDiversifyLnsParams() {
bitField4_ = (bitField4_ & ~0x00000001);
diversifyLnsParams_ = false;
onChanged();
return this;
}
private boolean randomizeSearch_ ;
/**
*
* Randomize fixed search.
*
*
* optional bool randomize_search = 103 [default = false];
* @return Whether the randomizeSearch field is set.
*/
@java.lang.Override
public boolean hasRandomizeSearch() {
return ((bitField4_ & 0x00000002) != 0);
}
/**
*
* Randomize fixed search.
*
*
* optional bool randomize_search = 103 [default = false];
* @return The randomizeSearch.
*/
@java.lang.Override
public boolean getRandomizeSearch() {
return randomizeSearch_;
}
/**
*
* Randomize fixed search.
*
*
* optional bool randomize_search = 103 [default = false];
* @param value The randomizeSearch to set.
* @return This builder for chaining.
*/
public Builder setRandomizeSearch(boolean value) {
bitField4_ |= 0x00000002;
randomizeSearch_ = value;
onChanged();
return this;
}
/**
*
* Randomize fixed search.
*
*
* optional bool randomize_search = 103 [default = false];
* @return This builder for chaining.
*/
public Builder clearRandomizeSearch() {
bitField4_ = (bitField4_ & ~0x00000002);
randomizeSearch_ = false;
onChanged();
return this;
}
private long searchRandomizationTolerance_ ;
/**
*
* Search randomization will collect equivalent 'max valued' variables, and
* pick one randomly. For instance, if the variable strategy is CHOOSE_FIRST,
* all unassigned variables are equivalent. If the variable strategy is
* CHOOSE_LOWEST_MIN, and `lm` is the current lowest min of all unassigned
* variables, then the set of max valued variables will be all unassigned
* variables where
* lm <= variable min <= lm + search_randomization_tolerance
*
*
* optional int64 search_randomization_tolerance = 104 [default = 0];
* @return Whether the searchRandomizationTolerance field is set.
*/
@java.lang.Override
public boolean hasSearchRandomizationTolerance() {
return ((bitField4_ & 0x00000004) != 0);
}
/**
*
* Search randomization will collect equivalent 'max valued' variables, and
* pick one randomly. For instance, if the variable strategy is CHOOSE_FIRST,
* all unassigned variables are equivalent. If the variable strategy is
* CHOOSE_LOWEST_MIN, and `lm` is the current lowest min of all unassigned
* variables, then the set of max valued variables will be all unassigned
* variables where
* lm <= variable min <= lm + search_randomization_tolerance
*
*
* optional int64 search_randomization_tolerance = 104 [default = 0];
* @return The searchRandomizationTolerance.
*/
@java.lang.Override
public long getSearchRandomizationTolerance() {
return searchRandomizationTolerance_;
}
/**
*
* Search randomization will collect equivalent 'max valued' variables, and
* pick one randomly. For instance, if the variable strategy is CHOOSE_FIRST,
* all unassigned variables are equivalent. If the variable strategy is
* CHOOSE_LOWEST_MIN, and `lm` is the current lowest min of all unassigned
* variables, then the set of max valued variables will be all unassigned
* variables where
* lm <= variable min <= lm + search_randomization_tolerance
*
*
* optional int64 search_randomization_tolerance = 104 [default = 0];
* @param value The searchRandomizationTolerance to set.
* @return This builder for chaining.
*/
public Builder setSearchRandomizationTolerance(long value) {
bitField4_ |= 0x00000004;
searchRandomizationTolerance_ = value;
onChanged();
return this;
}
/**
*
* Search randomization will collect equivalent 'max valued' variables, and
* pick one randomly. For instance, if the variable strategy is CHOOSE_FIRST,
* all unassigned variables are equivalent. If the variable strategy is
* CHOOSE_LOWEST_MIN, and `lm` is the current lowest min of all unassigned
* variables, then the set of max valued variables will be all unassigned
* variables where
* lm <= variable min <= lm + search_randomization_tolerance
*
*
* optional int64 search_randomization_tolerance = 104 [default = 0];
* @return This builder for chaining.
*/
public Builder clearSearchRandomizationTolerance() {
bitField4_ = (bitField4_ & ~0x00000004);
searchRandomizationTolerance_ = 0L;
onChanged();
return this;
}
private boolean useOptionalVariables_ = true;
/**
*
* If true, we automatically detect variables whose constraint are always
* enforced by the same literal and we mark them as optional. This allows
* to propagate them as if they were present in some situation.
*
*
* optional bool use_optional_variables = 108 [default = true];
* @return Whether the useOptionalVariables field is set.
*/
@java.lang.Override
public boolean hasUseOptionalVariables() {
return ((bitField4_ & 0x00000008) != 0);
}
/**
*
* If true, we automatically detect variables whose constraint are always
* enforced by the same literal and we mark them as optional. This allows
* to propagate them as if they were present in some situation.
*
*
* optional bool use_optional_variables = 108 [default = true];
* @return The useOptionalVariables.
*/
@java.lang.Override
public boolean getUseOptionalVariables() {
return useOptionalVariables_;
}
/**
*
* If true, we automatically detect variables whose constraint are always
* enforced by the same literal and we mark them as optional. This allows
* to propagate them as if they were present in some situation.
*
*
* optional bool use_optional_variables = 108 [default = true];
* @param value The useOptionalVariables to set.
* @return This builder for chaining.
*/
public Builder setUseOptionalVariables(boolean value) {
bitField4_ |= 0x00000008;
useOptionalVariables_ = value;
onChanged();
return this;
}
/**
*
* If true, we automatically detect variables whose constraint are always
* enforced by the same literal and we mark them as optional. This allows
* to propagate them as if they were present in some situation.
*
*
* optional bool use_optional_variables = 108 [default = true];
* @return This builder for chaining.
*/
public Builder clearUseOptionalVariables() {
bitField4_ = (bitField4_ & ~0x00000008);
useOptionalVariables_ = true;
onChanged();
return this;
}
private boolean useExactLpReason_ = true;
/**
*
* The solver usually exploit the LP relaxation of a model. If this option is
* true, then whatever is infered by the LP will be used like an heuristic to
* compute EXACT propagation on the IP. So with this option, there is no
* numerical imprecision issues.
*
*
* optional bool use_exact_lp_reason = 109 [default = true];
* @return Whether the useExactLpReason field is set.
*/
@java.lang.Override
public boolean hasUseExactLpReason() {
return ((bitField4_ & 0x00000010) != 0);
}
/**
*
* The solver usually exploit the LP relaxation of a model. If this option is
* true, then whatever is infered by the LP will be used like an heuristic to
* compute EXACT propagation on the IP. So with this option, there is no
* numerical imprecision issues.
*
*
* optional bool use_exact_lp_reason = 109 [default = true];
* @return The useExactLpReason.
*/
@java.lang.Override
public boolean getUseExactLpReason() {
return useExactLpReason_;
}
/**
*
* The solver usually exploit the LP relaxation of a model. If this option is
* true, then whatever is infered by the LP will be used like an heuristic to
* compute EXACT propagation on the IP. So with this option, there is no
* numerical imprecision issues.
*
*
* optional bool use_exact_lp_reason = 109 [default = true];
* @param value The useExactLpReason to set.
* @return This builder for chaining.
*/
public Builder setUseExactLpReason(boolean value) {
bitField4_ |= 0x00000010;
useExactLpReason_ = value;
onChanged();
return this;
}
/**
*
* The solver usually exploit the LP relaxation of a model. If this option is
* true, then whatever is infered by the LP will be used like an heuristic to
* compute EXACT propagation on the IP. So with this option, there is no
* numerical imprecision issues.
*
*
* optional bool use_exact_lp_reason = 109 [default = true];
* @return This builder for chaining.
*/
public Builder clearUseExactLpReason() {
bitField4_ = (bitField4_ & ~0x00000010);
useExactLpReason_ = true;
onChanged();
return this;
}
private boolean useBranchingInLp_ ;
/**
*
* If true, the solver attemts to generate more info inside lp propagator by
* branching on some variables if certain criteria are met during the search
* tree exploration.
*
*
* optional bool use_branching_in_lp = 139 [default = false];
* @return Whether the useBranchingInLp field is set.
*/
@java.lang.Override
public boolean hasUseBranchingInLp() {
return ((bitField4_ & 0x00000020) != 0);
}
/**
*
* If true, the solver attemts to generate more info inside lp propagator by
* branching on some variables if certain criteria are met during the search
* tree exploration.
*
*
* optional bool use_branching_in_lp = 139 [default = false];
* @return The useBranchingInLp.
*/
@java.lang.Override
public boolean getUseBranchingInLp() {
return useBranchingInLp_;
}
/**
*
* If true, the solver attemts to generate more info inside lp propagator by
* branching on some variables if certain criteria are met during the search
* tree exploration.
*
*
* optional bool use_branching_in_lp = 139 [default = false];
* @param value The useBranchingInLp to set.
* @return This builder for chaining.
*/
public Builder setUseBranchingInLp(boolean value) {
bitField4_ |= 0x00000020;
useBranchingInLp_ = value;
onChanged();
return this;
}
/**
*
* If true, the solver attemts to generate more info inside lp propagator by
* branching on some variables if certain criteria are met during the search
* tree exploration.
*
*
* optional bool use_branching_in_lp = 139 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseBranchingInLp() {
bitField4_ = (bitField4_ & ~0x00000020);
useBranchingInLp_ = false;
onChanged();
return this;
}
private boolean useCombinedNoOverlap_ ;
/**
*
* This can be beneficial if there is a lot of no-overlap constraints but a
* relatively low number of different intervals in the problem. Like 1000
* intervals, but 1M intervals in the no-overlap constraints covering them.
*
*
* optional bool use_combined_no_overlap = 133 [default = false];
* @return Whether the useCombinedNoOverlap field is set.
*/
@java.lang.Override
public boolean hasUseCombinedNoOverlap() {
return ((bitField4_ & 0x00000040) != 0);
}
/**
*
* This can be beneficial if there is a lot of no-overlap constraints but a
* relatively low number of different intervals in the problem. Like 1000
* intervals, but 1M intervals in the no-overlap constraints covering them.
*
*
* optional bool use_combined_no_overlap = 133 [default = false];
* @return The useCombinedNoOverlap.
*/
@java.lang.Override
public boolean getUseCombinedNoOverlap() {
return useCombinedNoOverlap_;
}
/**
*
* This can be beneficial if there is a lot of no-overlap constraints but a
* relatively low number of different intervals in the problem. Like 1000
* intervals, but 1M intervals in the no-overlap constraints covering them.
*
*
* optional bool use_combined_no_overlap = 133 [default = false];
* @param value The useCombinedNoOverlap to set.
* @return This builder for chaining.
*/
public Builder setUseCombinedNoOverlap(boolean value) {
bitField4_ |= 0x00000040;
useCombinedNoOverlap_ = value;
onChanged();
return this;
}
/**
*
* This can be beneficial if there is a lot of no-overlap constraints but a
* relatively low number of different intervals in the problem. Like 1000
* intervals, but 1M intervals in the no-overlap constraints covering them.
*
*
* optional bool use_combined_no_overlap = 133 [default = false];
* @return This builder for chaining.
*/
public Builder clearUseCombinedNoOverlap() {
bitField4_ = (bitField4_ & ~0x00000040);
useCombinedNoOverlap_ = false;
onChanged();
return this;
}
private boolean catchSigintSignal_ = true;
/**
*
* Indicates if the CP-SAT layer should catch Control-C (SIGINT) signals
* when calling solve. If set, catching the SIGINT signal will terminate the
* search gracefully, as if a time limit was reached.
*
*
* optional bool catch_sigint_signal = 135 [default = true];
* @return Whether the catchSigintSignal field is set.
*/
@java.lang.Override
public boolean hasCatchSigintSignal() {
return ((bitField4_ & 0x00000080) != 0);
}
/**
*
* Indicates if the CP-SAT layer should catch Control-C (SIGINT) signals
* when calling solve. If set, catching the SIGINT signal will terminate the
* search gracefully, as if a time limit was reached.
*
*
* optional bool catch_sigint_signal = 135 [default = true];
* @return The catchSigintSignal.
*/
@java.lang.Override
public boolean getCatchSigintSignal() {
return catchSigintSignal_;
}
/**
*
* Indicates if the CP-SAT layer should catch Control-C (SIGINT) signals
* when calling solve. If set, catching the SIGINT signal will terminate the
* search gracefully, as if a time limit was reached.
*
*
* optional bool catch_sigint_signal = 135 [default = true];
* @param value The catchSigintSignal to set.
* @return This builder for chaining.
*/
public Builder setCatchSigintSignal(boolean value) {
bitField4_ |= 0x00000080;
catchSigintSignal_ = value;
onChanged();
return this;
}
/**
*
* Indicates if the CP-SAT layer should catch Control-C (SIGINT) signals
* when calling solve. If set, catching the SIGINT signal will terminate the
* search gracefully, as if a time limit was reached.
*
*
* optional bool catch_sigint_signal = 135 [default = true];
* @return This builder for chaining.
*/
public Builder clearCatchSigintSignal() {
bitField4_ = (bitField4_ & ~0x00000080);
catchSigintSignal_ = true;
onChanged();
return this;
}
private boolean useImpliedBounds_ = true;
/**
*
* Stores and exploits "implied-bounds" in the solver. That is, relations of
* the form literal => (var >= bound). This is currently used to derive
* stronger cuts.
*
*
* optional bool use_implied_bounds = 144 [default = true];
* @return Whether the useImpliedBounds field is set.
*/
@java.lang.Override
public boolean hasUseImpliedBounds() {
return ((bitField4_ & 0x00000100) != 0);
}
/**
*
* Stores and exploits "implied-bounds" in the solver. That is, relations of
* the form literal => (var >= bound). This is currently used to derive
* stronger cuts.
*
*
* optional bool use_implied_bounds = 144 [default = true];
* @return The useImpliedBounds.
*/
@java.lang.Override
public boolean getUseImpliedBounds() {
return useImpliedBounds_;
}
/**
*
* Stores and exploits "implied-bounds" in the solver. That is, relations of
* the form literal => (var >= bound). This is currently used to derive
* stronger cuts.
*
*
* optional bool use_implied_bounds = 144 [default = true];
* @param value The useImpliedBounds to set.
* @return This builder for chaining.
*/
public Builder setUseImpliedBounds(boolean value) {
bitField4_ |= 0x00000100;
useImpliedBounds_ = value;
onChanged();
return this;
}
/**
*
* Stores and exploits "implied-bounds" in the solver. That is, relations of
* the form literal => (var >= bound). This is currently used to derive
* stronger cuts.
*
*
* optional bool use_implied_bounds = 144 [default = true];
* @return This builder for chaining.
*/
public Builder clearUseImpliedBounds() {
bitField4_ = (bitField4_ & ~0x00000100);
useImpliedBounds_ = true;
onChanged();
return this;
}
private double mipMaxBound_ = 10000000D;
/**
*
* We need to bound the maximum magnitude of the variables for CP-SAT, and
* that is the bound we use. If the MIP model expect larger variable value in
* the solution, then the converted model will likely not be relevant.
*
*
* optional double mip_max_bound = 124 [default = 10000000];
* @return Whether the mipMaxBound field is set.
*/
@java.lang.Override
public boolean hasMipMaxBound() {
return ((bitField4_ & 0x00000200) != 0);
}
/**
*
* We need to bound the maximum magnitude of the variables for CP-SAT, and
* that is the bound we use. If the MIP model expect larger variable value in
* the solution, then the converted model will likely not be relevant.
*
*
* optional double mip_max_bound = 124 [default = 10000000];
* @return The mipMaxBound.
*/
@java.lang.Override
public double getMipMaxBound() {
return mipMaxBound_;
}
/**
*
* We need to bound the maximum magnitude of the variables for CP-SAT, and
* that is the bound we use. If the MIP model expect larger variable value in
* the solution, then the converted model will likely not be relevant.
*
*
* optional double mip_max_bound = 124 [default = 10000000];
* @param value The mipMaxBound to set.
* @return This builder for chaining.
*/
public Builder setMipMaxBound(double value) {
bitField4_ |= 0x00000200;
mipMaxBound_ = value;
onChanged();
return this;
}
/**
*
* We need to bound the maximum magnitude of the variables for CP-SAT, and
* that is the bound we use. If the MIP model expect larger variable value in
* the solution, then the converted model will likely not be relevant.
*
*
* optional double mip_max_bound = 124 [default = 10000000];
* @return This builder for chaining.
*/
public Builder clearMipMaxBound() {
bitField4_ = (bitField4_ & ~0x00000200);
mipMaxBound_ = 10000000D;
onChanged();
return this;
}
private double mipVarScaling_ = 1D;
/**
*
* All continuous variable of the problem will be multiplied by this factor.
* By default, we don't do any variable scaling and rely on the MIP model to
* specify continuous variable domain with the wanted precision.
*
*
* optional double mip_var_scaling = 125 [default = 1];
* @return Whether the mipVarScaling field is set.
*/
@java.lang.Override
public boolean hasMipVarScaling() {
return ((bitField4_ & 0x00000400) != 0);
}
/**
*
* All continuous variable of the problem will be multiplied by this factor.
* By default, we don't do any variable scaling and rely on the MIP model to
* specify continuous variable domain with the wanted precision.
*
*
* optional double mip_var_scaling = 125 [default = 1];
* @return The mipVarScaling.
*/
@java.lang.Override
public double getMipVarScaling() {
return mipVarScaling_;
}
/**
*
* All continuous variable of the problem will be multiplied by this factor.
* By default, we don't do any variable scaling and rely on the MIP model to
* specify continuous variable domain with the wanted precision.
*
*
* optional double mip_var_scaling = 125 [default = 1];
* @param value The mipVarScaling to set.
* @return This builder for chaining.
*/
public Builder setMipVarScaling(double value) {
bitField4_ |= 0x00000400;
mipVarScaling_ = value;
onChanged();
return this;
}
/**
*
* All continuous variable of the problem will be multiplied by this factor.
* By default, we don't do any variable scaling and rely on the MIP model to
* specify continuous variable domain with the wanted precision.
*
*
* optional double mip_var_scaling = 125 [default = 1];
* @return This builder for chaining.
*/
public Builder clearMipVarScaling() {
bitField4_ = (bitField4_ & ~0x00000400);
mipVarScaling_ = 1D;
onChanged();
return this;
}
private boolean mipAutomaticallyScaleVariables_ = true;
/**
*
* If true, some continuous variable might be automatially scaled. For now,
* this is only the case where we detect that a variable is actually an
* integer multiple of a constant. For instance, variables of the form k * 0.5
* are quite frequent, and if we detect this, we will scale such variable
* domain by 2 to make it implied integer.
*
*
* optional bool mip_automatically_scale_variables = 166 [default = true];
* @return Whether the mipAutomaticallyScaleVariables field is set.
*/
@java.lang.Override
public boolean hasMipAutomaticallyScaleVariables() {
return ((bitField4_ & 0x00000800) != 0);
}
/**
*
* If true, some continuous variable might be automatially scaled. For now,
* this is only the case where we detect that a variable is actually an
* integer multiple of a constant. For instance, variables of the form k * 0.5
* are quite frequent, and if we detect this, we will scale such variable
* domain by 2 to make it implied integer.
*
*
* optional bool mip_automatically_scale_variables = 166 [default = true];
* @return The mipAutomaticallyScaleVariables.
*/
@java.lang.Override
public boolean getMipAutomaticallyScaleVariables() {
return mipAutomaticallyScaleVariables_;
}
/**
*
* If true, some continuous variable might be automatially scaled. For now,
* this is only the case where we detect that a variable is actually an
* integer multiple of a constant. For instance, variables of the form k * 0.5
* are quite frequent, and if we detect this, we will scale such variable
* domain by 2 to make it implied integer.
*
*
* optional bool mip_automatically_scale_variables = 166 [default = true];
* @param value The mipAutomaticallyScaleVariables to set.
* @return This builder for chaining.
*/
public Builder setMipAutomaticallyScaleVariables(boolean value) {
bitField4_ |= 0x00000800;
mipAutomaticallyScaleVariables_ = value;
onChanged();
return this;
}
/**
*
* If true, some continuous variable might be automatially scaled. For now,
* this is only the case where we detect that a variable is actually an
* integer multiple of a constant. For instance, variables of the form k * 0.5
* are quite frequent, and if we detect this, we will scale such variable
* domain by 2 to make it implied integer.
*
*
* optional bool mip_automatically_scale_variables = 166 [default = true];
* @return This builder for chaining.
*/
public Builder clearMipAutomaticallyScaleVariables() {
bitField4_ = (bitField4_ & ~0x00000800);
mipAutomaticallyScaleVariables_ = true;
onChanged();
return this;
}
private double mipWantedPrecision_ = 1e-06D;
/**
*
* When scaling constraint with double coefficients to integer coefficients,
* we will multiply by a power of 2 and round the coefficients. We will choose
* the lowest power such that we have this relative precision on each of the
* constraint (resp. objective) coefficient.
* We also use this to decide by how much we relax the constraint bounds so
* that we can have a feasible integer solution of constraints involving
* continuous variable. This is required for instance when you have an == rhs
* constraint as in many situation you cannot have a perfect equality with
* integer variables and coefficients.
*
*
* optional double mip_wanted_precision = 126 [default = 1e-06];
* @return Whether the mipWantedPrecision field is set.
*/
@java.lang.Override
public boolean hasMipWantedPrecision() {
return ((bitField4_ & 0x00001000) != 0);
}
/**
*
* When scaling constraint with double coefficients to integer coefficients,
* we will multiply by a power of 2 and round the coefficients. We will choose
* the lowest power such that we have this relative precision on each of the
* constraint (resp. objective) coefficient.
* We also use this to decide by how much we relax the constraint bounds so
* that we can have a feasible integer solution of constraints involving
* continuous variable. This is required for instance when you have an == rhs
* constraint as in many situation you cannot have a perfect equality with
* integer variables and coefficients.
*
*
* optional double mip_wanted_precision = 126 [default = 1e-06];
* @return The mipWantedPrecision.
*/
@java.lang.Override
public double getMipWantedPrecision() {
return mipWantedPrecision_;
}
/**
*
* When scaling constraint with double coefficients to integer coefficients,
* we will multiply by a power of 2 and round the coefficients. We will choose
* the lowest power such that we have this relative precision on each of the
* constraint (resp. objective) coefficient.
* We also use this to decide by how much we relax the constraint bounds so
* that we can have a feasible integer solution of constraints involving
* continuous variable. This is required for instance when you have an == rhs
* constraint as in many situation you cannot have a perfect equality with
* integer variables and coefficients.
*
*
* optional double mip_wanted_precision = 126 [default = 1e-06];
* @param value The mipWantedPrecision to set.
* @return This builder for chaining.
*/
public Builder setMipWantedPrecision(double value) {
bitField4_ |= 0x00001000;
mipWantedPrecision_ = value;
onChanged();
return this;
}
/**
*
* When scaling constraint with double coefficients to integer coefficients,
* we will multiply by a power of 2 and round the coefficients. We will choose
* the lowest power such that we have this relative precision on each of the
* constraint (resp. objective) coefficient.
* We also use this to decide by how much we relax the constraint bounds so
* that we can have a feasible integer solution of constraints involving
* continuous variable. This is required for instance when you have an == rhs
* constraint as in many situation you cannot have a perfect equality with
* integer variables and coefficients.
*
*
* optional double mip_wanted_precision = 126 [default = 1e-06];
* @return This builder for chaining.
*/
public Builder clearMipWantedPrecision() {
bitField4_ = (bitField4_ & ~0x00001000);
mipWantedPrecision_ = 1e-06D;
onChanged();
return this;
}
private int mipMaxActivityExponent_ = 53;
/**
*
* To avoid integer overflow, we always force the maximum possible constraint
* activity (and objective value) according to the initial variable domain to
* be smaller than 2 to this given power. Because of this, we cannot always
* reach the "mip_wanted_precision" parameter above.
* This can go as high as 62, but some internal algo currently abort early if
* they might run into integer overflow, so it is better to keep it a bit
* lower than this.
*
*
* optional int32 mip_max_activity_exponent = 127 [default = 53];
* @return Whether the mipMaxActivityExponent field is set.
*/
@java.lang.Override
public boolean hasMipMaxActivityExponent() {
return ((bitField4_ & 0x00002000) != 0);
}
/**
*
* To avoid integer overflow, we always force the maximum possible constraint
* activity (and objective value) according to the initial variable domain to
* be smaller than 2 to this given power. Because of this, we cannot always
* reach the "mip_wanted_precision" parameter above.
* This can go as high as 62, but some internal algo currently abort early if
* they might run into integer overflow, so it is better to keep it a bit
* lower than this.
*
*
* optional int32 mip_max_activity_exponent = 127 [default = 53];
* @return The mipMaxActivityExponent.
*/
@java.lang.Override
public int getMipMaxActivityExponent() {
return mipMaxActivityExponent_;
}
/**
*
* To avoid integer overflow, we always force the maximum possible constraint
* activity (and objective value) according to the initial variable domain to
* be smaller than 2 to this given power. Because of this, we cannot always
* reach the "mip_wanted_precision" parameter above.
* This can go as high as 62, but some internal algo currently abort early if
* they might run into integer overflow, so it is better to keep it a bit
* lower than this.
*
*
* optional int32 mip_max_activity_exponent = 127 [default = 53];
* @param value The mipMaxActivityExponent to set.
* @return This builder for chaining.
*/
public Builder setMipMaxActivityExponent(int value) {
bitField4_ |= 0x00002000;
mipMaxActivityExponent_ = value;
onChanged();
return this;
}
/**
*
* To avoid integer overflow, we always force the maximum possible constraint
* activity (and objective value) according to the initial variable domain to
* be smaller than 2 to this given power. Because of this, we cannot always
* reach the "mip_wanted_precision" parameter above.
* This can go as high as 62, but some internal algo currently abort early if
* they might run into integer overflow, so it is better to keep it a bit
* lower than this.
*
*
* optional int32 mip_max_activity_exponent = 127 [default = 53];
* @return This builder for chaining.
*/
public Builder clearMipMaxActivityExponent() {
bitField4_ = (bitField4_ & ~0x00002000);
mipMaxActivityExponent_ = 53;
onChanged();
return this;
}
private double mipCheckPrecision_ = 0.0001D;
/**
*
* As explained in mip_precision and mip_max_activity_exponent, we cannot
* always reach the wanted coefficient precision during scaling. When we
* cannot, we will report MODEL_INVALID if the relative preicision is larger
* than this parameter.
*
*
* optional double mip_check_precision = 128 [default = 0.0001];
* @return Whether the mipCheckPrecision field is set.
*/
@java.lang.Override
public boolean hasMipCheckPrecision() {
return ((bitField4_ & 0x00004000) != 0);
}
/**
*
* As explained in mip_precision and mip_max_activity_exponent, we cannot
* always reach the wanted coefficient precision during scaling. When we
* cannot, we will report MODEL_INVALID if the relative preicision is larger
* than this parameter.
*
*
* optional double mip_check_precision = 128 [default = 0.0001];
* @return The mipCheckPrecision.
*/
@java.lang.Override
public double getMipCheckPrecision() {
return mipCheckPrecision_;
}
/**
*
* As explained in mip_precision and mip_max_activity_exponent, we cannot
* always reach the wanted coefficient precision during scaling. When we
* cannot, we will report MODEL_INVALID if the relative preicision is larger
* than this parameter.
*
*
* optional double mip_check_precision = 128 [default = 0.0001];
* @param value The mipCheckPrecision to set.
* @return This builder for chaining.
*/
public Builder setMipCheckPrecision(double value) {
bitField4_ |= 0x00004000;
mipCheckPrecision_ = value;
onChanged();
return this;
}
/**
*
* As explained in mip_precision and mip_max_activity_exponent, we cannot
* always reach the wanted coefficient precision during scaling. When we
* cannot, we will report MODEL_INVALID if the relative preicision is larger
* than this parameter.
*
*
* optional double mip_check_precision = 128 [default = 0.0001];
* @return This builder for chaining.
*/
public Builder clearMipCheckPrecision() {
bitField4_ = (bitField4_ & ~0x00004000);
mipCheckPrecision_ = 0.0001D;
onChanged();
return this;
}
@java.lang.Override
public final Builder setUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
}
@java.lang.Override
public final Builder mergeUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.mergeUnknownFields(unknownFields);
}
// @@protoc_insertion_point(builder_scope:operations_research.sat.SatParameters)
}
// @@protoc_insertion_point(class_scope:operations_research.sat.SatParameters)
private static final com.google.ortools.sat.SatParameters DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new com.google.ortools.sat.SatParameters();
}
public static com.google.ortools.sat.SatParameters getDefaultInstance() {
return DEFAULT_INSTANCE;
}
@java.lang.Deprecated public static final com.google.protobuf.Parser
PARSER = new com.google.protobuf.AbstractParser() {
@java.lang.Override
public SatParameters parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new SatParameters(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser getParserForType() {
return PARSER;
}
@java.lang.Override
public com.google.ortools.sat.SatParameters getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy