com.google.ortools.constraintsolver.RoutingSearchParameters Maven / Gradle / Ivy
The newest version!
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ortools/constraint_solver/routing_parameters.proto
package com.google.ortools.constraintsolver;
/**
*
* Parameters defining the search used to solve vehicle routing problems.
* If a parameter is unset (or, equivalently, set to its default value),
* then the routing library will pick its preferred value for that parameter
* automatically: this should be the case for most parameters.
* To see those "default" parameters, call GetDefaultRoutingSearchParameters().
* Next ID: 35
*
*
* Protobuf type {@code operations_research.RoutingSearchParameters}
*/
public final class RoutingSearchParameters extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:operations_research.RoutingSearchParameters)
RoutingSearchParametersOrBuilder {
private static final long serialVersionUID = 0L;
// Use RoutingSearchParameters.newBuilder() to construct.
private RoutingSearchParameters(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
super(builder);
}
private RoutingSearchParameters() {
firstSolutionStrategy_ = 0;
localSearchMetaheuristic_ = 0;
useCp_ = 0;
useCpSat_ = 0;
continuousSchedulingSolver_ = 0;
mixedIntegerSchedulingSolver_ = 0;
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new RoutingSearchParameters();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private RoutingSearchParameters(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
this();
if (extensionRegistry == null) {
throw new java.lang.NullPointerException();
}
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();
firstSolutionStrategy_ = rawValue;
break;
}
case 16: {
useUnfilteredFirstSolutionStrategy_ = input.readBool();
break;
}
case 26: {
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder subBuilder = null;
if (localSearchOperators_ != null) {
subBuilder = localSearchOperators_.toBuilder();
}
localSearchOperators_ = input.readMessage(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(localSearchOperators_);
localSearchOperators_ = subBuilder.buildPartial();
}
break;
}
case 32: {
int rawValue = input.readEnum();
localSearchMetaheuristic_ = rawValue;
break;
}
case 41: {
guidedLocalSearchLambdaCoefficient_ = input.readDouble();
break;
}
case 48: {
useDepthFirstSearch_ = input.readBool();
break;
}
case 57: {
optimizationStep_ = input.readDouble();
break;
}
case 64: {
solutionLimit_ = input.readInt64();
break;
}
case 74: {
com.google.protobuf.Duration.Builder subBuilder = null;
if (timeLimit_ != null) {
subBuilder = timeLimit_.toBuilder();
}
timeLimit_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(timeLimit_);
timeLimit_ = subBuilder.buildPartial();
}
break;
}
case 82: {
com.google.protobuf.Duration.Builder subBuilder = null;
if (lnsTimeLimit_ != null) {
subBuilder = lnsTimeLimit_.toBuilder();
}
lnsTimeLimit_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(lnsTimeLimit_);
lnsTimeLimit_ = subBuilder.buildPartial();
}
break;
}
case 88: {
useFullPropagation_ = input.readBool();
break;
}
case 104: {
logSearch_ = input.readBool();
break;
}
case 113: {
savingsNeighborsRatio_ = input.readDouble();
break;
}
case 120: {
savingsAddReverseArcs_ = input.readBool();
break;
}
case 129: {
cheapestInsertionFarthestSeedsRatio_ = input.readDouble();
break;
}
case 136: {
numberOfSolutionsToCollect_ = input.readInt32();
break;
}
case 145: {
savingsArcCoefficient_ = input.readDouble();
break;
}
case 152: {
savingsParallelRoutes_ = input.readBool();
break;
}
case 160: {
relocateExpensiveChainNumArcsToConsider_ = input.readInt32();
break;
}
case 169: {
cheapestInsertionFirstSolutionNeighborsRatio_ = input.readDouble();
break;
}
case 177: {
logCostScalingFactor_ = input.readDouble();
break;
}
case 185: {
savingsMaxMemoryUsageBytes_ = input.readDouble();
break;
}
case 216: {
int rawValue = input.readEnum();
useCpSat_ = rawValue;
break;
}
case 224: {
int rawValue = input.readEnum();
useCp_ = rawValue;
break;
}
case 233: {
logCostOffset_ = input.readDouble();
break;
}
case 240: {
christofidesUseMinimumMatching_ = input.readBool();
break;
}
case 249: {
cheapestInsertionLsOperatorNeighborsRatio_ = input.readDouble();
break;
}
case 256: {
heuristicExpensiveChainLnsNumArcsToConsider_ = input.readInt32();
break;
}
case 264: {
int rawValue = input.readEnum();
continuousSchedulingSolver_ = rawValue;
break;
}
case 272: {
int rawValue = input.readEnum();
mixedIntegerSchedulingSolver_ = rawValue;
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 {
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.google.ortools.constraintsolver.RoutingSearchParameters.class, com.google.ortools.constraintsolver.RoutingSearchParameters.Builder.class);
}
/**
*
* Underlying solver to use in dimension scheduling, respectively for
* continuous and mixed models.
*
*
* Protobuf enum {@code operations_research.RoutingSearchParameters.SchedulingSolver}
*/
public enum SchedulingSolver
implements com.google.protobuf.ProtocolMessageEnum {
/**
* UNSET = 0;
*/
UNSET(0),
/**
* GLOP = 1;
*/
GLOP(1),
/**
* CP_SAT = 2;
*/
CP_SAT(2),
UNRECOGNIZED(-1),
;
/**
* UNSET = 0;
*/
public static final int UNSET_VALUE = 0;
/**
* GLOP = 1;
*/
public static final int GLOP_VALUE = 1;
/**
* CP_SAT = 2;
*/
public static final int CP_SAT_VALUE = 2;
public final int getNumber() {
if (this == UNRECOGNIZED) {
throw new java.lang.IllegalArgumentException(
"Can't get the number of an unknown enum value.");
}
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 SchedulingSolver 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 SchedulingSolver forNumber(int value) {
switch (value) {
case 0: return UNSET;
case 1: return GLOP;
case 2: return CP_SAT;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
SchedulingSolver> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap() {
public SchedulingSolver findValueByNumber(int number) {
return SchedulingSolver.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
if (this == UNRECOGNIZED) {
throw new java.lang.IllegalStateException(
"Can't get the descriptor of an unrecognized enum value.");
}
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.constraintsolver.RoutingSearchParameters.getDescriptor().getEnumTypes().get(0);
}
private static final SchedulingSolver[] VALUES = values();
public static SchedulingSolver valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
if (desc.getIndex() == -1) {
return UNRECOGNIZED;
}
return VALUES[desc.getIndex()];
}
private final int value;
private SchedulingSolver(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:operations_research.RoutingSearchParameters.SchedulingSolver)
}
public interface LocalSearchNeighborhoodOperatorsOrBuilder extends
// @@protoc_insertion_point(interface_extends:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
com.google.protobuf.MessageOrBuilder {
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @return The enum numeric value on the wire for useRelocate.
*/
int getUseRelocateValue();
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @return The useRelocate.
*/
com.google.ortools.util.OptionalBoolean getUseRelocate();
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @return The enum numeric value on the wire for useRelocatePair.
*/
int getUseRelocatePairValue();
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @return The useRelocatePair.
*/
com.google.ortools.util.OptionalBoolean getUseRelocatePair();
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @return The enum numeric value on the wire for useLightRelocatePair.
*/
int getUseLightRelocatePairValue();
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @return The useLightRelocatePair.
*/
com.google.ortools.util.OptionalBoolean getUseLightRelocatePair();
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @return The enum numeric value on the wire for useRelocateNeighbors.
*/
int getUseRelocateNeighborsValue();
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @return The useRelocateNeighbors.
*/
com.google.ortools.util.OptionalBoolean getUseRelocateNeighbors();
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @return The enum numeric value on the wire for useRelocateSubtrip.
*/
int getUseRelocateSubtripValue();
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @return The useRelocateSubtrip.
*/
com.google.ortools.util.OptionalBoolean getUseRelocateSubtrip();
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @return The enum numeric value on the wire for useExchange.
*/
int getUseExchangeValue();
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @return The useExchange.
*/
com.google.ortools.util.OptionalBoolean getUseExchange();
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @return The enum numeric value on the wire for useExchangePair.
*/
int getUseExchangePairValue();
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @return The useExchangePair.
*/
com.google.ortools.util.OptionalBoolean getUseExchangePair();
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @return The enum numeric value on the wire for useExchangeSubtrip.
*/
int getUseExchangeSubtripValue();
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @return The useExchangeSubtrip.
*/
com.google.ortools.util.OptionalBoolean getUseExchangeSubtrip();
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @return The enum numeric value on the wire for useCross.
*/
int getUseCrossValue();
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @return The useCross.
*/
com.google.ortools.util.OptionalBoolean getUseCross();
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @return The enum numeric value on the wire for useCrossExchange.
*/
int getUseCrossExchangeValue();
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @return The useCrossExchange.
*/
com.google.ortools.util.OptionalBoolean getUseCrossExchange();
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @return The enum numeric value on the wire for useRelocateExpensiveChain.
*/
int getUseRelocateExpensiveChainValue();
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @return The useRelocateExpensiveChain.
*/
com.google.ortools.util.OptionalBoolean getUseRelocateExpensiveChain();
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @return The enum numeric value on the wire for useTwoOpt.
*/
int getUseTwoOptValue();
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @return The useTwoOpt.
*/
com.google.ortools.util.OptionalBoolean getUseTwoOpt();
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @return The enum numeric value on the wire for useOrOpt.
*/
int getUseOrOptValue();
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @return The useOrOpt.
*/
com.google.ortools.util.OptionalBoolean getUseOrOpt();
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @return The enum numeric value on the wire for useLinKernighan.
*/
int getUseLinKernighanValue();
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @return The useLinKernighan.
*/
com.google.ortools.util.OptionalBoolean getUseLinKernighan();
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @return The enum numeric value on the wire for useTspOpt.
*/
int getUseTspOptValue();
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @return The useTspOpt.
*/
com.google.ortools.util.OptionalBoolean getUseTspOpt();
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @return The enum numeric value on the wire for useMakeActive.
*/
int getUseMakeActiveValue();
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @return The useMakeActive.
*/
com.google.ortools.util.OptionalBoolean getUseMakeActive();
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @return The enum numeric value on the wire for useRelocateAndMakeActive.
*/
int getUseRelocateAndMakeActiveValue();
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @return The useRelocateAndMakeActive.
*/
com.google.ortools.util.OptionalBoolean getUseRelocateAndMakeActive();
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @return The enum numeric value on the wire for useMakeInactive.
*/
int getUseMakeInactiveValue();
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @return The useMakeInactive.
*/
com.google.ortools.util.OptionalBoolean getUseMakeInactive();
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @return The enum numeric value on the wire for useMakeChainInactive.
*/
int getUseMakeChainInactiveValue();
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @return The useMakeChainInactive.
*/
com.google.ortools.util.OptionalBoolean getUseMakeChainInactive();
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @return The enum numeric value on the wire for useSwapActive.
*/
int getUseSwapActiveValue();
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @return The useSwapActive.
*/
com.google.ortools.util.OptionalBoolean getUseSwapActive();
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @return The enum numeric value on the wire for useExtendedSwapActive.
*/
int getUseExtendedSwapActiveValue();
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @return The useExtendedSwapActive.
*/
com.google.ortools.util.OptionalBoolean getUseExtendedSwapActive();
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @return The enum numeric value on the wire for useNodePairSwapActive.
*/
int getUseNodePairSwapActiveValue();
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @return The useNodePairSwapActive.
*/
com.google.ortools.util.OptionalBoolean getUseNodePairSwapActive();
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @return The enum numeric value on the wire for usePathLns.
*/
int getUsePathLnsValue();
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @return The usePathLns.
*/
com.google.ortools.util.OptionalBoolean getUsePathLns();
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @return The enum numeric value on the wire for useFullPathLns.
*/
int getUseFullPathLnsValue();
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @return The useFullPathLns.
*/
com.google.ortools.util.OptionalBoolean getUseFullPathLns();
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @return The enum numeric value on the wire for useTspLns.
*/
int getUseTspLnsValue();
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @return The useTspLns.
*/
com.google.ortools.util.OptionalBoolean getUseTspLns();
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @return The enum numeric value on the wire for useInactiveLns.
*/
int getUseInactiveLnsValue();
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @return The useInactiveLns.
*/
com.google.ortools.util.OptionalBoolean getUseInactiveLns();
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @return The enum numeric value on the wire for useGlobalCheapestInsertionPathLns.
*/
int getUseGlobalCheapestInsertionPathLnsValue();
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @return The useGlobalCheapestInsertionPathLns.
*/
com.google.ortools.util.OptionalBoolean getUseGlobalCheapestInsertionPathLns();
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @return The enum numeric value on the wire for useLocalCheapestInsertionPathLns.
*/
int getUseLocalCheapestInsertionPathLnsValue();
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @return The useLocalCheapestInsertionPathLns.
*/
com.google.ortools.util.OptionalBoolean getUseLocalCheapestInsertionPathLns();
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @return The enum numeric value on the wire for useGlobalCheapestInsertionExpensiveChainLns.
*/
int getUseGlobalCheapestInsertionExpensiveChainLnsValue();
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @return The useGlobalCheapestInsertionExpensiveChainLns.
*/
com.google.ortools.util.OptionalBoolean getUseGlobalCheapestInsertionExpensiveChainLns();
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @return The enum numeric value on the wire for useLocalCheapestInsertionExpensiveChainLns.
*/
int getUseLocalCheapestInsertionExpensiveChainLnsValue();
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @return The useLocalCheapestInsertionExpensiveChainLns.
*/
com.google.ortools.util.OptionalBoolean getUseLocalCheapestInsertionExpensiveChainLns();
}
/**
*
* Local search neighborhood operators used to build a solutions neighborhood.
* Next ID: 31
*
*
* Protobuf type {@code operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators}
*/
public static final class LocalSearchNeighborhoodOperators extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
LocalSearchNeighborhoodOperatorsOrBuilder {
private static final long serialVersionUID = 0L;
// Use LocalSearchNeighborhoodOperators.newBuilder() to construct.
private LocalSearchNeighborhoodOperators(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
super(builder);
}
private LocalSearchNeighborhoodOperators() {
useRelocate_ = 0;
useRelocatePair_ = 0;
useLightRelocatePair_ = 0;
useRelocateNeighbors_ = 0;
useRelocateSubtrip_ = 0;
useExchange_ = 0;
useExchangePair_ = 0;
useExchangeSubtrip_ = 0;
useCross_ = 0;
useCrossExchange_ = 0;
useRelocateExpensiveChain_ = 0;
useTwoOpt_ = 0;
useOrOpt_ = 0;
useLinKernighan_ = 0;
useTspOpt_ = 0;
useMakeActive_ = 0;
useRelocateAndMakeActive_ = 0;
useMakeInactive_ = 0;
useMakeChainInactive_ = 0;
useSwapActive_ = 0;
useExtendedSwapActive_ = 0;
useNodePairSwapActive_ = 0;
usePathLns_ = 0;
useFullPathLns_ = 0;
useTspLns_ = 0;
useInactiveLns_ = 0;
useGlobalCheapestInsertionPathLns_ = 0;
useLocalCheapestInsertionPathLns_ = 0;
useGlobalCheapestInsertionExpensiveChainLns_ = 0;
useLocalCheapestInsertionExpensiveChainLns_ = 0;
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new LocalSearchNeighborhoodOperators();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private LocalSearchNeighborhoodOperators(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
this();
if (extensionRegistry == null) {
throw new java.lang.NullPointerException();
}
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();
useRelocate_ = rawValue;
break;
}
case 16: {
int rawValue = input.readEnum();
useRelocatePair_ = rawValue;
break;
}
case 24: {
int rawValue = input.readEnum();
useRelocateNeighbors_ = rawValue;
break;
}
case 32: {
int rawValue = input.readEnum();
useExchange_ = rawValue;
break;
}
case 40: {
int rawValue = input.readEnum();
useCross_ = rawValue;
break;
}
case 48: {
int rawValue = input.readEnum();
useCrossExchange_ = rawValue;
break;
}
case 56: {
int rawValue = input.readEnum();
useTwoOpt_ = rawValue;
break;
}
case 64: {
int rawValue = input.readEnum();
useOrOpt_ = rawValue;
break;
}
case 72: {
int rawValue = input.readEnum();
useLinKernighan_ = rawValue;
break;
}
case 80: {
int rawValue = input.readEnum();
useTspOpt_ = rawValue;
break;
}
case 88: {
int rawValue = input.readEnum();
useMakeActive_ = rawValue;
break;
}
case 96: {
int rawValue = input.readEnum();
useMakeInactive_ = rawValue;
break;
}
case 104: {
int rawValue = input.readEnum();
useMakeChainInactive_ = rawValue;
break;
}
case 112: {
int rawValue = input.readEnum();
useSwapActive_ = rawValue;
break;
}
case 120: {
int rawValue = input.readEnum();
useExtendedSwapActive_ = rawValue;
break;
}
case 128: {
int rawValue = input.readEnum();
usePathLns_ = rawValue;
break;
}
case 136: {
int rawValue = input.readEnum();
useFullPathLns_ = rawValue;
break;
}
case 144: {
int rawValue = input.readEnum();
useTspLns_ = rawValue;
break;
}
case 152: {
int rawValue = input.readEnum();
useInactiveLns_ = rawValue;
break;
}
case 160: {
int rawValue = input.readEnum();
useNodePairSwapActive_ = rawValue;
break;
}
case 168: {
int rawValue = input.readEnum();
useRelocateAndMakeActive_ = rawValue;
break;
}
case 176: {
int rawValue = input.readEnum();
useExchangePair_ = rawValue;
break;
}
case 184: {
int rawValue = input.readEnum();
useRelocateExpensiveChain_ = rawValue;
break;
}
case 192: {
int rawValue = input.readEnum();
useLightRelocatePair_ = rawValue;
break;
}
case 200: {
int rawValue = input.readEnum();
useRelocateSubtrip_ = rawValue;
break;
}
case 208: {
int rawValue = input.readEnum();
useExchangeSubtrip_ = rawValue;
break;
}
case 216: {
int rawValue = input.readEnum();
useGlobalCheapestInsertionPathLns_ = rawValue;
break;
}
case 224: {
int rawValue = input.readEnum();
useLocalCheapestInsertionPathLns_ = rawValue;
break;
}
case 232: {
int rawValue = input.readEnum();
useGlobalCheapestInsertionExpensiveChainLns_ = rawValue;
break;
}
case 240: {
int rawValue = input.readEnum();
useLocalCheapestInsertionExpensiveChainLns_ = rawValue;
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 {
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.class, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder.class);
}
public static final int USE_RELOCATE_FIELD_NUMBER = 1;
private int useRelocate_;
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @return The enum numeric value on the wire for useRelocate.
*/
@java.lang.Override public int getUseRelocateValue() {
return useRelocate_;
}
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @return The useRelocate.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseRelocate() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocate_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_RELOCATE_PAIR_FIELD_NUMBER = 2;
private int useRelocatePair_;
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @return The enum numeric value on the wire for useRelocatePair.
*/
@java.lang.Override public int getUseRelocatePairValue() {
return useRelocatePair_;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @return The useRelocatePair.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseRelocatePair() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocatePair_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER = 24;
private int useLightRelocatePair_;
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @return The enum numeric value on the wire for useLightRelocatePair.
*/
@java.lang.Override public int getUseLightRelocatePairValue() {
return useLightRelocatePair_;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @return The useLightRelocatePair.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseLightRelocatePair() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLightRelocatePair_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_RELOCATE_NEIGHBORS_FIELD_NUMBER = 3;
private int useRelocateNeighbors_;
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @return The enum numeric value on the wire for useRelocateNeighbors.
*/
@java.lang.Override public int getUseRelocateNeighborsValue() {
return useRelocateNeighbors_;
}
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @return The useRelocateNeighbors.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseRelocateNeighbors() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateNeighbors_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_RELOCATE_SUBTRIP_FIELD_NUMBER = 25;
private int useRelocateSubtrip_;
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @return The enum numeric value on the wire for useRelocateSubtrip.
*/
@java.lang.Override public int getUseRelocateSubtripValue() {
return useRelocateSubtrip_;
}
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @return The useRelocateSubtrip.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseRelocateSubtrip() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateSubtrip_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_EXCHANGE_FIELD_NUMBER = 4;
private int useExchange_;
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @return The enum numeric value on the wire for useExchange.
*/
@java.lang.Override public int getUseExchangeValue() {
return useExchange_;
}
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @return The useExchange.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseExchange() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExchange_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_EXCHANGE_PAIR_FIELD_NUMBER = 22;
private int useExchangePair_;
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @return The enum numeric value on the wire for useExchangePair.
*/
@java.lang.Override public int getUseExchangePairValue() {
return useExchangePair_;
}
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @return The useExchangePair.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseExchangePair() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExchangePair_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_EXCHANGE_SUBTRIP_FIELD_NUMBER = 26;
private int useExchangeSubtrip_;
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @return The enum numeric value on the wire for useExchangeSubtrip.
*/
@java.lang.Override public int getUseExchangeSubtripValue() {
return useExchangeSubtrip_;
}
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @return The useExchangeSubtrip.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseExchangeSubtrip() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExchangeSubtrip_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_CROSS_FIELD_NUMBER = 5;
private int useCross_;
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @return The enum numeric value on the wire for useCross.
*/
@java.lang.Override public int getUseCrossValue() {
return useCross_;
}
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @return The useCross.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseCross() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCross_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_CROSS_EXCHANGE_FIELD_NUMBER = 6;
private int useCrossExchange_;
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @return The enum numeric value on the wire for useCrossExchange.
*/
@java.lang.Override public int getUseCrossExchangeValue() {
return useCrossExchange_;
}
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @return The useCrossExchange.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseCrossExchange() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCrossExchange_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER = 23;
private int useRelocateExpensiveChain_;
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @return The enum numeric value on the wire for useRelocateExpensiveChain.
*/
@java.lang.Override public int getUseRelocateExpensiveChainValue() {
return useRelocateExpensiveChain_;
}
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @return The useRelocateExpensiveChain.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseRelocateExpensiveChain() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateExpensiveChain_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_TWO_OPT_FIELD_NUMBER = 7;
private int useTwoOpt_;
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @return The enum numeric value on the wire for useTwoOpt.
*/
@java.lang.Override public int getUseTwoOptValue() {
return useTwoOpt_;
}
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @return The useTwoOpt.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseTwoOpt() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useTwoOpt_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_OR_OPT_FIELD_NUMBER = 8;
private int useOrOpt_;
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @return The enum numeric value on the wire for useOrOpt.
*/
@java.lang.Override public int getUseOrOptValue() {
return useOrOpt_;
}
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @return The useOrOpt.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseOrOpt() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useOrOpt_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_LIN_KERNIGHAN_FIELD_NUMBER = 9;
private int useLinKernighan_;
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @return The enum numeric value on the wire for useLinKernighan.
*/
@java.lang.Override public int getUseLinKernighanValue() {
return useLinKernighan_;
}
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @return The useLinKernighan.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseLinKernighan() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLinKernighan_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_TSP_OPT_FIELD_NUMBER = 10;
private int useTspOpt_;
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @return The enum numeric value on the wire for useTspOpt.
*/
@java.lang.Override public int getUseTspOptValue() {
return useTspOpt_;
}
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @return The useTspOpt.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseTspOpt() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useTspOpt_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_MAKE_ACTIVE_FIELD_NUMBER = 11;
private int useMakeActive_;
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @return The enum numeric value on the wire for useMakeActive.
*/
@java.lang.Override public int getUseMakeActiveValue() {
return useMakeActive_;
}
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @return The useMakeActive.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseMakeActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useMakeActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER = 21;
private int useRelocateAndMakeActive_;
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @return The enum numeric value on the wire for useRelocateAndMakeActive.
*/
@java.lang.Override public int getUseRelocateAndMakeActiveValue() {
return useRelocateAndMakeActive_;
}
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @return The useRelocateAndMakeActive.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseRelocateAndMakeActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateAndMakeActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_MAKE_INACTIVE_FIELD_NUMBER = 12;
private int useMakeInactive_;
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @return The enum numeric value on the wire for useMakeInactive.
*/
@java.lang.Override public int getUseMakeInactiveValue() {
return useMakeInactive_;
}
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @return The useMakeInactive.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseMakeInactive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useMakeInactive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER = 13;
private int useMakeChainInactive_;
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @return The enum numeric value on the wire for useMakeChainInactive.
*/
@java.lang.Override public int getUseMakeChainInactiveValue() {
return useMakeChainInactive_;
}
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @return The useMakeChainInactive.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseMakeChainInactive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useMakeChainInactive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_SWAP_ACTIVE_FIELD_NUMBER = 14;
private int useSwapActive_;
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @return The enum numeric value on the wire for useSwapActive.
*/
@java.lang.Override public int getUseSwapActiveValue() {
return useSwapActive_;
}
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @return The useSwapActive.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseSwapActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useSwapActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER = 15;
private int useExtendedSwapActive_;
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @return The enum numeric value on the wire for useExtendedSwapActive.
*/
@java.lang.Override public int getUseExtendedSwapActiveValue() {
return useExtendedSwapActive_;
}
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @return The useExtendedSwapActive.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseExtendedSwapActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExtendedSwapActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER = 20;
private int useNodePairSwapActive_;
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @return The enum numeric value on the wire for useNodePairSwapActive.
*/
@java.lang.Override public int getUseNodePairSwapActiveValue() {
return useNodePairSwapActive_;
}
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @return The useNodePairSwapActive.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseNodePairSwapActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useNodePairSwapActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_PATH_LNS_FIELD_NUMBER = 16;
private int usePathLns_;
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @return The enum numeric value on the wire for usePathLns.
*/
@java.lang.Override public int getUsePathLnsValue() {
return usePathLns_;
}
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @return The usePathLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUsePathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(usePathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_FULL_PATH_LNS_FIELD_NUMBER = 17;
private int useFullPathLns_;
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @return The enum numeric value on the wire for useFullPathLns.
*/
@java.lang.Override public int getUseFullPathLnsValue() {
return useFullPathLns_;
}
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @return The useFullPathLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseFullPathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useFullPathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_TSP_LNS_FIELD_NUMBER = 18;
private int useTspLns_;
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @return The enum numeric value on the wire for useTspLns.
*/
@java.lang.Override public int getUseTspLnsValue() {
return useTspLns_;
}
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @return The useTspLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseTspLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useTspLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_INACTIVE_LNS_FIELD_NUMBER = 19;
private int useInactiveLns_;
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @return The enum numeric value on the wire for useInactiveLns.
*/
@java.lang.Override public int getUseInactiveLnsValue() {
return useInactiveLns_;
}
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @return The useInactiveLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseInactiveLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useInactiveLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_GLOBAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER = 27;
private int useGlobalCheapestInsertionPathLns_;
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @return The enum numeric value on the wire for useGlobalCheapestInsertionPathLns.
*/
@java.lang.Override public int getUseGlobalCheapestInsertionPathLnsValue() {
return useGlobalCheapestInsertionPathLns_;
}
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @return The useGlobalCheapestInsertionPathLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseGlobalCheapestInsertionPathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useGlobalCheapestInsertionPathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_LOCAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER = 28;
private int useLocalCheapestInsertionPathLns_;
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @return The enum numeric value on the wire for useLocalCheapestInsertionPathLns.
*/
@java.lang.Override public int getUseLocalCheapestInsertionPathLnsValue() {
return useLocalCheapestInsertionPathLns_;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @return The useLocalCheapestInsertionPathLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseLocalCheapestInsertionPathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLocalCheapestInsertionPathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_GLOBAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER = 29;
private int useGlobalCheapestInsertionExpensiveChainLns_;
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @return The enum numeric value on the wire for useGlobalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override public int getUseGlobalCheapestInsertionExpensiveChainLnsValue() {
return useGlobalCheapestInsertionExpensiveChainLns_;
}
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @return The useGlobalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseGlobalCheapestInsertionExpensiveChainLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useGlobalCheapestInsertionExpensiveChainLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_LOCAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER = 30;
private int useLocalCheapestInsertionExpensiveChainLns_;
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @return The enum numeric value on the wire for useLocalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override public int getUseLocalCheapestInsertionExpensiveChainLnsValue() {
return useLocalCheapestInsertionExpensiveChainLns_;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @return The useLocalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseLocalCheapestInsertionExpensiveChainLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLocalCheapestInsertionExpensiveChainLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
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 (useRelocate_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(1, useRelocate_);
}
if (useRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(2, useRelocatePair_);
}
if (useRelocateNeighbors_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(3, useRelocateNeighbors_);
}
if (useExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(4, useExchange_);
}
if (useCross_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(5, useCross_);
}
if (useCrossExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(6, useCrossExchange_);
}
if (useTwoOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(7, useTwoOpt_);
}
if (useOrOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(8, useOrOpt_);
}
if (useLinKernighan_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(9, useLinKernighan_);
}
if (useTspOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(10, useTspOpt_);
}
if (useMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(11, useMakeActive_);
}
if (useMakeInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(12, useMakeInactive_);
}
if (useMakeChainInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(13, useMakeChainInactive_);
}
if (useSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(14, useSwapActive_);
}
if (useExtendedSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(15, useExtendedSwapActive_);
}
if (usePathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(16, usePathLns_);
}
if (useFullPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(17, useFullPathLns_);
}
if (useTspLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(18, useTspLns_);
}
if (useInactiveLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(19, useInactiveLns_);
}
if (useNodePairSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(20, useNodePairSwapActive_);
}
if (useRelocateAndMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(21, useRelocateAndMakeActive_);
}
if (useExchangePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(22, useExchangePair_);
}
if (useRelocateExpensiveChain_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(23, useRelocateExpensiveChain_);
}
if (useLightRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(24, useLightRelocatePair_);
}
if (useRelocateSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(25, useRelocateSubtrip_);
}
if (useExchangeSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(26, useExchangeSubtrip_);
}
if (useGlobalCheapestInsertionPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(27, useGlobalCheapestInsertionPathLns_);
}
if (useLocalCheapestInsertionPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(28, useLocalCheapestInsertionPathLns_);
}
if (useGlobalCheapestInsertionExpensiveChainLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(29, useGlobalCheapestInsertionExpensiveChainLns_);
}
if (useLocalCheapestInsertionExpensiveChainLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(30, useLocalCheapestInsertionExpensiveChainLns_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (useRelocate_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(1, useRelocate_);
}
if (useRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(2, useRelocatePair_);
}
if (useRelocateNeighbors_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(3, useRelocateNeighbors_);
}
if (useExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(4, useExchange_);
}
if (useCross_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(5, useCross_);
}
if (useCrossExchange_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(6, useCrossExchange_);
}
if (useTwoOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(7, useTwoOpt_);
}
if (useOrOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(8, useOrOpt_);
}
if (useLinKernighan_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(9, useLinKernighan_);
}
if (useTspOpt_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(10, useTspOpt_);
}
if (useMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(11, useMakeActive_);
}
if (useMakeInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(12, useMakeInactive_);
}
if (useMakeChainInactive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(13, useMakeChainInactive_);
}
if (useSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(14, useSwapActive_);
}
if (useExtendedSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(15, useExtendedSwapActive_);
}
if (usePathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(16, usePathLns_);
}
if (useFullPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(17, useFullPathLns_);
}
if (useTspLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(18, useTspLns_);
}
if (useInactiveLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(19, useInactiveLns_);
}
if (useNodePairSwapActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(20, useNodePairSwapActive_);
}
if (useRelocateAndMakeActive_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(21, useRelocateAndMakeActive_);
}
if (useExchangePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(22, useExchangePair_);
}
if (useRelocateExpensiveChain_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(23, useRelocateExpensiveChain_);
}
if (useLightRelocatePair_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(24, useLightRelocatePair_);
}
if (useRelocateSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(25, useRelocateSubtrip_);
}
if (useExchangeSubtrip_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(26, useExchangeSubtrip_);
}
if (useGlobalCheapestInsertionPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(27, useGlobalCheapestInsertionPathLns_);
}
if (useLocalCheapestInsertionPathLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(28, useLocalCheapestInsertionPathLns_);
}
if (useGlobalCheapestInsertionExpensiveChainLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(29, useGlobalCheapestInsertionExpensiveChainLns_);
}
if (useLocalCheapestInsertionExpensiveChainLns_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(30, useLocalCheapestInsertionExpensiveChainLns_);
}
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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators)) {
return super.equals(obj);
}
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators other = (com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators) obj;
if (useRelocate_ != other.useRelocate_) return false;
if (useRelocatePair_ != other.useRelocatePair_) return false;
if (useLightRelocatePair_ != other.useLightRelocatePair_) return false;
if (useRelocateNeighbors_ != other.useRelocateNeighbors_) return false;
if (useRelocateSubtrip_ != other.useRelocateSubtrip_) return false;
if (useExchange_ != other.useExchange_) return false;
if (useExchangePair_ != other.useExchangePair_) return false;
if (useExchangeSubtrip_ != other.useExchangeSubtrip_) return false;
if (useCross_ != other.useCross_) return false;
if (useCrossExchange_ != other.useCrossExchange_) return false;
if (useRelocateExpensiveChain_ != other.useRelocateExpensiveChain_) return false;
if (useTwoOpt_ != other.useTwoOpt_) return false;
if (useOrOpt_ != other.useOrOpt_) return false;
if (useLinKernighan_ != other.useLinKernighan_) return false;
if (useTspOpt_ != other.useTspOpt_) return false;
if (useMakeActive_ != other.useMakeActive_) return false;
if (useRelocateAndMakeActive_ != other.useRelocateAndMakeActive_) return false;
if (useMakeInactive_ != other.useMakeInactive_) return false;
if (useMakeChainInactive_ != other.useMakeChainInactive_) return false;
if (useSwapActive_ != other.useSwapActive_) return false;
if (useExtendedSwapActive_ != other.useExtendedSwapActive_) return false;
if (useNodePairSwapActive_ != other.useNodePairSwapActive_) return false;
if (usePathLns_ != other.usePathLns_) return false;
if (useFullPathLns_ != other.useFullPathLns_) return false;
if (useTspLns_ != other.useTspLns_) return false;
if (useInactiveLns_ != other.useInactiveLns_) return false;
if (useGlobalCheapestInsertionPathLns_ != other.useGlobalCheapestInsertionPathLns_) return false;
if (useLocalCheapestInsertionPathLns_ != other.useLocalCheapestInsertionPathLns_) return false;
if (useGlobalCheapestInsertionExpensiveChainLns_ != other.useGlobalCheapestInsertionExpensiveChainLns_) return false;
if (useLocalCheapestInsertionExpensiveChainLns_ != other.useLocalCheapestInsertionExpensiveChainLns_) 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();
hash = (37 * hash) + USE_RELOCATE_FIELD_NUMBER;
hash = (53 * hash) + useRelocate_;
hash = (37 * hash) + USE_RELOCATE_PAIR_FIELD_NUMBER;
hash = (53 * hash) + useRelocatePair_;
hash = (37 * hash) + USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER;
hash = (53 * hash) + useLightRelocatePair_;
hash = (37 * hash) + USE_RELOCATE_NEIGHBORS_FIELD_NUMBER;
hash = (53 * hash) + useRelocateNeighbors_;
hash = (37 * hash) + USE_RELOCATE_SUBTRIP_FIELD_NUMBER;
hash = (53 * hash) + useRelocateSubtrip_;
hash = (37 * hash) + USE_EXCHANGE_FIELD_NUMBER;
hash = (53 * hash) + useExchange_;
hash = (37 * hash) + USE_EXCHANGE_PAIR_FIELD_NUMBER;
hash = (53 * hash) + useExchangePair_;
hash = (37 * hash) + USE_EXCHANGE_SUBTRIP_FIELD_NUMBER;
hash = (53 * hash) + useExchangeSubtrip_;
hash = (37 * hash) + USE_CROSS_FIELD_NUMBER;
hash = (53 * hash) + useCross_;
hash = (37 * hash) + USE_CROSS_EXCHANGE_FIELD_NUMBER;
hash = (53 * hash) + useCrossExchange_;
hash = (37 * hash) + USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER;
hash = (53 * hash) + useRelocateExpensiveChain_;
hash = (37 * hash) + USE_TWO_OPT_FIELD_NUMBER;
hash = (53 * hash) + useTwoOpt_;
hash = (37 * hash) + USE_OR_OPT_FIELD_NUMBER;
hash = (53 * hash) + useOrOpt_;
hash = (37 * hash) + USE_LIN_KERNIGHAN_FIELD_NUMBER;
hash = (53 * hash) + useLinKernighan_;
hash = (37 * hash) + USE_TSP_OPT_FIELD_NUMBER;
hash = (53 * hash) + useTspOpt_;
hash = (37 * hash) + USE_MAKE_ACTIVE_FIELD_NUMBER;
hash = (53 * hash) + useMakeActive_;
hash = (37 * hash) + USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER;
hash = (53 * hash) + useRelocateAndMakeActive_;
hash = (37 * hash) + USE_MAKE_INACTIVE_FIELD_NUMBER;
hash = (53 * hash) + useMakeInactive_;
hash = (37 * hash) + USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER;
hash = (53 * hash) + useMakeChainInactive_;
hash = (37 * hash) + USE_SWAP_ACTIVE_FIELD_NUMBER;
hash = (53 * hash) + useSwapActive_;
hash = (37 * hash) + USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER;
hash = (53 * hash) + useExtendedSwapActive_;
hash = (37 * hash) + USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER;
hash = (53 * hash) + useNodePairSwapActive_;
hash = (37 * hash) + USE_PATH_LNS_FIELD_NUMBER;
hash = (53 * hash) + usePathLns_;
hash = (37 * hash) + USE_FULL_PATH_LNS_FIELD_NUMBER;
hash = (53 * hash) + useFullPathLns_;
hash = (37 * hash) + USE_TSP_LNS_FIELD_NUMBER;
hash = (53 * hash) + useTspLns_;
hash = (37 * hash) + USE_INACTIVE_LNS_FIELD_NUMBER;
hash = (53 * hash) + useInactiveLns_;
hash = (37 * hash) + USE_GLOBAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER;
hash = (53 * hash) + useGlobalCheapestInsertionPathLns_;
hash = (37 * hash) + USE_LOCAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER;
hash = (53 * hash) + useLocalCheapestInsertionPathLns_;
hash = (37 * hash) + USE_GLOBAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER;
hash = (53 * hash) + useGlobalCheapestInsertionExpensiveChainLns_;
hash = (37 * hash) + USE_LOCAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER;
hash = (53 * hash) + useLocalCheapestInsertionExpensiveChainLns_;
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators 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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators 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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators 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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators 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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators 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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators 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;
}
/**
*
* Local search neighborhood operators used to build a solutions neighborhood.
* Next ID: 31
*
*
* Protobuf type {@code operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder implements
// @@protoc_insertion_point(builder_implements:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.class, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder.class);
}
// Construct using com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.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();
useRelocate_ = 0;
useRelocatePair_ = 0;
useLightRelocatePair_ = 0;
useRelocateNeighbors_ = 0;
useRelocateSubtrip_ = 0;
useExchange_ = 0;
useExchangePair_ = 0;
useExchangeSubtrip_ = 0;
useCross_ = 0;
useCrossExchange_ = 0;
useRelocateExpensiveChain_ = 0;
useTwoOpt_ = 0;
useOrOpt_ = 0;
useLinKernighan_ = 0;
useTspOpt_ = 0;
useMakeActive_ = 0;
useRelocateAndMakeActive_ = 0;
useMakeInactive_ = 0;
useMakeChainInactive_ = 0;
useSwapActive_ = 0;
useExtendedSwapActive_ = 0;
useNodePairSwapActive_ = 0;
usePathLns_ = 0;
useFullPathLns_ = 0;
useTspLns_ = 0;
useInactiveLns_ = 0;
useGlobalCheapestInsertionPathLns_ = 0;
useLocalCheapestInsertionPathLns_ = 0;
useGlobalCheapestInsertionExpensiveChainLns_ = 0;
useLocalCheapestInsertionExpensiveChainLns_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_LocalSearchNeighborhoodOperators_descriptor;
}
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstanceForType() {
return com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance();
}
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators build() {
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators buildPartial() {
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators result = new com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators(this);
result.useRelocate_ = useRelocate_;
result.useRelocatePair_ = useRelocatePair_;
result.useLightRelocatePair_ = useLightRelocatePair_;
result.useRelocateNeighbors_ = useRelocateNeighbors_;
result.useRelocateSubtrip_ = useRelocateSubtrip_;
result.useExchange_ = useExchange_;
result.useExchangePair_ = useExchangePair_;
result.useExchangeSubtrip_ = useExchangeSubtrip_;
result.useCross_ = useCross_;
result.useCrossExchange_ = useCrossExchange_;
result.useRelocateExpensiveChain_ = useRelocateExpensiveChain_;
result.useTwoOpt_ = useTwoOpt_;
result.useOrOpt_ = useOrOpt_;
result.useLinKernighan_ = useLinKernighan_;
result.useTspOpt_ = useTspOpt_;
result.useMakeActive_ = useMakeActive_;
result.useRelocateAndMakeActive_ = useRelocateAndMakeActive_;
result.useMakeInactive_ = useMakeInactive_;
result.useMakeChainInactive_ = useMakeChainInactive_;
result.useSwapActive_ = useSwapActive_;
result.useExtendedSwapActive_ = useExtendedSwapActive_;
result.useNodePairSwapActive_ = useNodePairSwapActive_;
result.usePathLns_ = usePathLns_;
result.useFullPathLns_ = useFullPathLns_;
result.useTspLns_ = useTspLns_;
result.useInactiveLns_ = useInactiveLns_;
result.useGlobalCheapestInsertionPathLns_ = useGlobalCheapestInsertionPathLns_;
result.useLocalCheapestInsertionPathLns_ = useLocalCheapestInsertionPathLns_;
result.useGlobalCheapestInsertionExpensiveChainLns_ = useGlobalCheapestInsertionExpensiveChainLns_;
result.useLocalCheapestInsertionExpensiveChainLns_ = useLocalCheapestInsertionExpensiveChainLns_;
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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators) {
return mergeFrom((com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators other) {
if (other == com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance()) return this;
if (other.useRelocate_ != 0) {
setUseRelocateValue(other.getUseRelocateValue());
}
if (other.useRelocatePair_ != 0) {
setUseRelocatePairValue(other.getUseRelocatePairValue());
}
if (other.useLightRelocatePair_ != 0) {
setUseLightRelocatePairValue(other.getUseLightRelocatePairValue());
}
if (other.useRelocateNeighbors_ != 0) {
setUseRelocateNeighborsValue(other.getUseRelocateNeighborsValue());
}
if (other.useRelocateSubtrip_ != 0) {
setUseRelocateSubtripValue(other.getUseRelocateSubtripValue());
}
if (other.useExchange_ != 0) {
setUseExchangeValue(other.getUseExchangeValue());
}
if (other.useExchangePair_ != 0) {
setUseExchangePairValue(other.getUseExchangePairValue());
}
if (other.useExchangeSubtrip_ != 0) {
setUseExchangeSubtripValue(other.getUseExchangeSubtripValue());
}
if (other.useCross_ != 0) {
setUseCrossValue(other.getUseCrossValue());
}
if (other.useCrossExchange_ != 0) {
setUseCrossExchangeValue(other.getUseCrossExchangeValue());
}
if (other.useRelocateExpensiveChain_ != 0) {
setUseRelocateExpensiveChainValue(other.getUseRelocateExpensiveChainValue());
}
if (other.useTwoOpt_ != 0) {
setUseTwoOptValue(other.getUseTwoOptValue());
}
if (other.useOrOpt_ != 0) {
setUseOrOptValue(other.getUseOrOptValue());
}
if (other.useLinKernighan_ != 0) {
setUseLinKernighanValue(other.getUseLinKernighanValue());
}
if (other.useTspOpt_ != 0) {
setUseTspOptValue(other.getUseTspOptValue());
}
if (other.useMakeActive_ != 0) {
setUseMakeActiveValue(other.getUseMakeActiveValue());
}
if (other.useRelocateAndMakeActive_ != 0) {
setUseRelocateAndMakeActiveValue(other.getUseRelocateAndMakeActiveValue());
}
if (other.useMakeInactive_ != 0) {
setUseMakeInactiveValue(other.getUseMakeInactiveValue());
}
if (other.useMakeChainInactive_ != 0) {
setUseMakeChainInactiveValue(other.getUseMakeChainInactiveValue());
}
if (other.useSwapActive_ != 0) {
setUseSwapActiveValue(other.getUseSwapActiveValue());
}
if (other.useExtendedSwapActive_ != 0) {
setUseExtendedSwapActiveValue(other.getUseExtendedSwapActiveValue());
}
if (other.useNodePairSwapActive_ != 0) {
setUseNodePairSwapActiveValue(other.getUseNodePairSwapActiveValue());
}
if (other.usePathLns_ != 0) {
setUsePathLnsValue(other.getUsePathLnsValue());
}
if (other.useFullPathLns_ != 0) {
setUseFullPathLnsValue(other.getUseFullPathLnsValue());
}
if (other.useTspLns_ != 0) {
setUseTspLnsValue(other.getUseTspLnsValue());
}
if (other.useInactiveLns_ != 0) {
setUseInactiveLnsValue(other.getUseInactiveLnsValue());
}
if (other.useGlobalCheapestInsertionPathLns_ != 0) {
setUseGlobalCheapestInsertionPathLnsValue(other.getUseGlobalCheapestInsertionPathLnsValue());
}
if (other.useLocalCheapestInsertionPathLns_ != 0) {
setUseLocalCheapestInsertionPathLnsValue(other.getUseLocalCheapestInsertionPathLnsValue());
}
if (other.useGlobalCheapestInsertionExpensiveChainLns_ != 0) {
setUseGlobalCheapestInsertionExpensiveChainLnsValue(other.getUseGlobalCheapestInsertionExpensiveChainLnsValue());
}
if (other.useLocalCheapestInsertionExpensiveChainLns_ != 0) {
setUseLocalCheapestInsertionExpensiveChainLnsValue(other.getUseLocalCheapestInsertionExpensiveChainLnsValue());
}
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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int useRelocate_ = 0;
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @return The enum numeric value on the wire for useRelocate.
*/
@java.lang.Override public int getUseRelocateValue() {
return useRelocate_;
}
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @param value The enum numeric value on the wire for useRelocate to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateValue(int value) {
useRelocate_ = value;
onChanged();
return this;
}
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @return The useRelocate.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseRelocate() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocate_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @param value The useRelocate to set.
* @return This builder for chaining.
*/
public Builder setUseRelocate(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useRelocate_ = value.getNumber();
onChanged();
return this;
}
/**
*
* --- Inter-route operators ---
* Operator which moves a single node to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> 3 -> [2] -> 4 -> 5
* 1 -> 3 -> 4 -> [2] -> 5
* 1 -> 2 -> 4 -> [3] -> 5
* 1 -> [4] -> 2 -> 3 -> 5
*
*
* .operations_research.OptionalBoolean use_relocate = 1;
* @return This builder for chaining.
*/
public Builder clearUseRelocate() {
useRelocate_ = 0;
onChanged();
return this;
}
private int useRelocatePair_ = 0;
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @return The enum numeric value on the wire for useRelocatePair.
*/
@java.lang.Override public int getUseRelocatePairValue() {
return useRelocatePair_;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @param value The enum numeric value on the wire for useRelocatePair to set.
* @return This builder for chaining.
*/
public Builder setUseRelocatePairValue(int value) {
useRelocatePair_ = value;
onChanged();
return this;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @return The useRelocatePair.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseRelocatePair() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocatePair_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @param value The useRelocatePair to set.
* @return This builder for chaining.
*/
public Builder setUseRelocatePair(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useRelocatePair_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes to another
* position where the first node of the pair must be before the second node
* on the same path. Compared to the light_relocate_pair operator, tries all
* possible positions of insertion of a pair (not only after another pair).
* Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
* first and last nodes of the path and can therefore not be moved, and
* (A, B) is a pair of nodes):
* 1 -> [A] -> 2 -> [B] -> 3
* 1 -> 2 -> [A] -> [B] -> 3
*
*
* .operations_research.OptionalBoolean use_relocate_pair = 2;
* @return This builder for chaining.
*/
public Builder clearUseRelocatePair() {
useRelocatePair_ = 0;
onChanged();
return this;
}
private int useLightRelocatePair_ = 0;
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @return The enum numeric value on the wire for useLightRelocatePair.
*/
@java.lang.Override public int getUseLightRelocatePairValue() {
return useLightRelocatePair_;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @param value The enum numeric value on the wire for useLightRelocatePair to set.
* @return This builder for chaining.
*/
public Builder setUseLightRelocatePairValue(int value) {
useLightRelocatePair_ = value;
onChanged();
return this;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @return The useLightRelocatePair.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseLightRelocatePair() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLightRelocatePair_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @param value The useLightRelocatePair to set.
* @return This builder for chaining.
*/
public Builder setUseLightRelocatePair(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useLightRelocatePair_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which moves a pair of pickup and delivery nodes after another
* pair.
* Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
* (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
* be moved, and (A, B) and (C, D) are pair of nodes):
* 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
* 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
*
*
* .operations_research.OptionalBoolean use_light_relocate_pair = 24;
* @return This builder for chaining.
*/
public Builder clearUseLightRelocatePair() {
useLightRelocatePair_ = 0;
onChanged();
return this;
}
private int useRelocateNeighbors_ = 0;
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @return The enum numeric value on the wire for useRelocateNeighbors.
*/
@java.lang.Override public int getUseRelocateNeighborsValue() {
return useRelocateNeighbors_;
}
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @param value The enum numeric value on the wire for useRelocateNeighbors to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateNeighborsValue(int value) {
useRelocateNeighbors_ = value;
onChanged();
return this;
}
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @return The useRelocateNeighbors.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseRelocateNeighbors() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateNeighbors_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @param value The useRelocateNeighbors to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateNeighbors(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useRelocateNeighbors_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Relocate neighborhood which moves chains of neighbors.
* The operator starts by relocating a node n after a node m, then continues
* moving nodes which were after n as long as the "cost" added is less than
* the "cost" of the arc (m, n). If the new chain doesn't respect the domain
* of next variables, it will try reordering the nodes until it finds a
* valid path.
* Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
* are first and last nodes of the path and can therefore not be moved, A
* must be performed before B, and A, D and E are located at the same
* place):
* 1 -> A -> C -> [B] -> D -> E -> 2
* 1 -> A -> C -> D -> [B] -> E -> 2
* 1 -> A -> C -> D -> E -> [B] -> 2
* 1 -> A -> B -> D -> [C] -> E -> 2
* 1 -> A -> B -> D -> E -> [C] -> 2
* 1 -> A -> [D] -> [E] -> B -> C -> 2
* 1 -> A -> B -> [D] -> [E] -> C -> 2
* 1 -> A -> [E] -> B -> C -> D -> 2
* 1 -> A -> B -> [E] -> C -> D -> 2
* 1 -> A -> B -> C -> [E] -> D -> 2
* This operator is extremelly useful to move chains of nodes which are
* located at the same place (for instance nodes part of a same stop).
*
*
* .operations_research.OptionalBoolean use_relocate_neighbors = 3;
* @return This builder for chaining.
*/
public Builder clearUseRelocateNeighbors() {
useRelocateNeighbors_ = 0;
onChanged();
return this;
}
private int useRelocateSubtrip_ = 0;
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @return The enum numeric value on the wire for useRelocateSubtrip.
*/
@java.lang.Override public int getUseRelocateSubtripValue() {
return useRelocateSubtrip_;
}
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @param value The enum numeric value on the wire for useRelocateSubtrip to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateSubtripValue(int value) {
useRelocateSubtrip_ = value;
onChanged();
return this;
}
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @return The useRelocateSubtrip.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseRelocateSubtrip() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateSubtrip_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @param value The useRelocateSubtrip to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateSubtrip(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useRelocateSubtrip_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Relocate neighborhood that moves subpaths all pickup and delivery
* pairs have both pickup and delivery inside the subpath or both outside
* the subpath. For instance, for given paths:
* 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
* 7 -> 9
* Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
* 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
* 7 -> 9
* 0 -> 5 -> 6 -> 8
* 7 -> A -> B -> A' -> B' -> 9
*
*
* .operations_research.OptionalBoolean use_relocate_subtrip = 25;
* @return This builder for chaining.
*/
public Builder clearUseRelocateSubtrip() {
useRelocateSubtrip_ = 0;
onChanged();
return this;
}
private int useExchange_ = 0;
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @return The enum numeric value on the wire for useExchange.
*/
@java.lang.Override public int getUseExchangeValue() {
return useExchange_;
}
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @param value The enum numeric value on the wire for useExchange to set.
* @return This builder for chaining.
*/
public Builder setUseExchangeValue(int value) {
useExchange_ = value;
onChanged();
return this;
}
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @return The useExchange.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseExchange() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExchange_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @param value The useExchange to set.
* @return This builder for chaining.
*/
public Builder setUseExchange(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useExchange_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which exchanges the positions of two nodes.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3] -> [2] -> 4 -> 5
* 1 -> [4] -> 3 -> [2] -> 5
* 1 -> 2 -> [4] -> [3] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange = 4;
* @return This builder for chaining.
*/
public Builder clearUseExchange() {
useExchange_ = 0;
onChanged();
return this;
}
private int useExchangePair_ = 0;
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @return The enum numeric value on the wire for useExchangePair.
*/
@java.lang.Override public int getUseExchangePairValue() {
return useExchangePair_;
}
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @param value The enum numeric value on the wire for useExchangePair to set.
* @return This builder for chaining.
*/
public Builder setUseExchangePairValue(int value) {
useExchangePair_ = value;
onChanged();
return this;
}
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @return The useExchangePair.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseExchangePair() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExchangePair_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @param value The useExchangePair to set.
* @return This builder for chaining.
*/
public Builder setUseExchangePair(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useExchangePair_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which exchanges the positions of two pair of nodes. Pairs
* correspond to the pickup and delivery pairs defined in the routing model.
* Possible neighbor for the paths
* 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
* (where (1, 3) and (4, 5) are first and last nodes of the paths and can
* therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
* 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
*
*
* .operations_research.OptionalBoolean use_exchange_pair = 22;
* @return This builder for chaining.
*/
public Builder clearUseExchangePair() {
useExchangePair_ = 0;
onChanged();
return this;
}
private int useExchangeSubtrip_ = 0;
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @return The enum numeric value on the wire for useExchangeSubtrip.
*/
@java.lang.Override public int getUseExchangeSubtripValue() {
return useExchangeSubtrip_;
}
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @param value The enum numeric value on the wire for useExchangeSubtrip to set.
* @return This builder for chaining.
*/
public Builder setUseExchangeSubtripValue(int value) {
useExchangeSubtrip_ = value;
onChanged();
return this;
}
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @return The useExchangeSubtrip.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseExchangeSubtrip() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExchangeSubtrip_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @param value The useExchangeSubtrip to set.
* @return This builder for chaining.
*/
public Builder setUseExchangeSubtrip(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useExchangeSubtrip_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which exchanges subtrips associated to two pairs of nodes,
* see use_relocate_subtrip for a definition of subtrips.
*
*
* .operations_research.OptionalBoolean use_exchange_subtrip = 26;
* @return This builder for chaining.
*/
public Builder clearUseExchangeSubtrip() {
useExchangeSubtrip_ = 0;
onChanged();
return this;
}
private int useCross_ = 0;
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @return The enum numeric value on the wire for useCross.
*/
@java.lang.Override public int getUseCrossValue() {
return useCross_;
}
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @param value The enum numeric value on the wire for useCross to set.
* @return This builder for chaining.
*/
public Builder setUseCrossValue(int value) {
useCross_ = value;
onChanged();
return this;
}
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @return The useCross.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseCross() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCross_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @param value The useCross to set.
* @return This builder for chaining.
*/
public Builder setUseCross(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useCross_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which cross exchanges the starting chains of 2 paths, including
* exchanging the whole paths.
* First and last nodes are not moved.
* Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
* (where (1, 5) and (6, 8) are first and last nodes of the paths and can
* therefore not be moved):
* 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8
* 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8
* 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8
*
*
* .operations_research.OptionalBoolean use_cross = 5;
* @return This builder for chaining.
*/
public Builder clearUseCross() {
useCross_ = 0;
onChanged();
return this;
}
private int useCrossExchange_ = 0;
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @return The enum numeric value on the wire for useCrossExchange.
*/
@java.lang.Override public int getUseCrossExchangeValue() {
return useCrossExchange_;
}
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @param value The enum numeric value on the wire for useCrossExchange to set.
* @return This builder for chaining.
*/
public Builder setUseCrossExchangeValue(int value) {
useCrossExchange_ = value;
onChanged();
return this;
}
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @return The useCrossExchange.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseCrossExchange() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCrossExchange_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @param value The useCrossExchange to set.
* @return This builder for chaining.
*/
public Builder setUseCrossExchange(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useCrossExchange_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Not implemented yet. TODO(b/68128619): Implement.
*
*
* .operations_research.OptionalBoolean use_cross_exchange = 6;
* @return This builder for chaining.
*/
public Builder clearUseCrossExchange() {
useCrossExchange_ = 0;
onChanged();
return this;
}
private int useRelocateExpensiveChain_ = 0;
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @return The enum numeric value on the wire for useRelocateExpensiveChain.
*/
@java.lang.Override public int getUseRelocateExpensiveChainValue() {
return useRelocateExpensiveChain_;
}
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @param value The enum numeric value on the wire for useRelocateExpensiveChain to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateExpensiveChainValue(int value) {
useRelocateExpensiveChain_ = value;
onChanged();
return this;
}
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @return The useRelocateExpensiveChain.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseRelocateExpensiveChain() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateExpensiveChain_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @param value The useRelocateExpensiveChain to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateExpensiveChain(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useRelocateExpensiveChain_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which detects the relocate_expensive_chain_num_arcs_to_consider
* most expensive arcs on a path, and moves the chain resulting from cutting
* pairs of arcs among these to another position.
* Possible neighbors for paths 1 -> 2 (empty) and
* 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
* most expensive arcs, and the chain resulting from breaking them is
* B -> C):
* 1 -> [B -> C] -> 2 3 -> A -> D -> 4
* 1 -> 2 3 -> [B -> C] -> A -> D -> 4
* 1 -> 2 3 -> A -> D -> [B -> C] -> 4
*
*
* .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
* @return This builder for chaining.
*/
public Builder clearUseRelocateExpensiveChain() {
useRelocateExpensiveChain_ = 0;
onChanged();
return this;
}
private int useTwoOpt_ = 0;
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @return The enum numeric value on the wire for useTwoOpt.
*/
@java.lang.Override public int getUseTwoOptValue() {
return useTwoOpt_;
}
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @param value The enum numeric value on the wire for useTwoOpt to set.
* @return This builder for chaining.
*/
public Builder setUseTwoOptValue(int value) {
useTwoOpt_ = value;
onChanged();
return this;
}
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @return The useTwoOpt.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseTwoOpt() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useTwoOpt_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @param value The useTwoOpt to set.
* @return This builder for chaining.
*/
public Builder setUseTwoOpt(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useTwoOpt_ = value.getNumber();
onChanged();
return this;
}
/**
*
* --- Intra-route operators ---
* Operator which reverves a sub-chain of a path. It is called TwoOpt
* because it breaks two arcs on the path; resulting paths are called
* two-optimal.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
* (where (1, 5) are first and last nodes of the path and can therefore not
* be moved):
* 1 -> [3 -> 2] -> 4 -> 5
* 1 -> [4 -> 3 -> 2] -> 5
* 1 -> 2 -> [4 -> 3] -> 5
*
*
* .operations_research.OptionalBoolean use_two_opt = 7;
* @return This builder for chaining.
*/
public Builder clearUseTwoOpt() {
useTwoOpt_ = 0;
onChanged();
return this;
}
private int useOrOpt_ = 0;
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @return The enum numeric value on the wire for useOrOpt.
*/
@java.lang.Override public int getUseOrOptValue() {
return useOrOpt_;
}
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @param value The enum numeric value on the wire for useOrOpt to set.
* @return This builder for chaining.
*/
public Builder setUseOrOptValue(int value) {
useOrOpt_ = value;
onChanged();
return this;
}
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @return The useOrOpt.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseOrOpt() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useOrOpt_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @param value The useOrOpt to set.
* @return This builder for chaining.
*/
public Builder setUseOrOpt(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useOrOpt_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which moves sub-chains of a path of length 1, 2 and 3 to another
* position in the same path.
* When the length of the sub-chain is 1, the operator simply moves a node
* to another position.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
* length of 2 (where (1, 5) are first and last nodes of the path and can
* therefore not be moved):
* 1 -> 4 -> [2 -> 3] -> 5
* 1 -> [3 -> 4] -> 2 -> 5
* The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
* path).
*
*
* .operations_research.OptionalBoolean use_or_opt = 8;
* @return This builder for chaining.
*/
public Builder clearUseOrOpt() {
useOrOpt_ = 0;
onChanged();
return this;
}
private int useLinKernighan_ = 0;
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @return The enum numeric value on the wire for useLinKernighan.
*/
@java.lang.Override public int getUseLinKernighanValue() {
return useLinKernighan_;
}
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @param value The enum numeric value on the wire for useLinKernighan to set.
* @return This builder for chaining.
*/
public Builder setUseLinKernighanValue(int value) {
useLinKernighan_ = value;
onChanged();
return this;
}
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @return The useLinKernighan.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseLinKernighan() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLinKernighan_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @param value The useLinKernighan to set.
* @return This builder for chaining.
*/
public Builder setUseLinKernighan(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useLinKernighan_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Lin-Kernighan operator.
* While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
* move followed by a series of 2-OPT moves. Returns a neighbor for which
* the global gain is positive.
*
*
* .operations_research.OptionalBoolean use_lin_kernighan = 9;
* @return This builder for chaining.
*/
public Builder clearUseLinKernighan() {
useLinKernighan_ = 0;
onChanged();
return this;
}
private int useTspOpt_ = 0;
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @return The enum numeric value on the wire for useTspOpt.
*/
@java.lang.Override public int getUseTspOptValue() {
return useTspOpt_;
}
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @param value The enum numeric value on the wire for useTspOpt to set.
* @return This builder for chaining.
*/
public Builder setUseTspOptValue(int value) {
useTspOpt_ = value;
onChanged();
return this;
}
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @return The useTspOpt.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseTspOpt() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useTspOpt_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @param value The useTspOpt to set.
* @return This builder for chaining.
*/
public Builder setUseTspOpt(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useTspOpt_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Sliding TSP operator.
* Uses an exact dynamic programming algorithm to solve the TSP
* corresponding to path sub-chains.
* For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
* nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
* cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
*
*
* .operations_research.OptionalBoolean use_tsp_opt = 10;
* @return This builder for chaining.
*/
public Builder clearUseTspOpt() {
useTspOpt_ = 0;
onChanged();
return this;
}
private int useMakeActive_ = 0;
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @return The enum numeric value on the wire for useMakeActive.
*/
@java.lang.Override public int getUseMakeActiveValue() {
return useMakeActive_;
}
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @param value The enum numeric value on the wire for useMakeActive to set.
* @return This builder for chaining.
*/
public Builder setUseMakeActiveValue(int value) {
useMakeActive_ = value;
onChanged();
return this;
}
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @return The useMakeActive.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseMakeActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useMakeActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @param value The useMakeActive to set.
* @return This builder for chaining.
*/
public Builder setUseMakeActive(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useMakeActive_ = value.getNumber();
onChanged();
return this;
}
/**
*
* --- Operators on inactive nodes ---
* Operator which inserts an inactive node into a path.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 2 -> 3 -> 4
* 1 -> 2 -> [5] -> 3 -> 4
* 1 -> 2 -> 3 -> [5] -> 4
*
*
* .operations_research.OptionalBoolean use_make_active = 11;
* @return This builder for chaining.
*/
public Builder clearUseMakeActive() {
useMakeActive_ = 0;
onChanged();
return this;
}
private int useRelocateAndMakeActive_ = 0;
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @return The enum numeric value on the wire for useRelocateAndMakeActive.
*/
@java.lang.Override public int getUseRelocateAndMakeActiveValue() {
return useRelocateAndMakeActive_;
}
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @param value The enum numeric value on the wire for useRelocateAndMakeActive to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateAndMakeActiveValue(int value) {
useRelocateAndMakeActive_ = value;
onChanged();
return this;
}
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @return The useRelocateAndMakeActive.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseRelocateAndMakeActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useRelocateAndMakeActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @param value The useRelocateAndMakeActive to set.
* @return This builder for chaining.
*/
public Builder setUseRelocateAndMakeActive(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useRelocateAndMakeActive_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which relocates a node while making an inactive one active.
* As of 3/2017, the operator is limited to two kinds of moves:
* - Relocating a node and replacing it by an inactive node.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 3 -> 5, 2 -> 4 -> 6.
* - Relocating a node and inserting an inactive node next to it.
* Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
* (where 1,2 and 5,6 are first and last nodes of paths) is:
* 1 -> 4 -> 3 -> 5, 2 -> 6.
*
*
* .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
* @return This builder for chaining.
*/
public Builder clearUseRelocateAndMakeActive() {
useRelocateAndMakeActive_ = 0;
onChanged();
return this;
}
private int useMakeInactive_ = 0;
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @return The enum numeric value on the wire for useMakeInactive.
*/
@java.lang.Override public int getUseMakeInactiveValue() {
return useMakeInactive_;
}
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @param value The enum numeric value on the wire for useMakeInactive to set.
* @return This builder for chaining.
*/
public Builder setUseMakeInactiveValue(int value) {
useMakeInactive_ = value;
onChanged();
return this;
}
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @return The useMakeInactive.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseMakeInactive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useMakeInactive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @param value The useMakeInactive to set.
* @return This builder for chaining.
*/
public Builder setUseMakeInactive(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useMakeInactive_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which makes path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_inactive = 12;
* @return This builder for chaining.
*/
public Builder clearUseMakeInactive() {
useMakeInactive_ = 0;
onChanged();
return this;
}
private int useMakeChainInactive_ = 0;
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @return The enum numeric value on the wire for useMakeChainInactive.
*/
@java.lang.Override public int getUseMakeChainInactiveValue() {
return useMakeChainInactive_;
}
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @param value The enum numeric value on the wire for useMakeChainInactive to set.
* @return This builder for chaining.
*/
public Builder setUseMakeChainInactiveValue(int value) {
useMakeChainInactive_ = value;
onChanged();
return this;
}
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @return The useMakeChainInactive.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseMakeChainInactive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useMakeChainInactive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @param value The useMakeChainInactive to set.
* @return This builder for chaining.
*/
public Builder setUseMakeChainInactive(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useMakeChainInactive_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which makes a "chain" of path nodes inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
* and last nodes of the path) are:
* 1 -> 3 -> 4 with 2 inactive
* 1 -> 2 -> 4 with 3 inactive
* 1 -> 4 with 2 and 3 inactive
*
*
* .operations_research.OptionalBoolean use_make_chain_inactive = 13;
* @return This builder for chaining.
*/
public Builder clearUseMakeChainInactive() {
useMakeChainInactive_ = 0;
onChanged();
return this;
}
private int useSwapActive_ = 0;
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @return The enum numeric value on the wire for useSwapActive.
*/
@java.lang.Override public int getUseSwapActiveValue() {
return useSwapActive_;
}
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @param value The enum numeric value on the wire for useSwapActive to set.
* @return This builder for chaining.
*/
public Builder setUseSwapActiveValue(int value) {
useSwapActive_ = value;
onChanged();
return this;
}
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @return The useSwapActive.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseSwapActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useSwapActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @param value The useSwapActive to set.
* @return This builder for chaining.
*/
public Builder setUseSwapActive(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useSwapActive_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which replaces an active node by an inactive one.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_swap_active = 14;
* @return This builder for chaining.
*/
public Builder clearUseSwapActive() {
useSwapActive_ = 0;
onChanged();
return this;
}
private int useExtendedSwapActive_ = 0;
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @return The enum numeric value on the wire for useExtendedSwapActive.
*/
@java.lang.Override public int getUseExtendedSwapActiveValue() {
return useExtendedSwapActive_;
}
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @param value The enum numeric value on the wire for useExtendedSwapActive to set.
* @return This builder for chaining.
*/
public Builder setUseExtendedSwapActiveValue(int value) {
useExtendedSwapActive_ = value;
onChanged();
return this;
}
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @return The useExtendedSwapActive.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseExtendedSwapActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useExtendedSwapActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @param value The useExtendedSwapActive to set.
* @return This builder for chaining.
*/
public Builder setUseExtendedSwapActive(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useExtendedSwapActive_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which makes an inactive node active and an active one inactive.
* It is similar to SwapActiveOperator excepts that it tries to insert the
* inactive node in all possible positions instead of just the position of
* the node made inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path) are:
* 1 -> [5] -> 3 -> 4 with 2 inactive
* 1 -> 3 -> [5] -> 4 with 2 inactive
* 1 -> [5] -> 2 -> 4 with 3 inactive
* 1 -> 2 -> [5] -> 4 with 3 inactive
*
*
* .operations_research.OptionalBoolean use_extended_swap_active = 15;
* @return This builder for chaining.
*/
public Builder clearUseExtendedSwapActive() {
useExtendedSwapActive_ = 0;
onChanged();
return this;
}
private int useNodePairSwapActive_ = 0;
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @return The enum numeric value on the wire for useNodePairSwapActive.
*/
@java.lang.Override public int getUseNodePairSwapActiveValue() {
return useNodePairSwapActive_;
}
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @param value The enum numeric value on the wire for useNodePairSwapActive to set.
* @return This builder for chaining.
*/
public Builder setUseNodePairSwapActiveValue(int value) {
useNodePairSwapActive_ = value;
onChanged();
return this;
}
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @return The useNodePairSwapActive.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseNodePairSwapActive() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useNodePairSwapActive_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @param value The useNodePairSwapActive to set.
* @return This builder for chaining.
*/
public Builder setUseNodePairSwapActive(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useNodePairSwapActive_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which makes an inactive node active and an active pair of nodes
* inactive OR makes an inactive pair of nodes active and an active node
* inactive.
* Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
* (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
* of nodes) are:
* 1 -> [5] -> 4 with (2,3) inactive
* Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
* (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
* of nodes) are:
* 1 -> [4] -> [5] -> 3 with 2 inactive
*
*
* .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
* @return This builder for chaining.
*/
public Builder clearUseNodePairSwapActive() {
useNodePairSwapActive_ = 0;
onChanged();
return this;
}
private int usePathLns_ = 0;
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @return The enum numeric value on the wire for usePathLns.
*/
@java.lang.Override public int getUsePathLnsValue() {
return usePathLns_;
}
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @param value The enum numeric value on the wire for usePathLns to set.
* @return This builder for chaining.
*/
public Builder setUsePathLnsValue(int value) {
usePathLns_ = value;
onChanged();
return this;
}
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @return The usePathLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUsePathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(usePathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @param value The usePathLns to set.
* @return This builder for chaining.
*/
public Builder setUsePathLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
usePathLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* --- Large neighborhood search operators ---
* Operator which relaxes two sub-chains of three consecutive arcs each.
* Each sub-chain is defined by a start node and the next three arcs. Those
* six arcs are relaxed to build a new neighbor.
* PATH_LNS explores all possible pairs of starting nodes and so defines
* n^2 neighbors, n being the number of nodes.
* Note that the two sub-chains can be part of the same path; they even may
* overlap.
*
*
* .operations_research.OptionalBoolean use_path_lns = 16;
* @return This builder for chaining.
*/
public Builder clearUsePathLns() {
usePathLns_ = 0;
onChanged();
return this;
}
private int useFullPathLns_ = 0;
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @return The enum numeric value on the wire for useFullPathLns.
*/
@java.lang.Override public int getUseFullPathLnsValue() {
return useFullPathLns_;
}
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @param value The enum numeric value on the wire for useFullPathLns to set.
* @return This builder for chaining.
*/
public Builder setUseFullPathLnsValue(int value) {
useFullPathLns_ = value;
onChanged();
return this;
}
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @return The useFullPathLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseFullPathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useFullPathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @param value The useFullPathLns to set.
* @return This builder for chaining.
*/
public Builder setUseFullPathLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useFullPathLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which relaxes one entire path and all unactive nodes.
*
*
* .operations_research.OptionalBoolean use_full_path_lns = 17;
* @return This builder for chaining.
*/
public Builder clearUseFullPathLns() {
useFullPathLns_ = 0;
onChanged();
return this;
}
private int useTspLns_ = 0;
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @return The enum numeric value on the wire for useTspLns.
*/
@java.lang.Override public int getUseTspLnsValue() {
return useTspLns_;
}
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @param value The enum numeric value on the wire for useTspLns to set.
* @return This builder for chaining.
*/
public Builder setUseTspLnsValue(int value) {
useTspLns_ = value;
onChanged();
return this;
}
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @return The useTspLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseTspLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useTspLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @param value The useTspLns to set.
* @return This builder for chaining.
*/
public Builder setUseTspLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useTspLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* TSP-base LNS.
* Randomly merges consecutive nodes until n "meta"-nodes remain and solves
* the corresponding TSP.
* This defines an "unlimited" neighborhood which must be stopped by search
* limits. To force diversification, the operator iteratively forces each
* node to serve as base of a meta-node.
*
*
* .operations_research.OptionalBoolean use_tsp_lns = 18;
* @return This builder for chaining.
*/
public Builder clearUseTspLns() {
useTspLns_ = 0;
onChanged();
return this;
}
private int useInactiveLns_ = 0;
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @return The enum numeric value on the wire for useInactiveLns.
*/
@java.lang.Override public int getUseInactiveLnsValue() {
return useInactiveLns_;
}
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @param value The enum numeric value on the wire for useInactiveLns to set.
* @return This builder for chaining.
*/
public Builder setUseInactiveLnsValue(int value) {
useInactiveLns_ = value;
onChanged();
return this;
}
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @return The useInactiveLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseInactiveLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useInactiveLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @param value The useInactiveLns to set.
* @return This builder for chaining.
*/
public Builder setUseInactiveLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useInactiveLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Operator which relaxes all inactive nodes and one sub-chain of six
* consecutive arcs. That way the path can be improved by inserting inactive
* nodes or swaping arcs.
*
*
* .operations_research.OptionalBoolean use_inactive_lns = 19;
* @return This builder for chaining.
*/
public Builder clearUseInactiveLns() {
useInactiveLns_ = 0;
onChanged();
return this;
}
private int useGlobalCheapestInsertionPathLns_ = 0;
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @return The enum numeric value on the wire for useGlobalCheapestInsertionPathLns.
*/
@java.lang.Override public int getUseGlobalCheapestInsertionPathLnsValue() {
return useGlobalCheapestInsertionPathLns_;
}
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @param value The enum numeric value on the wire for useGlobalCheapestInsertionPathLns to set.
* @return This builder for chaining.
*/
public Builder setUseGlobalCheapestInsertionPathLnsValue(int value) {
useGlobalCheapestInsertionPathLns_ = value;
onChanged();
return this;
}
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @return The useGlobalCheapestInsertionPathLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseGlobalCheapestInsertionPathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useGlobalCheapestInsertionPathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @param value The useGlobalCheapestInsertionPathLns to set.
* @return This builder for chaining.
*/
public Builder setUseGlobalCheapestInsertionPathLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useGlobalCheapestInsertionPathLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* --- LNS-like large neighborhood search operators using heuristics ---
* Operator which makes all nodes on a route unperformed, and reinserts them
* using the GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
* @return This builder for chaining.
*/
public Builder clearUseGlobalCheapestInsertionPathLns() {
useGlobalCheapestInsertionPathLns_ = 0;
onChanged();
return this;
}
private int useLocalCheapestInsertionPathLns_ = 0;
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @return The enum numeric value on the wire for useLocalCheapestInsertionPathLns.
*/
@java.lang.Override public int getUseLocalCheapestInsertionPathLnsValue() {
return useLocalCheapestInsertionPathLns_;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @param value The enum numeric value on the wire for useLocalCheapestInsertionPathLns to set.
* @return This builder for chaining.
*/
public Builder setUseLocalCheapestInsertionPathLnsValue(int value) {
useLocalCheapestInsertionPathLns_ = value;
onChanged();
return this;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @return The useLocalCheapestInsertionPathLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseLocalCheapestInsertionPathLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLocalCheapestInsertionPathLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @param value The useLocalCheapestInsertionPathLns to set.
* @return This builder for chaining.
*/
public Builder setUseLocalCheapestInsertionPathLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useLocalCheapestInsertionPathLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
* @return This builder for chaining.
*/
public Builder clearUseLocalCheapestInsertionPathLns() {
useLocalCheapestInsertionPathLns_ = 0;
onChanged();
return this;
}
private int useGlobalCheapestInsertionExpensiveChainLns_ = 0;
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @return The enum numeric value on the wire for useGlobalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override public int getUseGlobalCheapestInsertionExpensiveChainLnsValue() {
return useGlobalCheapestInsertionExpensiveChainLns_;
}
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @param value The enum numeric value on the wire for useGlobalCheapestInsertionExpensiveChainLns to set.
* @return This builder for chaining.
*/
public Builder setUseGlobalCheapestInsertionExpensiveChainLnsValue(int value) {
useGlobalCheapestInsertionExpensiveChainLns_ = value;
onChanged();
return this;
}
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @return The useGlobalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseGlobalCheapestInsertionExpensiveChainLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useGlobalCheapestInsertionExpensiveChainLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @param value The useGlobalCheapestInsertionExpensiveChainLns to set.
* @return This builder for chaining.
*/
public Builder setUseGlobalCheapestInsertionExpensiveChainLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useGlobalCheapestInsertionExpensiveChainLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
* most expensive arcs on a route, makes the nodes in between pairs of these
* expensive arcs unperformed, and reinserts them using the
* GlobalCheapestInsertion heuristic.
*
*
* .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
* @return This builder for chaining.
*/
public Builder clearUseGlobalCheapestInsertionExpensiveChainLns() {
useGlobalCheapestInsertionExpensiveChainLns_ = 0;
onChanged();
return this;
}
private int useLocalCheapestInsertionExpensiveChainLns_ = 0;
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @return The enum numeric value on the wire for useLocalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override public int getUseLocalCheapestInsertionExpensiveChainLnsValue() {
return useLocalCheapestInsertionExpensiveChainLns_;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @param value The enum numeric value on the wire for useLocalCheapestInsertionExpensiveChainLns to set.
* @return This builder for chaining.
*/
public Builder setUseLocalCheapestInsertionExpensiveChainLnsValue(int value) {
useLocalCheapestInsertionExpensiveChainLns_ = value;
onChanged();
return this;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @return The useLocalCheapestInsertionExpensiveChainLns.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseLocalCheapestInsertionExpensiveChainLns() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useLocalCheapestInsertionExpensiveChainLns_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @param value The useLocalCheapestInsertionExpensiveChainLns to set.
* @return This builder for chaining.
*/
public Builder setUseLocalCheapestInsertionExpensiveChainLns(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useLocalCheapestInsertionExpensiveChainLns_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Same as above but using LocalCheapestInsertion as a heuristic for
* insertion.
*
*
* .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
* @return This builder for chaining.
*/
public Builder clearUseLocalCheapestInsertionExpensiveChainLns() {
useLocalCheapestInsertionExpensiveChainLns_ = 0;
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.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
}
// @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
private static final com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators();
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser
PARSER = new com.google.protobuf.AbstractParser() {
@java.lang.Override
public LocalSearchNeighborhoodOperators parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new LocalSearchNeighborhoodOperators(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.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}
public static final int FIRST_SOLUTION_STRATEGY_FIELD_NUMBER = 1;
private int firstSolutionStrategy_;
/**
*
* First solution strategies, used as starting point of local search.
*
*
* .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
* @return The enum numeric value on the wire for firstSolutionStrategy.
*/
@java.lang.Override public int getFirstSolutionStrategyValue() {
return firstSolutionStrategy_;
}
/**
*
* First solution strategies, used as starting point of local search.
*
*
* .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
* @return The firstSolutionStrategy.
*/
@java.lang.Override public com.google.ortools.constraintsolver.FirstSolutionStrategy.Value getFirstSolutionStrategy() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.FirstSolutionStrategy.Value result = com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.valueOf(firstSolutionStrategy_);
return result == null ? com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNRECOGNIZED : result;
}
public static final int USE_UNFILTERED_FIRST_SOLUTION_STRATEGY_FIELD_NUMBER = 2;
private boolean useUnfilteredFirstSolutionStrategy_;
/**
*
* --- Advanced first solutions strategy settings ---
* Don't touch these unless you know what you are doing.
* Use filtered version of first solution strategy if available.
*
*
* bool use_unfiltered_first_solution_strategy = 2;
* @return The useUnfilteredFirstSolutionStrategy.
*/
@java.lang.Override
public boolean getUseUnfilteredFirstSolutionStrategy() {
return useUnfilteredFirstSolutionStrategy_;
}
public static final int SAVINGS_NEIGHBORS_RATIO_FIELD_NUMBER = 14;
private double savingsNeighborsRatio_;
/**
*
* Parameters specific to the Savings first solution heuristic.
* Ratio (in ]0, 1]) of neighbors to consider for each node when constructing
* the savings. If unspecified, its value is considered to be 1.0.
*
*
* double savings_neighbors_ratio = 14;
* @return The savingsNeighborsRatio.
*/
@java.lang.Override
public double getSavingsNeighborsRatio() {
return savingsNeighborsRatio_;
}
public static final int SAVINGS_MAX_MEMORY_USAGE_BYTES_FIELD_NUMBER = 23;
private double savingsMaxMemoryUsageBytes_;
/**
*
* The number of neighbors considered for each node in the Savings heuristic
* is chosen so that the space used to store the savings doesn't exceed
* savings_max_memory_usage_bytes, which must be in ]0, 1e10].
* NOTE: If both savings_neighbors_ratio and savings_max_memory_usage_bytes
* are specified, the number of neighbors considered for each node will be the
* minimum of the two numbers determined by these parameters.
*
*
* double savings_max_memory_usage_bytes = 23;
* @return The savingsMaxMemoryUsageBytes.
*/
@java.lang.Override
public double getSavingsMaxMemoryUsageBytes() {
return savingsMaxMemoryUsageBytes_;
}
public static final int SAVINGS_ADD_REVERSE_ARCS_FIELD_NUMBER = 15;
private boolean savingsAddReverseArcs_;
/**
*
* Add savings related to reverse arcs when finding the nearest neighbors
* of the nodes.
*
*
* bool savings_add_reverse_arcs = 15;
* @return The savingsAddReverseArcs.
*/
@java.lang.Override
public boolean getSavingsAddReverseArcs() {
return savingsAddReverseArcs_;
}
public static final int SAVINGS_ARC_COEFFICIENT_FIELD_NUMBER = 18;
private double savingsArcCoefficient_;
/**
*
* Coefficient of the cost of the arc for which the saving value is being
* computed:
* Saving(a-->b) = Cost(a-->end) + Cost(start-->b)
* - savings_arc_coefficient * Cost(a-->b)
* This parameter must be greater than 0, and its default value is 1.
*
*
* double savings_arc_coefficient = 18;
* @return The savingsArcCoefficient.
*/
@java.lang.Override
public double getSavingsArcCoefficient() {
return savingsArcCoefficient_;
}
public static final int SAVINGS_PARALLEL_ROUTES_FIELD_NUMBER = 19;
private boolean savingsParallelRoutes_;
/**
*
* When true, the routes are built in parallel, sequentially otherwise.
*
*
* bool savings_parallel_routes = 19;
* @return The savingsParallelRoutes.
*/
@java.lang.Override
public boolean getSavingsParallelRoutes() {
return savingsParallelRoutes_;
}
public static final int CHEAPEST_INSERTION_FARTHEST_SEEDS_RATIO_FIELD_NUMBER = 16;
private double cheapestInsertionFarthestSeedsRatio_;
/**
*
* Ratio (between 0 and 1) of available vehicles in the model on which
* farthest nodes of the model are inserted as seeds in the
* GlobalCheapestInsertion first solution heuristic.
*
*
* double cheapest_insertion_farthest_seeds_ratio = 16;
* @return The cheapestInsertionFarthestSeedsRatio.
*/
@java.lang.Override
public double getCheapestInsertionFarthestSeedsRatio() {
return cheapestInsertionFarthestSeedsRatio_;
}
public static final int CHEAPEST_INSERTION_FIRST_SOLUTION_NEIGHBORS_RATIO_FIELD_NUMBER = 21;
private double cheapestInsertionFirstSolutionNeighborsRatio_;
/**
*
* Ratio (in ]0, 1]) of neighbors to consider for each node when creating
* new insertions in the parallel/sequential cheapest insertion heuristic.
* If not overridden, its default value is 1, meaning all neighbors will be
* considered.
* Neighbors ratio for the first solution heuristic.
*
*
* double cheapest_insertion_first_solution_neighbors_ratio = 21;
* @return The cheapestInsertionFirstSolutionNeighborsRatio.
*/
@java.lang.Override
public double getCheapestInsertionFirstSolutionNeighborsRatio() {
return cheapestInsertionFirstSolutionNeighborsRatio_;
}
public static final int CHEAPEST_INSERTION_LS_OPERATOR_NEIGHBORS_RATIO_FIELD_NUMBER = 31;
private double cheapestInsertionLsOperatorNeighborsRatio_;
/**
*
* Neighbors ratio for the heuristic when used in a local search operator (see
* local_search_operators.use_global_cheapest_insertion_path_lns and
* local_search_operators.use_global_cheapest_insertion_chain_lns below).
*
*
* double cheapest_insertion_ls_operator_neighbors_ratio = 31;
* @return The cheapestInsertionLsOperatorNeighborsRatio.
*/
@java.lang.Override
public double getCheapestInsertionLsOperatorNeighborsRatio() {
return cheapestInsertionLsOperatorNeighborsRatio_;
}
public static final int CHRISTOFIDES_USE_MINIMUM_MATCHING_FIELD_NUMBER = 30;
private boolean christofidesUseMinimumMatching_;
/**
*
* If true use minimum matching instead of minimal matching in the
* Christofides algorithm.
*
*
* bool christofides_use_minimum_matching = 30;
* @return The christofidesUseMinimumMatching.
*/
@java.lang.Override
public boolean getChristofidesUseMinimumMatching() {
return christofidesUseMinimumMatching_;
}
public static final int LOCAL_SEARCH_OPERATORS_FIELD_NUMBER = 3;
private com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators localSearchOperators_;
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
* @return Whether the localSearchOperators field is set.
*/
@java.lang.Override
public boolean hasLocalSearchOperators() {
return localSearchOperators_ != null;
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
* @return The localSearchOperators.
*/
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getLocalSearchOperators() {
return localSearchOperators_ == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance() : localSearchOperators_;
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder getLocalSearchOperatorsOrBuilder() {
return getLocalSearchOperators();
}
public static final int RELOCATE_EXPENSIVE_CHAIN_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER = 20;
private int relocateExpensiveChainNumArcsToConsider_;
/**
*
* Number of expensive arcs to consider cutting in the RelocateExpensiveChain
* neighborhood operator (see
* LocalSearchNeighborhoodOperators.use_relocate_expensive_chain()).
* This parameter must be greater than 2.
* NOTE(user): The number of neighbors generated by the operator for
* relocate_expensive_chain_num_arcs_to_consider = K is around
* K*(K-1)/2 * number_of_routes * number_of_nodes.
*
*
* int32 relocate_expensive_chain_num_arcs_to_consider = 20;
* @return The relocateExpensiveChainNumArcsToConsider.
*/
@java.lang.Override
public int getRelocateExpensiveChainNumArcsToConsider() {
return relocateExpensiveChainNumArcsToConsider_;
}
public static final int HEURISTIC_EXPENSIVE_CHAIN_LNS_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER = 32;
private int heuristicExpensiveChainLnsNumArcsToConsider_;
/**
*
* Number of expensive arcs to consider cutting in the
* FilteredHeuristicExpensiveChainLNSOperator operator.
*
*
* int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
* @return The heuristicExpensiveChainLnsNumArcsToConsider.
*/
@java.lang.Override
public int getHeuristicExpensiveChainLnsNumArcsToConsider() {
return heuristicExpensiveChainLnsNumArcsToConsider_;
}
public static final int LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER = 4;
private int localSearchMetaheuristic_;
/**
*
* Local search metaheuristics used to guide the search.
*
*
* .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
* @return The enum numeric value on the wire for localSearchMetaheuristic.
*/
@java.lang.Override public int getLocalSearchMetaheuristicValue() {
return localSearchMetaheuristic_;
}
/**
*
* Local search metaheuristics used to guide the search.
*
*
* .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
* @return The localSearchMetaheuristic.
*/
@java.lang.Override public com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value getLocalSearchMetaheuristic() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value result = com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.valueOf(localSearchMetaheuristic_);
return result == null ? com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNRECOGNIZED : result;
}
public static final int GUIDED_LOCAL_SEARCH_LAMBDA_COEFFICIENT_FIELD_NUMBER = 5;
private double guidedLocalSearchLambdaCoefficient_;
/**
*
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Lambda coefficient used to penalize arc costs when GUIDED_LOCAL_SEARCH is
* used. Must be positive.
*
*
* double guided_local_search_lambda_coefficient = 5;
* @return The guidedLocalSearchLambdaCoefficient.
*/
@java.lang.Override
public double getGuidedLocalSearchLambdaCoefficient() {
return guidedLocalSearchLambdaCoefficient_;
}
public static final int USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER = 6;
private boolean useDepthFirstSearch_;
/**
*
* --- Search control ---
* If true, the solver should use depth-first search rather than local search
* to solve the problem.
*
*
* bool use_depth_first_search = 6;
* @return The useDepthFirstSearch.
*/
@java.lang.Override
public boolean getUseDepthFirstSearch() {
return useDepthFirstSearch_;
}
public static final int USE_CP_FIELD_NUMBER = 28;
private int useCp_;
/**
*
* If true, use the CP solver to find a solution. Either local or depth-first
* search will be used depending on the value of use_depth_first_search. Will
* be run before the CP-SAT solver (cf. use_cp_sat).
*
*
* .operations_research.OptionalBoolean use_cp = 28;
* @return The enum numeric value on the wire for useCp.
*/
@java.lang.Override public int getUseCpValue() {
return useCp_;
}
/**
*
* If true, use the CP solver to find a solution. Either local or depth-first
* search will be used depending on the value of use_depth_first_search. Will
* be run before the CP-SAT solver (cf. use_cp_sat).
*
*
* .operations_research.OptionalBoolean use_cp = 28;
* @return The useCp.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseCp() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCp_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int USE_CP_SAT_FIELD_NUMBER = 27;
private int useCpSat_;
/**
*
* If true, use the CP-SAT solver to find a solution. If use_cp is also true,
* the CP-SAT solver will be run after the CP solver if there is time
* remaining and will use the CP solution as a hint for the CP-SAT search.
* As of 5/2019, only TSP models can be solved.
*
*
* .operations_research.OptionalBoolean use_cp_sat = 27;
* @return The enum numeric value on the wire for useCpSat.
*/
@java.lang.Override public int getUseCpSatValue() {
return useCpSat_;
}
/**
*
* If true, use the CP-SAT solver to find a solution. If use_cp is also true,
* the CP-SAT solver will be run after the CP solver if there is time
* remaining and will use the CP solution as a hint for the CP-SAT search.
* As of 5/2019, only TSP models can be solved.
*
*
* .operations_research.OptionalBoolean use_cp_sat = 27;
* @return The useCpSat.
*/
@java.lang.Override public com.google.ortools.util.OptionalBoolean getUseCpSat() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCpSat_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
public static final int CONTINUOUS_SCHEDULING_SOLVER_FIELD_NUMBER = 33;
private int continuousSchedulingSolver_;
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
* @return The enum numeric value on the wire for continuousSchedulingSolver.
*/
@java.lang.Override public int getContinuousSchedulingSolverValue() {
return continuousSchedulingSolver_;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
* @return The continuousSchedulingSolver.
*/
@java.lang.Override public com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver getContinuousSchedulingSolver() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver result = com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.valueOf(continuousSchedulingSolver_);
return result == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNRECOGNIZED : result;
}
public static final int MIXED_INTEGER_SCHEDULING_SOLVER_FIELD_NUMBER = 34;
private int mixedIntegerSchedulingSolver_;
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
* @return The enum numeric value on the wire for mixedIntegerSchedulingSolver.
*/
@java.lang.Override public int getMixedIntegerSchedulingSolverValue() {
return mixedIntegerSchedulingSolver_;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
* @return The mixedIntegerSchedulingSolver.
*/
@java.lang.Override public com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver getMixedIntegerSchedulingSolver() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver result = com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.valueOf(mixedIntegerSchedulingSolver_);
return result == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNRECOGNIZED : result;
}
public static final int OPTIMIZATION_STEP_FIELD_NUMBER = 7;
private double optimizationStep_;
/**
*
* Minimum step by which the solution must be improved in local search. 0
* means "unspecified". If this value is fractional, it will get rounded to
* the nearest integer.
*
*
* double optimization_step = 7;
* @return The optimizationStep.
*/
@java.lang.Override
public double getOptimizationStep() {
return optimizationStep_;
}
public static final int NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER = 17;
private int numberOfSolutionsToCollect_;
/**
*
* Number of solutions to collect during the search. Corresponds to the best
* solutions found during the search. 0 means "unspecified".
*
*
* int32 number_of_solutions_to_collect = 17;
* @return The numberOfSolutionsToCollect.
*/
@java.lang.Override
public int getNumberOfSolutionsToCollect() {
return numberOfSolutionsToCollect_;
}
public static final int SOLUTION_LIMIT_FIELD_NUMBER = 8;
private long solutionLimit_;
/**
*
* -- Search limits --
* Limit to the number of solutions generated during the search. 0 means
* "unspecified".
*
*
* int64 solution_limit = 8;
* @return The solutionLimit.
*/
@java.lang.Override
public long getSolutionLimit() {
return solutionLimit_;
}
public static final int TIME_LIMIT_FIELD_NUMBER = 9;
private com.google.protobuf.Duration timeLimit_;
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
* @return Whether the timeLimit field is set.
*/
@java.lang.Override
public boolean hasTimeLimit() {
return timeLimit_ != null;
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
* @return The timeLimit.
*/
@java.lang.Override
public com.google.protobuf.Duration getTimeLimit() {
return timeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
@java.lang.Override
public com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder() {
return getTimeLimit();
}
public static final int LNS_TIME_LIMIT_FIELD_NUMBER = 10;
private com.google.protobuf.Duration lnsTimeLimit_;
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
* @return Whether the lnsTimeLimit field is set.
*/
@java.lang.Override
public boolean hasLnsTimeLimit() {
return lnsTimeLimit_ != null;
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
* @return The lnsTimeLimit.
*/
@java.lang.Override
public com.google.protobuf.Duration getLnsTimeLimit() {
return lnsTimeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
@java.lang.Override
public com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder() {
return getLnsTimeLimit();
}
public static final int USE_FULL_PROPAGATION_FIELD_NUMBER = 11;
private boolean useFullPropagation_;
/**
*
* --- Propagation control ---
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Use constraints with full propagation in routing model (instead of 'light'
* propagation only). Full propagation is only necessary when using
* depth-first search or for models which require strong propagation to
* finalize the value of secondary variables.
* Changing this setting to true will slow down the search in most cases and
* increase memory consumption in all cases.
*
*
* bool use_full_propagation = 11;
* @return The useFullPropagation.
*/
@java.lang.Override
public boolean getUseFullPropagation() {
return useFullPropagation_;
}
public static final int LOG_SEARCH_FIELD_NUMBER = 13;
private boolean logSearch_;
/**
*
* --- Miscellaneous ---
* Some of these are advanced settings which should not be modified unless you
* know what you are doing.
* Activates search logging. For each solution found during the search, the
* following will be displayed: its objective value, the maximum objective
* value since the beginning of the search, the elapsed time since the
* beginning of the search, the number of branches explored in the search
* tree, the number of failures in the search tree, the depth of the search
* tree, the number of local search neighbors explored, the number of local
* search neighbors filtered by local search filters, the number of local
* search neighbors accepted, the total memory used and the percentage of the
* search done.
*
*
* bool log_search = 13;
* @return The logSearch.
*/
@java.lang.Override
public boolean getLogSearch() {
return logSearch_;
}
public static final int LOG_COST_SCALING_FACTOR_FIELD_NUMBER = 22;
private double logCostScalingFactor_;
/**
*
* In logs, cost values will be scaled and offset by the given values in the
* following way: log_cost_scaling_factor * (cost + log_cost_offset)
*
*
* double log_cost_scaling_factor = 22;
* @return The logCostScalingFactor.
*/
@java.lang.Override
public double getLogCostScalingFactor() {
return logCostScalingFactor_;
}
public static final int LOG_COST_OFFSET_FIELD_NUMBER = 29;
private double logCostOffset_;
/**
* double log_cost_offset = 29;
* @return The logCostOffset.
*/
@java.lang.Override
public double getLogCostOffset() {
return logCostOffset_;
}
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 (firstSolutionStrategy_ != com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNSET.getNumber()) {
output.writeEnum(1, firstSolutionStrategy_);
}
if (useUnfilteredFirstSolutionStrategy_ != false) {
output.writeBool(2, useUnfilteredFirstSolutionStrategy_);
}
if (localSearchOperators_ != null) {
output.writeMessage(3, getLocalSearchOperators());
}
if (localSearchMetaheuristic_ != com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNSET.getNumber()) {
output.writeEnum(4, localSearchMetaheuristic_);
}
if (guidedLocalSearchLambdaCoefficient_ != 0D) {
output.writeDouble(5, guidedLocalSearchLambdaCoefficient_);
}
if (useDepthFirstSearch_ != false) {
output.writeBool(6, useDepthFirstSearch_);
}
if (optimizationStep_ != 0D) {
output.writeDouble(7, optimizationStep_);
}
if (solutionLimit_ != 0L) {
output.writeInt64(8, solutionLimit_);
}
if (timeLimit_ != null) {
output.writeMessage(9, getTimeLimit());
}
if (lnsTimeLimit_ != null) {
output.writeMessage(10, getLnsTimeLimit());
}
if (useFullPropagation_ != false) {
output.writeBool(11, useFullPropagation_);
}
if (logSearch_ != false) {
output.writeBool(13, logSearch_);
}
if (savingsNeighborsRatio_ != 0D) {
output.writeDouble(14, savingsNeighborsRatio_);
}
if (savingsAddReverseArcs_ != false) {
output.writeBool(15, savingsAddReverseArcs_);
}
if (cheapestInsertionFarthestSeedsRatio_ != 0D) {
output.writeDouble(16, cheapestInsertionFarthestSeedsRatio_);
}
if (numberOfSolutionsToCollect_ != 0) {
output.writeInt32(17, numberOfSolutionsToCollect_);
}
if (savingsArcCoefficient_ != 0D) {
output.writeDouble(18, savingsArcCoefficient_);
}
if (savingsParallelRoutes_ != false) {
output.writeBool(19, savingsParallelRoutes_);
}
if (relocateExpensiveChainNumArcsToConsider_ != 0) {
output.writeInt32(20, relocateExpensiveChainNumArcsToConsider_);
}
if (cheapestInsertionFirstSolutionNeighborsRatio_ != 0D) {
output.writeDouble(21, cheapestInsertionFirstSolutionNeighborsRatio_);
}
if (logCostScalingFactor_ != 0D) {
output.writeDouble(22, logCostScalingFactor_);
}
if (savingsMaxMemoryUsageBytes_ != 0D) {
output.writeDouble(23, savingsMaxMemoryUsageBytes_);
}
if (useCpSat_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(27, useCpSat_);
}
if (useCp_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
output.writeEnum(28, useCp_);
}
if (logCostOffset_ != 0D) {
output.writeDouble(29, logCostOffset_);
}
if (christofidesUseMinimumMatching_ != false) {
output.writeBool(30, christofidesUseMinimumMatching_);
}
if (cheapestInsertionLsOperatorNeighborsRatio_ != 0D) {
output.writeDouble(31, cheapestInsertionLsOperatorNeighborsRatio_);
}
if (heuristicExpensiveChainLnsNumArcsToConsider_ != 0) {
output.writeInt32(32, heuristicExpensiveChainLnsNumArcsToConsider_);
}
if (continuousSchedulingSolver_ != com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNSET.getNumber()) {
output.writeEnum(33, continuousSchedulingSolver_);
}
if (mixedIntegerSchedulingSolver_ != com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNSET.getNumber()) {
output.writeEnum(34, mixedIntegerSchedulingSolver_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (firstSolutionStrategy_ != com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNSET.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(1, firstSolutionStrategy_);
}
if (useUnfilteredFirstSolutionStrategy_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(2, useUnfilteredFirstSolutionStrategy_);
}
if (localSearchOperators_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(3, getLocalSearchOperators());
}
if (localSearchMetaheuristic_ != com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNSET.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(4, localSearchMetaheuristic_);
}
if (guidedLocalSearchLambdaCoefficient_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(5, guidedLocalSearchLambdaCoefficient_);
}
if (useDepthFirstSearch_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(6, useDepthFirstSearch_);
}
if (optimizationStep_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(7, optimizationStep_);
}
if (solutionLimit_ != 0L) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(8, solutionLimit_);
}
if (timeLimit_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(9, getTimeLimit());
}
if (lnsTimeLimit_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(10, getLnsTimeLimit());
}
if (useFullPropagation_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(11, useFullPropagation_);
}
if (logSearch_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(13, logSearch_);
}
if (savingsNeighborsRatio_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(14, savingsNeighborsRatio_);
}
if (savingsAddReverseArcs_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(15, savingsAddReverseArcs_);
}
if (cheapestInsertionFarthestSeedsRatio_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(16, cheapestInsertionFarthestSeedsRatio_);
}
if (numberOfSolutionsToCollect_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(17, numberOfSolutionsToCollect_);
}
if (savingsArcCoefficient_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(18, savingsArcCoefficient_);
}
if (savingsParallelRoutes_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(19, savingsParallelRoutes_);
}
if (relocateExpensiveChainNumArcsToConsider_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(20, relocateExpensiveChainNumArcsToConsider_);
}
if (cheapestInsertionFirstSolutionNeighborsRatio_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(21, cheapestInsertionFirstSolutionNeighborsRatio_);
}
if (logCostScalingFactor_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(22, logCostScalingFactor_);
}
if (savingsMaxMemoryUsageBytes_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(23, savingsMaxMemoryUsageBytes_);
}
if (useCpSat_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(27, useCpSat_);
}
if (useCp_ != com.google.ortools.util.OptionalBoolean.BOOL_UNSPECIFIED.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(28, useCp_);
}
if (logCostOffset_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(29, logCostOffset_);
}
if (christofidesUseMinimumMatching_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(30, christofidesUseMinimumMatching_);
}
if (cheapestInsertionLsOperatorNeighborsRatio_ != 0D) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(31, cheapestInsertionLsOperatorNeighborsRatio_);
}
if (heuristicExpensiveChainLnsNumArcsToConsider_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(32, heuristicExpensiveChainLnsNumArcsToConsider_);
}
if (continuousSchedulingSolver_ != com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNSET.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(33, continuousSchedulingSolver_);
}
if (mixedIntegerSchedulingSolver_ != com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNSET.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(34, mixedIntegerSchedulingSolver_);
}
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.constraintsolver.RoutingSearchParameters)) {
return super.equals(obj);
}
com.google.ortools.constraintsolver.RoutingSearchParameters other = (com.google.ortools.constraintsolver.RoutingSearchParameters) obj;
if (firstSolutionStrategy_ != other.firstSolutionStrategy_) return false;
if (getUseUnfilteredFirstSolutionStrategy()
!= other.getUseUnfilteredFirstSolutionStrategy()) return false;
if (java.lang.Double.doubleToLongBits(getSavingsNeighborsRatio())
!= java.lang.Double.doubleToLongBits(
other.getSavingsNeighborsRatio())) return false;
if (java.lang.Double.doubleToLongBits(getSavingsMaxMemoryUsageBytes())
!= java.lang.Double.doubleToLongBits(
other.getSavingsMaxMemoryUsageBytes())) return false;
if (getSavingsAddReverseArcs()
!= other.getSavingsAddReverseArcs()) return false;
if (java.lang.Double.doubleToLongBits(getSavingsArcCoefficient())
!= java.lang.Double.doubleToLongBits(
other.getSavingsArcCoefficient())) return false;
if (getSavingsParallelRoutes()
!= other.getSavingsParallelRoutes()) return false;
if (java.lang.Double.doubleToLongBits(getCheapestInsertionFarthestSeedsRatio())
!= java.lang.Double.doubleToLongBits(
other.getCheapestInsertionFarthestSeedsRatio())) return false;
if (java.lang.Double.doubleToLongBits(getCheapestInsertionFirstSolutionNeighborsRatio())
!= java.lang.Double.doubleToLongBits(
other.getCheapestInsertionFirstSolutionNeighborsRatio())) return false;
if (java.lang.Double.doubleToLongBits(getCheapestInsertionLsOperatorNeighborsRatio())
!= java.lang.Double.doubleToLongBits(
other.getCheapestInsertionLsOperatorNeighborsRatio())) return false;
if (getChristofidesUseMinimumMatching()
!= other.getChristofidesUseMinimumMatching()) return false;
if (hasLocalSearchOperators() != other.hasLocalSearchOperators()) return false;
if (hasLocalSearchOperators()) {
if (!getLocalSearchOperators()
.equals(other.getLocalSearchOperators())) return false;
}
if (getRelocateExpensiveChainNumArcsToConsider()
!= other.getRelocateExpensiveChainNumArcsToConsider()) return false;
if (getHeuristicExpensiveChainLnsNumArcsToConsider()
!= other.getHeuristicExpensiveChainLnsNumArcsToConsider()) return false;
if (localSearchMetaheuristic_ != other.localSearchMetaheuristic_) return false;
if (java.lang.Double.doubleToLongBits(getGuidedLocalSearchLambdaCoefficient())
!= java.lang.Double.doubleToLongBits(
other.getGuidedLocalSearchLambdaCoefficient())) return false;
if (getUseDepthFirstSearch()
!= other.getUseDepthFirstSearch()) return false;
if (useCp_ != other.useCp_) return false;
if (useCpSat_ != other.useCpSat_) return false;
if (continuousSchedulingSolver_ != other.continuousSchedulingSolver_) return false;
if (mixedIntegerSchedulingSolver_ != other.mixedIntegerSchedulingSolver_) return false;
if (java.lang.Double.doubleToLongBits(getOptimizationStep())
!= java.lang.Double.doubleToLongBits(
other.getOptimizationStep())) return false;
if (getNumberOfSolutionsToCollect()
!= other.getNumberOfSolutionsToCollect()) return false;
if (getSolutionLimit()
!= other.getSolutionLimit()) return false;
if (hasTimeLimit() != other.hasTimeLimit()) return false;
if (hasTimeLimit()) {
if (!getTimeLimit()
.equals(other.getTimeLimit())) return false;
}
if (hasLnsTimeLimit() != other.hasLnsTimeLimit()) return false;
if (hasLnsTimeLimit()) {
if (!getLnsTimeLimit()
.equals(other.getLnsTimeLimit())) return false;
}
if (getUseFullPropagation()
!= other.getUseFullPropagation()) return false;
if (getLogSearch()
!= other.getLogSearch()) return false;
if (java.lang.Double.doubleToLongBits(getLogCostScalingFactor())
!= java.lang.Double.doubleToLongBits(
other.getLogCostScalingFactor())) return false;
if (java.lang.Double.doubleToLongBits(getLogCostOffset())
!= java.lang.Double.doubleToLongBits(
other.getLogCostOffset())) 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();
hash = (37 * hash) + FIRST_SOLUTION_STRATEGY_FIELD_NUMBER;
hash = (53 * hash) + firstSolutionStrategy_;
hash = (37 * hash) + USE_UNFILTERED_FIRST_SOLUTION_STRATEGY_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseUnfilteredFirstSolutionStrategy());
hash = (37 * hash) + SAVINGS_NEIGHBORS_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getSavingsNeighborsRatio()));
hash = (37 * hash) + SAVINGS_MAX_MEMORY_USAGE_BYTES_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getSavingsMaxMemoryUsageBytes()));
hash = (37 * hash) + SAVINGS_ADD_REVERSE_ARCS_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getSavingsAddReverseArcs());
hash = (37 * hash) + SAVINGS_ARC_COEFFICIENT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getSavingsArcCoefficient()));
hash = (37 * hash) + SAVINGS_PARALLEL_ROUTES_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getSavingsParallelRoutes());
hash = (37 * hash) + CHEAPEST_INSERTION_FARTHEST_SEEDS_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getCheapestInsertionFarthestSeedsRatio()));
hash = (37 * hash) + CHEAPEST_INSERTION_FIRST_SOLUTION_NEIGHBORS_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getCheapestInsertionFirstSolutionNeighborsRatio()));
hash = (37 * hash) + CHEAPEST_INSERTION_LS_OPERATOR_NEIGHBORS_RATIO_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getCheapestInsertionLsOperatorNeighborsRatio()));
hash = (37 * hash) + CHRISTOFIDES_USE_MINIMUM_MATCHING_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getChristofidesUseMinimumMatching());
if (hasLocalSearchOperators()) {
hash = (37 * hash) + LOCAL_SEARCH_OPERATORS_FIELD_NUMBER;
hash = (53 * hash) + getLocalSearchOperators().hashCode();
}
hash = (37 * hash) + RELOCATE_EXPENSIVE_CHAIN_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER;
hash = (53 * hash) + getRelocateExpensiveChainNumArcsToConsider();
hash = (37 * hash) + HEURISTIC_EXPENSIVE_CHAIN_LNS_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER;
hash = (53 * hash) + getHeuristicExpensiveChainLnsNumArcsToConsider();
hash = (37 * hash) + LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER;
hash = (53 * hash) + localSearchMetaheuristic_;
hash = (37 * hash) + GUIDED_LOCAL_SEARCH_LAMBDA_COEFFICIENT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getGuidedLocalSearchLambdaCoefficient()));
hash = (37 * hash) + USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseDepthFirstSearch());
hash = (37 * hash) + USE_CP_FIELD_NUMBER;
hash = (53 * hash) + useCp_;
hash = (37 * hash) + USE_CP_SAT_FIELD_NUMBER;
hash = (53 * hash) + useCpSat_;
hash = (37 * hash) + CONTINUOUS_SCHEDULING_SOLVER_FIELD_NUMBER;
hash = (53 * hash) + continuousSchedulingSolver_;
hash = (37 * hash) + MIXED_INTEGER_SCHEDULING_SOLVER_FIELD_NUMBER;
hash = (53 * hash) + mixedIntegerSchedulingSolver_;
hash = (37 * hash) + OPTIMIZATION_STEP_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getOptimizationStep()));
hash = (37 * hash) + NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER;
hash = (53 * hash) + getNumberOfSolutionsToCollect();
hash = (37 * hash) + SOLUTION_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
getSolutionLimit());
if (hasTimeLimit()) {
hash = (37 * hash) + TIME_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + getTimeLimit().hashCode();
}
if (hasLnsTimeLimit()) {
hash = (37 * hash) + LNS_TIME_LIMIT_FIELD_NUMBER;
hash = (53 * hash) + getLnsTimeLimit().hashCode();
}
hash = (37 * hash) + USE_FULL_PROPAGATION_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getUseFullPropagation());
hash = (37 * hash) + LOG_SEARCH_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getLogSearch());
hash = (37 * hash) + LOG_COST_SCALING_FACTOR_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getLogCostScalingFactor()));
hash = (37 * hash) + LOG_COST_OFFSET_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
java.lang.Double.doubleToLongBits(getLogCostOffset()));
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters 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.constraintsolver.RoutingSearchParameters parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters 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.constraintsolver.RoutingSearchParameters parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters 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.constraintsolver.RoutingSearchParameters parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters 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.constraintsolver.RoutingSearchParameters parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters 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.constraintsolver.RoutingSearchParameters 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;
}
/**
*
* Parameters defining the search used to solve vehicle routing problems.
* If a parameter is unset (or, equivalently, set to its default value),
* then the routing library will pick its preferred value for that parameter
* automatically: this should be the case for most parameters.
* To see those "default" parameters, call GetDefaultRoutingSearchParameters().
* Next ID: 35
*
*
* Protobuf type {@code operations_research.RoutingSearchParameters}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder implements
// @@protoc_insertion_point(builder_implements:operations_research.RoutingSearchParameters)
com.google.ortools.constraintsolver.RoutingSearchParametersOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.google.ortools.constraintsolver.RoutingSearchParameters.class, com.google.ortools.constraintsolver.RoutingSearchParameters.Builder.class);
}
// Construct using com.google.ortools.constraintsolver.RoutingSearchParameters.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();
firstSolutionStrategy_ = 0;
useUnfilteredFirstSolutionStrategy_ = false;
savingsNeighborsRatio_ = 0D;
savingsMaxMemoryUsageBytes_ = 0D;
savingsAddReverseArcs_ = false;
savingsArcCoefficient_ = 0D;
savingsParallelRoutes_ = false;
cheapestInsertionFarthestSeedsRatio_ = 0D;
cheapestInsertionFirstSolutionNeighborsRatio_ = 0D;
cheapestInsertionLsOperatorNeighborsRatio_ = 0D;
christofidesUseMinimumMatching_ = false;
if (localSearchOperatorsBuilder_ == null) {
localSearchOperators_ = null;
} else {
localSearchOperators_ = null;
localSearchOperatorsBuilder_ = null;
}
relocateExpensiveChainNumArcsToConsider_ = 0;
heuristicExpensiveChainLnsNumArcsToConsider_ = 0;
localSearchMetaheuristic_ = 0;
guidedLocalSearchLambdaCoefficient_ = 0D;
useDepthFirstSearch_ = false;
useCp_ = 0;
useCpSat_ = 0;
continuousSchedulingSolver_ = 0;
mixedIntegerSchedulingSolver_ = 0;
optimizationStep_ = 0D;
numberOfSolutionsToCollect_ = 0;
solutionLimit_ = 0L;
if (timeLimitBuilder_ == null) {
timeLimit_ = null;
} else {
timeLimit_ = null;
timeLimitBuilder_ = null;
}
if (lnsTimeLimitBuilder_ == null) {
lnsTimeLimit_ = null;
} else {
lnsTimeLimit_ = null;
lnsTimeLimitBuilder_ = null;
}
useFullPropagation_ = false;
logSearch_ = false;
logCostScalingFactor_ = 0D;
logCostOffset_ = 0D;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return com.google.ortools.constraintsolver.RoutingParameters.internal_static_operations_research_RoutingSearchParameters_descriptor;
}
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstanceForType() {
return com.google.ortools.constraintsolver.RoutingSearchParameters.getDefaultInstance();
}
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters build() {
com.google.ortools.constraintsolver.RoutingSearchParameters result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters buildPartial() {
com.google.ortools.constraintsolver.RoutingSearchParameters result = new com.google.ortools.constraintsolver.RoutingSearchParameters(this);
result.firstSolutionStrategy_ = firstSolutionStrategy_;
result.useUnfilteredFirstSolutionStrategy_ = useUnfilteredFirstSolutionStrategy_;
result.savingsNeighborsRatio_ = savingsNeighborsRatio_;
result.savingsMaxMemoryUsageBytes_ = savingsMaxMemoryUsageBytes_;
result.savingsAddReverseArcs_ = savingsAddReverseArcs_;
result.savingsArcCoefficient_ = savingsArcCoefficient_;
result.savingsParallelRoutes_ = savingsParallelRoutes_;
result.cheapestInsertionFarthestSeedsRatio_ = cheapestInsertionFarthestSeedsRatio_;
result.cheapestInsertionFirstSolutionNeighborsRatio_ = cheapestInsertionFirstSolutionNeighborsRatio_;
result.cheapestInsertionLsOperatorNeighborsRatio_ = cheapestInsertionLsOperatorNeighborsRatio_;
result.christofidesUseMinimumMatching_ = christofidesUseMinimumMatching_;
if (localSearchOperatorsBuilder_ == null) {
result.localSearchOperators_ = localSearchOperators_;
} else {
result.localSearchOperators_ = localSearchOperatorsBuilder_.build();
}
result.relocateExpensiveChainNumArcsToConsider_ = relocateExpensiveChainNumArcsToConsider_;
result.heuristicExpensiveChainLnsNumArcsToConsider_ = heuristicExpensiveChainLnsNumArcsToConsider_;
result.localSearchMetaheuristic_ = localSearchMetaheuristic_;
result.guidedLocalSearchLambdaCoefficient_ = guidedLocalSearchLambdaCoefficient_;
result.useDepthFirstSearch_ = useDepthFirstSearch_;
result.useCp_ = useCp_;
result.useCpSat_ = useCpSat_;
result.continuousSchedulingSolver_ = continuousSchedulingSolver_;
result.mixedIntegerSchedulingSolver_ = mixedIntegerSchedulingSolver_;
result.optimizationStep_ = optimizationStep_;
result.numberOfSolutionsToCollect_ = numberOfSolutionsToCollect_;
result.solutionLimit_ = solutionLimit_;
if (timeLimitBuilder_ == null) {
result.timeLimit_ = timeLimit_;
} else {
result.timeLimit_ = timeLimitBuilder_.build();
}
if (lnsTimeLimitBuilder_ == null) {
result.lnsTimeLimit_ = lnsTimeLimit_;
} else {
result.lnsTimeLimit_ = lnsTimeLimitBuilder_.build();
}
result.useFullPropagation_ = useFullPropagation_;
result.logSearch_ = logSearch_;
result.logCostScalingFactor_ = logCostScalingFactor_;
result.logCostOffset_ = logCostOffset_;
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.constraintsolver.RoutingSearchParameters) {
return mergeFrom((com.google.ortools.constraintsolver.RoutingSearchParameters)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(com.google.ortools.constraintsolver.RoutingSearchParameters other) {
if (other == com.google.ortools.constraintsolver.RoutingSearchParameters.getDefaultInstance()) return this;
if (other.firstSolutionStrategy_ != 0) {
setFirstSolutionStrategyValue(other.getFirstSolutionStrategyValue());
}
if (other.getUseUnfilteredFirstSolutionStrategy() != false) {
setUseUnfilteredFirstSolutionStrategy(other.getUseUnfilteredFirstSolutionStrategy());
}
if (other.getSavingsNeighborsRatio() != 0D) {
setSavingsNeighborsRatio(other.getSavingsNeighborsRatio());
}
if (other.getSavingsMaxMemoryUsageBytes() != 0D) {
setSavingsMaxMemoryUsageBytes(other.getSavingsMaxMemoryUsageBytes());
}
if (other.getSavingsAddReverseArcs() != false) {
setSavingsAddReverseArcs(other.getSavingsAddReverseArcs());
}
if (other.getSavingsArcCoefficient() != 0D) {
setSavingsArcCoefficient(other.getSavingsArcCoefficient());
}
if (other.getSavingsParallelRoutes() != false) {
setSavingsParallelRoutes(other.getSavingsParallelRoutes());
}
if (other.getCheapestInsertionFarthestSeedsRatio() != 0D) {
setCheapestInsertionFarthestSeedsRatio(other.getCheapestInsertionFarthestSeedsRatio());
}
if (other.getCheapestInsertionFirstSolutionNeighborsRatio() != 0D) {
setCheapestInsertionFirstSolutionNeighborsRatio(other.getCheapestInsertionFirstSolutionNeighborsRatio());
}
if (other.getCheapestInsertionLsOperatorNeighborsRatio() != 0D) {
setCheapestInsertionLsOperatorNeighborsRatio(other.getCheapestInsertionLsOperatorNeighborsRatio());
}
if (other.getChristofidesUseMinimumMatching() != false) {
setChristofidesUseMinimumMatching(other.getChristofidesUseMinimumMatching());
}
if (other.hasLocalSearchOperators()) {
mergeLocalSearchOperators(other.getLocalSearchOperators());
}
if (other.getRelocateExpensiveChainNumArcsToConsider() != 0) {
setRelocateExpensiveChainNumArcsToConsider(other.getRelocateExpensiveChainNumArcsToConsider());
}
if (other.getHeuristicExpensiveChainLnsNumArcsToConsider() != 0) {
setHeuristicExpensiveChainLnsNumArcsToConsider(other.getHeuristicExpensiveChainLnsNumArcsToConsider());
}
if (other.localSearchMetaheuristic_ != 0) {
setLocalSearchMetaheuristicValue(other.getLocalSearchMetaheuristicValue());
}
if (other.getGuidedLocalSearchLambdaCoefficient() != 0D) {
setGuidedLocalSearchLambdaCoefficient(other.getGuidedLocalSearchLambdaCoefficient());
}
if (other.getUseDepthFirstSearch() != false) {
setUseDepthFirstSearch(other.getUseDepthFirstSearch());
}
if (other.useCp_ != 0) {
setUseCpValue(other.getUseCpValue());
}
if (other.useCpSat_ != 0) {
setUseCpSatValue(other.getUseCpSatValue());
}
if (other.continuousSchedulingSolver_ != 0) {
setContinuousSchedulingSolverValue(other.getContinuousSchedulingSolverValue());
}
if (other.mixedIntegerSchedulingSolver_ != 0) {
setMixedIntegerSchedulingSolverValue(other.getMixedIntegerSchedulingSolverValue());
}
if (other.getOptimizationStep() != 0D) {
setOptimizationStep(other.getOptimizationStep());
}
if (other.getNumberOfSolutionsToCollect() != 0) {
setNumberOfSolutionsToCollect(other.getNumberOfSolutionsToCollect());
}
if (other.getSolutionLimit() != 0L) {
setSolutionLimit(other.getSolutionLimit());
}
if (other.hasTimeLimit()) {
mergeTimeLimit(other.getTimeLimit());
}
if (other.hasLnsTimeLimit()) {
mergeLnsTimeLimit(other.getLnsTimeLimit());
}
if (other.getUseFullPropagation() != false) {
setUseFullPropagation(other.getUseFullPropagation());
}
if (other.getLogSearch() != false) {
setLogSearch(other.getLogSearch());
}
if (other.getLogCostScalingFactor() != 0D) {
setLogCostScalingFactor(other.getLogCostScalingFactor());
}
if (other.getLogCostOffset() != 0D) {
setLogCostOffset(other.getLogCostOffset());
}
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.constraintsolver.RoutingSearchParameters parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (com.google.ortools.constraintsolver.RoutingSearchParameters) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int firstSolutionStrategy_ = 0;
/**
*
* First solution strategies, used as starting point of local search.
*
*
* .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
* @return The enum numeric value on the wire for firstSolutionStrategy.
*/
@java.lang.Override public int getFirstSolutionStrategyValue() {
return firstSolutionStrategy_;
}
/**
*
* First solution strategies, used as starting point of local search.
*
*
* .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
* @param value The enum numeric value on the wire for firstSolutionStrategy to set.
* @return This builder for chaining.
*/
public Builder setFirstSolutionStrategyValue(int value) {
firstSolutionStrategy_ = value;
onChanged();
return this;
}
/**
*
* First solution strategies, used as starting point of local search.
*
*
* .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
* @return The firstSolutionStrategy.
*/
@java.lang.Override
public com.google.ortools.constraintsolver.FirstSolutionStrategy.Value getFirstSolutionStrategy() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.FirstSolutionStrategy.Value result = com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.valueOf(firstSolutionStrategy_);
return result == null ? com.google.ortools.constraintsolver.FirstSolutionStrategy.Value.UNRECOGNIZED : result;
}
/**
*
* First solution strategies, used as starting point of local search.
*
*
* .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
* @param value The firstSolutionStrategy to set.
* @return This builder for chaining.
*/
public Builder setFirstSolutionStrategy(com.google.ortools.constraintsolver.FirstSolutionStrategy.Value value) {
if (value == null) {
throw new NullPointerException();
}
firstSolutionStrategy_ = value.getNumber();
onChanged();
return this;
}
/**
*
* First solution strategies, used as starting point of local search.
*
*
* .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
* @return This builder for chaining.
*/
public Builder clearFirstSolutionStrategy() {
firstSolutionStrategy_ = 0;
onChanged();
return this;
}
private boolean useUnfilteredFirstSolutionStrategy_ ;
/**
*
* --- Advanced first solutions strategy settings ---
* Don't touch these unless you know what you are doing.
* Use filtered version of first solution strategy if available.
*
*
* bool use_unfiltered_first_solution_strategy = 2;
* @return The useUnfilteredFirstSolutionStrategy.
*/
@java.lang.Override
public boolean getUseUnfilteredFirstSolutionStrategy() {
return useUnfilteredFirstSolutionStrategy_;
}
/**
*
* --- Advanced first solutions strategy settings ---
* Don't touch these unless you know what you are doing.
* Use filtered version of first solution strategy if available.
*
*
* bool use_unfiltered_first_solution_strategy = 2;
* @param value The useUnfilteredFirstSolutionStrategy to set.
* @return This builder for chaining.
*/
public Builder setUseUnfilteredFirstSolutionStrategy(boolean value) {
useUnfilteredFirstSolutionStrategy_ = value;
onChanged();
return this;
}
/**
*
* --- Advanced first solutions strategy settings ---
* Don't touch these unless you know what you are doing.
* Use filtered version of first solution strategy if available.
*
*
* bool use_unfiltered_first_solution_strategy = 2;
* @return This builder for chaining.
*/
public Builder clearUseUnfilteredFirstSolutionStrategy() {
useUnfilteredFirstSolutionStrategy_ = false;
onChanged();
return this;
}
private double savingsNeighborsRatio_ ;
/**
*
* Parameters specific to the Savings first solution heuristic.
* Ratio (in ]0, 1]) of neighbors to consider for each node when constructing
* the savings. If unspecified, its value is considered to be 1.0.
*
*
* double savings_neighbors_ratio = 14;
* @return The savingsNeighborsRatio.
*/
@java.lang.Override
public double getSavingsNeighborsRatio() {
return savingsNeighborsRatio_;
}
/**
*
* Parameters specific to the Savings first solution heuristic.
* Ratio (in ]0, 1]) of neighbors to consider for each node when constructing
* the savings. If unspecified, its value is considered to be 1.0.
*
*
* double savings_neighbors_ratio = 14;
* @param value The savingsNeighborsRatio to set.
* @return This builder for chaining.
*/
public Builder setSavingsNeighborsRatio(double value) {
savingsNeighborsRatio_ = value;
onChanged();
return this;
}
/**
*
* Parameters specific to the Savings first solution heuristic.
* Ratio (in ]0, 1]) of neighbors to consider for each node when constructing
* the savings. If unspecified, its value is considered to be 1.0.
*
*
* double savings_neighbors_ratio = 14;
* @return This builder for chaining.
*/
public Builder clearSavingsNeighborsRatio() {
savingsNeighborsRatio_ = 0D;
onChanged();
return this;
}
private double savingsMaxMemoryUsageBytes_ ;
/**
*
* The number of neighbors considered for each node in the Savings heuristic
* is chosen so that the space used to store the savings doesn't exceed
* savings_max_memory_usage_bytes, which must be in ]0, 1e10].
* NOTE: If both savings_neighbors_ratio and savings_max_memory_usage_bytes
* are specified, the number of neighbors considered for each node will be the
* minimum of the two numbers determined by these parameters.
*
*
* double savings_max_memory_usage_bytes = 23;
* @return The savingsMaxMemoryUsageBytes.
*/
@java.lang.Override
public double getSavingsMaxMemoryUsageBytes() {
return savingsMaxMemoryUsageBytes_;
}
/**
*
* The number of neighbors considered for each node in the Savings heuristic
* is chosen so that the space used to store the savings doesn't exceed
* savings_max_memory_usage_bytes, which must be in ]0, 1e10].
* NOTE: If both savings_neighbors_ratio and savings_max_memory_usage_bytes
* are specified, the number of neighbors considered for each node will be the
* minimum of the two numbers determined by these parameters.
*
*
* double savings_max_memory_usage_bytes = 23;
* @param value The savingsMaxMemoryUsageBytes to set.
* @return This builder for chaining.
*/
public Builder setSavingsMaxMemoryUsageBytes(double value) {
savingsMaxMemoryUsageBytes_ = value;
onChanged();
return this;
}
/**
*
* The number of neighbors considered for each node in the Savings heuristic
* is chosen so that the space used to store the savings doesn't exceed
* savings_max_memory_usage_bytes, which must be in ]0, 1e10].
* NOTE: If both savings_neighbors_ratio and savings_max_memory_usage_bytes
* are specified, the number of neighbors considered for each node will be the
* minimum of the two numbers determined by these parameters.
*
*
* double savings_max_memory_usage_bytes = 23;
* @return This builder for chaining.
*/
public Builder clearSavingsMaxMemoryUsageBytes() {
savingsMaxMemoryUsageBytes_ = 0D;
onChanged();
return this;
}
private boolean savingsAddReverseArcs_ ;
/**
*
* Add savings related to reverse arcs when finding the nearest neighbors
* of the nodes.
*
*
* bool savings_add_reverse_arcs = 15;
* @return The savingsAddReverseArcs.
*/
@java.lang.Override
public boolean getSavingsAddReverseArcs() {
return savingsAddReverseArcs_;
}
/**
*
* Add savings related to reverse arcs when finding the nearest neighbors
* of the nodes.
*
*
* bool savings_add_reverse_arcs = 15;
* @param value The savingsAddReverseArcs to set.
* @return This builder for chaining.
*/
public Builder setSavingsAddReverseArcs(boolean value) {
savingsAddReverseArcs_ = value;
onChanged();
return this;
}
/**
*
* Add savings related to reverse arcs when finding the nearest neighbors
* of the nodes.
*
*
* bool savings_add_reverse_arcs = 15;
* @return This builder for chaining.
*/
public Builder clearSavingsAddReverseArcs() {
savingsAddReverseArcs_ = false;
onChanged();
return this;
}
private double savingsArcCoefficient_ ;
/**
*
* Coefficient of the cost of the arc for which the saving value is being
* computed:
* Saving(a-->b) = Cost(a-->end) + Cost(start-->b)
* - savings_arc_coefficient * Cost(a-->b)
* This parameter must be greater than 0, and its default value is 1.
*
*
* double savings_arc_coefficient = 18;
* @return The savingsArcCoefficient.
*/
@java.lang.Override
public double getSavingsArcCoefficient() {
return savingsArcCoefficient_;
}
/**
*
* Coefficient of the cost of the arc for which the saving value is being
* computed:
* Saving(a-->b) = Cost(a-->end) + Cost(start-->b)
* - savings_arc_coefficient * Cost(a-->b)
* This parameter must be greater than 0, and its default value is 1.
*
*
* double savings_arc_coefficient = 18;
* @param value The savingsArcCoefficient to set.
* @return This builder for chaining.
*/
public Builder setSavingsArcCoefficient(double value) {
savingsArcCoefficient_ = value;
onChanged();
return this;
}
/**
*
* Coefficient of the cost of the arc for which the saving value is being
* computed:
* Saving(a-->b) = Cost(a-->end) + Cost(start-->b)
* - savings_arc_coefficient * Cost(a-->b)
* This parameter must be greater than 0, and its default value is 1.
*
*
* double savings_arc_coefficient = 18;
* @return This builder for chaining.
*/
public Builder clearSavingsArcCoefficient() {
savingsArcCoefficient_ = 0D;
onChanged();
return this;
}
private boolean savingsParallelRoutes_ ;
/**
*
* When true, the routes are built in parallel, sequentially otherwise.
*
*
* bool savings_parallel_routes = 19;
* @return The savingsParallelRoutes.
*/
@java.lang.Override
public boolean getSavingsParallelRoutes() {
return savingsParallelRoutes_;
}
/**
*
* When true, the routes are built in parallel, sequentially otherwise.
*
*
* bool savings_parallel_routes = 19;
* @param value The savingsParallelRoutes to set.
* @return This builder for chaining.
*/
public Builder setSavingsParallelRoutes(boolean value) {
savingsParallelRoutes_ = value;
onChanged();
return this;
}
/**
*
* When true, the routes are built in parallel, sequentially otherwise.
*
*
* bool savings_parallel_routes = 19;
* @return This builder for chaining.
*/
public Builder clearSavingsParallelRoutes() {
savingsParallelRoutes_ = false;
onChanged();
return this;
}
private double cheapestInsertionFarthestSeedsRatio_ ;
/**
*
* Ratio (between 0 and 1) of available vehicles in the model on which
* farthest nodes of the model are inserted as seeds in the
* GlobalCheapestInsertion first solution heuristic.
*
*
* double cheapest_insertion_farthest_seeds_ratio = 16;
* @return The cheapestInsertionFarthestSeedsRatio.
*/
@java.lang.Override
public double getCheapestInsertionFarthestSeedsRatio() {
return cheapestInsertionFarthestSeedsRatio_;
}
/**
*
* Ratio (between 0 and 1) of available vehicles in the model on which
* farthest nodes of the model are inserted as seeds in the
* GlobalCheapestInsertion first solution heuristic.
*
*
* double cheapest_insertion_farthest_seeds_ratio = 16;
* @param value The cheapestInsertionFarthestSeedsRatio to set.
* @return This builder for chaining.
*/
public Builder setCheapestInsertionFarthestSeedsRatio(double value) {
cheapestInsertionFarthestSeedsRatio_ = value;
onChanged();
return this;
}
/**
*
* Ratio (between 0 and 1) of available vehicles in the model on which
* farthest nodes of the model are inserted as seeds in the
* GlobalCheapestInsertion first solution heuristic.
*
*
* double cheapest_insertion_farthest_seeds_ratio = 16;
* @return This builder for chaining.
*/
public Builder clearCheapestInsertionFarthestSeedsRatio() {
cheapestInsertionFarthestSeedsRatio_ = 0D;
onChanged();
return this;
}
private double cheapestInsertionFirstSolutionNeighborsRatio_ ;
/**
*
* Ratio (in ]0, 1]) of neighbors to consider for each node when creating
* new insertions in the parallel/sequential cheapest insertion heuristic.
* If not overridden, its default value is 1, meaning all neighbors will be
* considered.
* Neighbors ratio for the first solution heuristic.
*
*
* double cheapest_insertion_first_solution_neighbors_ratio = 21;
* @return The cheapestInsertionFirstSolutionNeighborsRatio.
*/
@java.lang.Override
public double getCheapestInsertionFirstSolutionNeighborsRatio() {
return cheapestInsertionFirstSolutionNeighborsRatio_;
}
/**
*
* Ratio (in ]0, 1]) of neighbors to consider for each node when creating
* new insertions in the parallel/sequential cheapest insertion heuristic.
* If not overridden, its default value is 1, meaning all neighbors will be
* considered.
* Neighbors ratio for the first solution heuristic.
*
*
* double cheapest_insertion_first_solution_neighbors_ratio = 21;
* @param value The cheapestInsertionFirstSolutionNeighborsRatio to set.
* @return This builder for chaining.
*/
public Builder setCheapestInsertionFirstSolutionNeighborsRatio(double value) {
cheapestInsertionFirstSolutionNeighborsRatio_ = value;
onChanged();
return this;
}
/**
*
* Ratio (in ]0, 1]) of neighbors to consider for each node when creating
* new insertions in the parallel/sequential cheapest insertion heuristic.
* If not overridden, its default value is 1, meaning all neighbors will be
* considered.
* Neighbors ratio for the first solution heuristic.
*
*
* double cheapest_insertion_first_solution_neighbors_ratio = 21;
* @return This builder for chaining.
*/
public Builder clearCheapestInsertionFirstSolutionNeighborsRatio() {
cheapestInsertionFirstSolutionNeighborsRatio_ = 0D;
onChanged();
return this;
}
private double cheapestInsertionLsOperatorNeighborsRatio_ ;
/**
*
* Neighbors ratio for the heuristic when used in a local search operator (see
* local_search_operators.use_global_cheapest_insertion_path_lns and
* local_search_operators.use_global_cheapest_insertion_chain_lns below).
*
*
* double cheapest_insertion_ls_operator_neighbors_ratio = 31;
* @return The cheapestInsertionLsOperatorNeighborsRatio.
*/
@java.lang.Override
public double getCheapestInsertionLsOperatorNeighborsRatio() {
return cheapestInsertionLsOperatorNeighborsRatio_;
}
/**
*
* Neighbors ratio for the heuristic when used in a local search operator (see
* local_search_operators.use_global_cheapest_insertion_path_lns and
* local_search_operators.use_global_cheapest_insertion_chain_lns below).
*
*
* double cheapest_insertion_ls_operator_neighbors_ratio = 31;
* @param value The cheapestInsertionLsOperatorNeighborsRatio to set.
* @return This builder for chaining.
*/
public Builder setCheapestInsertionLsOperatorNeighborsRatio(double value) {
cheapestInsertionLsOperatorNeighborsRatio_ = value;
onChanged();
return this;
}
/**
*
* Neighbors ratio for the heuristic when used in a local search operator (see
* local_search_operators.use_global_cheapest_insertion_path_lns and
* local_search_operators.use_global_cheapest_insertion_chain_lns below).
*
*
* double cheapest_insertion_ls_operator_neighbors_ratio = 31;
* @return This builder for chaining.
*/
public Builder clearCheapestInsertionLsOperatorNeighborsRatio() {
cheapestInsertionLsOperatorNeighborsRatio_ = 0D;
onChanged();
return this;
}
private boolean christofidesUseMinimumMatching_ ;
/**
*
* If true use minimum matching instead of minimal matching in the
* Christofides algorithm.
*
*
* bool christofides_use_minimum_matching = 30;
* @return The christofidesUseMinimumMatching.
*/
@java.lang.Override
public boolean getChristofidesUseMinimumMatching() {
return christofidesUseMinimumMatching_;
}
/**
*
* If true use minimum matching instead of minimal matching in the
* Christofides algorithm.
*
*
* bool christofides_use_minimum_matching = 30;
* @param value The christofidesUseMinimumMatching to set.
* @return This builder for chaining.
*/
public Builder setChristofidesUseMinimumMatching(boolean value) {
christofidesUseMinimumMatching_ = value;
onChanged();
return this;
}
/**
*
* If true use minimum matching instead of minimal matching in the
* Christofides algorithm.
*
*
* bool christofides_use_minimum_matching = 30;
* @return This builder for chaining.
*/
public Builder clearChristofidesUseMinimumMatching() {
christofidesUseMinimumMatching_ = false;
onChanged();
return this;
}
private com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators localSearchOperators_;
private com.google.protobuf.SingleFieldBuilderV3<
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder> localSearchOperatorsBuilder_;
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
* @return Whether the localSearchOperators field is set.
*/
public boolean hasLocalSearchOperators() {
return localSearchOperatorsBuilder_ != null || localSearchOperators_ != null;
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
* @return The localSearchOperators.
*/
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators getLocalSearchOperators() {
if (localSearchOperatorsBuilder_ == null) {
return localSearchOperators_ == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance() : localSearchOperators_;
} else {
return localSearchOperatorsBuilder_.getMessage();
}
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
public Builder setLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators value) {
if (localSearchOperatorsBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
localSearchOperators_ = value;
onChanged();
} else {
localSearchOperatorsBuilder_.setMessage(value);
}
return this;
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
public Builder setLocalSearchOperators(
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder builderForValue) {
if (localSearchOperatorsBuilder_ == null) {
localSearchOperators_ = builderForValue.build();
onChanged();
} else {
localSearchOperatorsBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
public Builder mergeLocalSearchOperators(com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators value) {
if (localSearchOperatorsBuilder_ == null) {
if (localSearchOperators_ != null) {
localSearchOperators_ =
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.newBuilder(localSearchOperators_).mergeFrom(value).buildPartial();
} else {
localSearchOperators_ = value;
}
onChanged();
} else {
localSearchOperatorsBuilder_.mergeFrom(value);
}
return this;
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
public Builder clearLocalSearchOperators() {
if (localSearchOperatorsBuilder_ == null) {
localSearchOperators_ = null;
onChanged();
} else {
localSearchOperators_ = null;
localSearchOperatorsBuilder_ = null;
}
return this;
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder getLocalSearchOperatorsBuilder() {
onChanged();
return getLocalSearchOperatorsFieldBuilder().getBuilder();
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
public com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder getLocalSearchOperatorsOrBuilder() {
if (localSearchOperatorsBuilder_ != null) {
return localSearchOperatorsBuilder_.getMessageOrBuilder();
} else {
return localSearchOperators_ == null ?
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.getDefaultInstance() : localSearchOperators_;
}
}
/**
* .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
*/
private com.google.protobuf.SingleFieldBuilderV3<
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder>
getLocalSearchOperatorsFieldBuilder() {
if (localSearchOperatorsBuilder_ == null) {
localSearchOperatorsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperators.Builder, com.google.ortools.constraintsolver.RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder>(
getLocalSearchOperators(),
getParentForChildren(),
isClean());
localSearchOperators_ = null;
}
return localSearchOperatorsBuilder_;
}
private int relocateExpensiveChainNumArcsToConsider_ ;
/**
*
* Number of expensive arcs to consider cutting in the RelocateExpensiveChain
* neighborhood operator (see
* LocalSearchNeighborhoodOperators.use_relocate_expensive_chain()).
* This parameter must be greater than 2.
* NOTE(user): The number of neighbors generated by the operator for
* relocate_expensive_chain_num_arcs_to_consider = K is around
* K*(K-1)/2 * number_of_routes * number_of_nodes.
*
*
* int32 relocate_expensive_chain_num_arcs_to_consider = 20;
* @return The relocateExpensiveChainNumArcsToConsider.
*/
@java.lang.Override
public int getRelocateExpensiveChainNumArcsToConsider() {
return relocateExpensiveChainNumArcsToConsider_;
}
/**
*
* Number of expensive arcs to consider cutting in the RelocateExpensiveChain
* neighborhood operator (see
* LocalSearchNeighborhoodOperators.use_relocate_expensive_chain()).
* This parameter must be greater than 2.
* NOTE(user): The number of neighbors generated by the operator for
* relocate_expensive_chain_num_arcs_to_consider = K is around
* K*(K-1)/2 * number_of_routes * number_of_nodes.
*
*
* int32 relocate_expensive_chain_num_arcs_to_consider = 20;
* @param value The relocateExpensiveChainNumArcsToConsider to set.
* @return This builder for chaining.
*/
public Builder setRelocateExpensiveChainNumArcsToConsider(int value) {
relocateExpensiveChainNumArcsToConsider_ = value;
onChanged();
return this;
}
/**
*
* Number of expensive arcs to consider cutting in the RelocateExpensiveChain
* neighborhood operator (see
* LocalSearchNeighborhoodOperators.use_relocate_expensive_chain()).
* This parameter must be greater than 2.
* NOTE(user): The number of neighbors generated by the operator for
* relocate_expensive_chain_num_arcs_to_consider = K is around
* K*(K-1)/2 * number_of_routes * number_of_nodes.
*
*
* int32 relocate_expensive_chain_num_arcs_to_consider = 20;
* @return This builder for chaining.
*/
public Builder clearRelocateExpensiveChainNumArcsToConsider() {
relocateExpensiveChainNumArcsToConsider_ = 0;
onChanged();
return this;
}
private int heuristicExpensiveChainLnsNumArcsToConsider_ ;
/**
*
* Number of expensive arcs to consider cutting in the
* FilteredHeuristicExpensiveChainLNSOperator operator.
*
*
* int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
* @return The heuristicExpensiveChainLnsNumArcsToConsider.
*/
@java.lang.Override
public int getHeuristicExpensiveChainLnsNumArcsToConsider() {
return heuristicExpensiveChainLnsNumArcsToConsider_;
}
/**
*
* Number of expensive arcs to consider cutting in the
* FilteredHeuristicExpensiveChainLNSOperator operator.
*
*
* int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
* @param value The heuristicExpensiveChainLnsNumArcsToConsider to set.
* @return This builder for chaining.
*/
public Builder setHeuristicExpensiveChainLnsNumArcsToConsider(int value) {
heuristicExpensiveChainLnsNumArcsToConsider_ = value;
onChanged();
return this;
}
/**
*
* Number of expensive arcs to consider cutting in the
* FilteredHeuristicExpensiveChainLNSOperator operator.
*
*
* int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
* @return This builder for chaining.
*/
public Builder clearHeuristicExpensiveChainLnsNumArcsToConsider() {
heuristicExpensiveChainLnsNumArcsToConsider_ = 0;
onChanged();
return this;
}
private int localSearchMetaheuristic_ = 0;
/**
*
* Local search metaheuristics used to guide the search.
*
*
* .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
* @return The enum numeric value on the wire for localSearchMetaheuristic.
*/
@java.lang.Override public int getLocalSearchMetaheuristicValue() {
return localSearchMetaheuristic_;
}
/**
*
* Local search metaheuristics used to guide the search.
*
*
* .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
* @param value The enum numeric value on the wire for localSearchMetaheuristic to set.
* @return This builder for chaining.
*/
public Builder setLocalSearchMetaheuristicValue(int value) {
localSearchMetaheuristic_ = value;
onChanged();
return this;
}
/**
*
* Local search metaheuristics used to guide the search.
*
*
* .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
* @return The localSearchMetaheuristic.
*/
@java.lang.Override
public com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value getLocalSearchMetaheuristic() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value result = com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.valueOf(localSearchMetaheuristic_);
return result == null ? com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value.UNRECOGNIZED : result;
}
/**
*
* Local search metaheuristics used to guide the search.
*
*
* .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
* @param value The localSearchMetaheuristic to set.
* @return This builder for chaining.
*/
public Builder setLocalSearchMetaheuristic(com.google.ortools.constraintsolver.LocalSearchMetaheuristic.Value value) {
if (value == null) {
throw new NullPointerException();
}
localSearchMetaheuristic_ = value.getNumber();
onChanged();
return this;
}
/**
*
* Local search metaheuristics used to guide the search.
*
*
* .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
* @return This builder for chaining.
*/
public Builder clearLocalSearchMetaheuristic() {
localSearchMetaheuristic_ = 0;
onChanged();
return this;
}
private double guidedLocalSearchLambdaCoefficient_ ;
/**
*
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Lambda coefficient used to penalize arc costs when GUIDED_LOCAL_SEARCH is
* used. Must be positive.
*
*
* double guided_local_search_lambda_coefficient = 5;
* @return The guidedLocalSearchLambdaCoefficient.
*/
@java.lang.Override
public double getGuidedLocalSearchLambdaCoefficient() {
return guidedLocalSearchLambdaCoefficient_;
}
/**
*
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Lambda coefficient used to penalize arc costs when GUIDED_LOCAL_SEARCH is
* used. Must be positive.
*
*
* double guided_local_search_lambda_coefficient = 5;
* @param value The guidedLocalSearchLambdaCoefficient to set.
* @return This builder for chaining.
*/
public Builder setGuidedLocalSearchLambdaCoefficient(double value) {
guidedLocalSearchLambdaCoefficient_ = value;
onChanged();
return this;
}
/**
*
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Lambda coefficient used to penalize arc costs when GUIDED_LOCAL_SEARCH is
* used. Must be positive.
*
*
* double guided_local_search_lambda_coefficient = 5;
* @return This builder for chaining.
*/
public Builder clearGuidedLocalSearchLambdaCoefficient() {
guidedLocalSearchLambdaCoefficient_ = 0D;
onChanged();
return this;
}
private boolean useDepthFirstSearch_ ;
/**
*
* --- Search control ---
* If true, the solver should use depth-first search rather than local search
* to solve the problem.
*
*
* bool use_depth_first_search = 6;
* @return The useDepthFirstSearch.
*/
@java.lang.Override
public boolean getUseDepthFirstSearch() {
return useDepthFirstSearch_;
}
/**
*
* --- Search control ---
* If true, the solver should use depth-first search rather than local search
* to solve the problem.
*
*
* bool use_depth_first_search = 6;
* @param value The useDepthFirstSearch to set.
* @return This builder for chaining.
*/
public Builder setUseDepthFirstSearch(boolean value) {
useDepthFirstSearch_ = value;
onChanged();
return this;
}
/**
*
* --- Search control ---
* If true, the solver should use depth-first search rather than local search
* to solve the problem.
*
*
* bool use_depth_first_search = 6;
* @return This builder for chaining.
*/
public Builder clearUseDepthFirstSearch() {
useDepthFirstSearch_ = false;
onChanged();
return this;
}
private int useCp_ = 0;
/**
*
* If true, use the CP solver to find a solution. Either local or depth-first
* search will be used depending on the value of use_depth_first_search. Will
* be run before the CP-SAT solver (cf. use_cp_sat).
*
*
* .operations_research.OptionalBoolean use_cp = 28;
* @return The enum numeric value on the wire for useCp.
*/
@java.lang.Override public int getUseCpValue() {
return useCp_;
}
/**
*
* If true, use the CP solver to find a solution. Either local or depth-first
* search will be used depending on the value of use_depth_first_search. Will
* be run before the CP-SAT solver (cf. use_cp_sat).
*
*
* .operations_research.OptionalBoolean use_cp = 28;
* @param value The enum numeric value on the wire for useCp to set.
* @return This builder for chaining.
*/
public Builder setUseCpValue(int value) {
useCp_ = value;
onChanged();
return this;
}
/**
*
* If true, use the CP solver to find a solution. Either local or depth-first
* search will be used depending on the value of use_depth_first_search. Will
* be run before the CP-SAT solver (cf. use_cp_sat).
*
*
* .operations_research.OptionalBoolean use_cp = 28;
* @return The useCp.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseCp() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCp_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* If true, use the CP solver to find a solution. Either local or depth-first
* search will be used depending on the value of use_depth_first_search. Will
* be run before the CP-SAT solver (cf. use_cp_sat).
*
*
* .operations_research.OptionalBoolean use_cp = 28;
* @param value The useCp to set.
* @return This builder for chaining.
*/
public Builder setUseCp(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useCp_ = value.getNumber();
onChanged();
return this;
}
/**
*
* If true, use the CP solver to find a solution. Either local or depth-first
* search will be used depending on the value of use_depth_first_search. Will
* be run before the CP-SAT solver (cf. use_cp_sat).
*
*
* .operations_research.OptionalBoolean use_cp = 28;
* @return This builder for chaining.
*/
public Builder clearUseCp() {
useCp_ = 0;
onChanged();
return this;
}
private int useCpSat_ = 0;
/**
*
* If true, use the CP-SAT solver to find a solution. If use_cp is also true,
* the CP-SAT solver will be run after the CP solver if there is time
* remaining and will use the CP solution as a hint for the CP-SAT search.
* As of 5/2019, only TSP models can be solved.
*
*
* .operations_research.OptionalBoolean use_cp_sat = 27;
* @return The enum numeric value on the wire for useCpSat.
*/
@java.lang.Override public int getUseCpSatValue() {
return useCpSat_;
}
/**
*
* If true, use the CP-SAT solver to find a solution. If use_cp is also true,
* the CP-SAT solver will be run after the CP solver if there is time
* remaining and will use the CP solution as a hint for the CP-SAT search.
* As of 5/2019, only TSP models can be solved.
*
*
* .operations_research.OptionalBoolean use_cp_sat = 27;
* @param value The enum numeric value on the wire for useCpSat to set.
* @return This builder for chaining.
*/
public Builder setUseCpSatValue(int value) {
useCpSat_ = value;
onChanged();
return this;
}
/**
*
* If true, use the CP-SAT solver to find a solution. If use_cp is also true,
* the CP-SAT solver will be run after the CP solver if there is time
* remaining and will use the CP solution as a hint for the CP-SAT search.
* As of 5/2019, only TSP models can be solved.
*
*
* .operations_research.OptionalBoolean use_cp_sat = 27;
* @return The useCpSat.
*/
@java.lang.Override
public com.google.ortools.util.OptionalBoolean getUseCpSat() {
@SuppressWarnings("deprecation")
com.google.ortools.util.OptionalBoolean result = com.google.ortools.util.OptionalBoolean.valueOf(useCpSat_);
return result == null ? com.google.ortools.util.OptionalBoolean.UNRECOGNIZED : result;
}
/**
*
* If true, use the CP-SAT solver to find a solution. If use_cp is also true,
* the CP-SAT solver will be run after the CP solver if there is time
* remaining and will use the CP solution as a hint for the CP-SAT search.
* As of 5/2019, only TSP models can be solved.
*
*
* .operations_research.OptionalBoolean use_cp_sat = 27;
* @param value The useCpSat to set.
* @return This builder for chaining.
*/
public Builder setUseCpSat(com.google.ortools.util.OptionalBoolean value) {
if (value == null) {
throw new NullPointerException();
}
useCpSat_ = value.getNumber();
onChanged();
return this;
}
/**
*
* If true, use the CP-SAT solver to find a solution. If use_cp is also true,
* the CP-SAT solver will be run after the CP solver if there is time
* remaining and will use the CP solution as a hint for the CP-SAT search.
* As of 5/2019, only TSP models can be solved.
*
*
* .operations_research.OptionalBoolean use_cp_sat = 27;
* @return This builder for chaining.
*/
public Builder clearUseCpSat() {
useCpSat_ = 0;
onChanged();
return this;
}
private int continuousSchedulingSolver_ = 0;
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
* @return The enum numeric value on the wire for continuousSchedulingSolver.
*/
@java.lang.Override public int getContinuousSchedulingSolverValue() {
return continuousSchedulingSolver_;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
* @param value The enum numeric value on the wire for continuousSchedulingSolver to set.
* @return This builder for chaining.
*/
public Builder setContinuousSchedulingSolverValue(int value) {
continuousSchedulingSolver_ = value;
onChanged();
return this;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
* @return The continuousSchedulingSolver.
*/
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver getContinuousSchedulingSolver() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver result = com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.valueOf(continuousSchedulingSolver_);
return result == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNRECOGNIZED : result;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
* @param value The continuousSchedulingSolver to set.
* @return This builder for chaining.
*/
public Builder setContinuousSchedulingSolver(com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver value) {
if (value == null) {
throw new NullPointerException();
}
continuousSchedulingSolver_ = value.getNumber();
onChanged();
return this;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
* @return This builder for chaining.
*/
public Builder clearContinuousSchedulingSolver() {
continuousSchedulingSolver_ = 0;
onChanged();
return this;
}
private int mixedIntegerSchedulingSolver_ = 0;
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
* @return The enum numeric value on the wire for mixedIntegerSchedulingSolver.
*/
@java.lang.Override public int getMixedIntegerSchedulingSolverValue() {
return mixedIntegerSchedulingSolver_;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
* @param value The enum numeric value on the wire for mixedIntegerSchedulingSolver to set.
* @return This builder for chaining.
*/
public Builder setMixedIntegerSchedulingSolverValue(int value) {
mixedIntegerSchedulingSolver_ = value;
onChanged();
return this;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
* @return The mixedIntegerSchedulingSolver.
*/
@java.lang.Override
public com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver getMixedIntegerSchedulingSolver() {
@SuppressWarnings("deprecation")
com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver result = com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.valueOf(mixedIntegerSchedulingSolver_);
return result == null ? com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver.UNRECOGNIZED : result;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
* @param value The mixedIntegerSchedulingSolver to set.
* @return This builder for chaining.
*/
public Builder setMixedIntegerSchedulingSolver(com.google.ortools.constraintsolver.RoutingSearchParameters.SchedulingSolver value) {
if (value == null) {
throw new NullPointerException();
}
mixedIntegerSchedulingSolver_ = value.getNumber();
onChanged();
return this;
}
/**
* .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
* @return This builder for chaining.
*/
public Builder clearMixedIntegerSchedulingSolver() {
mixedIntegerSchedulingSolver_ = 0;
onChanged();
return this;
}
private double optimizationStep_ ;
/**
*
* Minimum step by which the solution must be improved in local search. 0
* means "unspecified". If this value is fractional, it will get rounded to
* the nearest integer.
*
*
* double optimization_step = 7;
* @return The optimizationStep.
*/
@java.lang.Override
public double getOptimizationStep() {
return optimizationStep_;
}
/**
*
* Minimum step by which the solution must be improved in local search. 0
* means "unspecified". If this value is fractional, it will get rounded to
* the nearest integer.
*
*
* double optimization_step = 7;
* @param value The optimizationStep to set.
* @return This builder for chaining.
*/
public Builder setOptimizationStep(double value) {
optimizationStep_ = value;
onChanged();
return this;
}
/**
*
* Minimum step by which the solution must be improved in local search. 0
* means "unspecified". If this value is fractional, it will get rounded to
* the nearest integer.
*
*
* double optimization_step = 7;
* @return This builder for chaining.
*/
public Builder clearOptimizationStep() {
optimizationStep_ = 0D;
onChanged();
return this;
}
private int numberOfSolutionsToCollect_ ;
/**
*
* Number of solutions to collect during the search. Corresponds to the best
* solutions found during the search. 0 means "unspecified".
*
*
* int32 number_of_solutions_to_collect = 17;
* @return The numberOfSolutionsToCollect.
*/
@java.lang.Override
public int getNumberOfSolutionsToCollect() {
return numberOfSolutionsToCollect_;
}
/**
*
* Number of solutions to collect during the search. Corresponds to the best
* solutions found during the search. 0 means "unspecified".
*
*
* int32 number_of_solutions_to_collect = 17;
* @param value The numberOfSolutionsToCollect to set.
* @return This builder for chaining.
*/
public Builder setNumberOfSolutionsToCollect(int value) {
numberOfSolutionsToCollect_ = value;
onChanged();
return this;
}
/**
*
* Number of solutions to collect during the search. Corresponds to the best
* solutions found during the search. 0 means "unspecified".
*
*
* int32 number_of_solutions_to_collect = 17;
* @return This builder for chaining.
*/
public Builder clearNumberOfSolutionsToCollect() {
numberOfSolutionsToCollect_ = 0;
onChanged();
return this;
}
private long solutionLimit_ ;
/**
*
* -- Search limits --
* Limit to the number of solutions generated during the search. 0 means
* "unspecified".
*
*
* int64 solution_limit = 8;
* @return The solutionLimit.
*/
@java.lang.Override
public long getSolutionLimit() {
return solutionLimit_;
}
/**
*
* -- Search limits --
* Limit to the number of solutions generated during the search. 0 means
* "unspecified".
*
*
* int64 solution_limit = 8;
* @param value The solutionLimit to set.
* @return This builder for chaining.
*/
public Builder setSolutionLimit(long value) {
solutionLimit_ = value;
onChanged();
return this;
}
/**
*
* -- Search limits --
* Limit to the number of solutions generated during the search. 0 means
* "unspecified".
*
*
* int64 solution_limit = 8;
* @return This builder for chaining.
*/
public Builder clearSolutionLimit() {
solutionLimit_ = 0L;
onChanged();
return this;
}
private com.google.protobuf.Duration timeLimit_;
private com.google.protobuf.SingleFieldBuilderV3<
com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> timeLimitBuilder_;
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
* @return Whether the timeLimit field is set.
*/
public boolean hasTimeLimit() {
return timeLimitBuilder_ != null || timeLimit_ != null;
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
* @return The timeLimit.
*/
public com.google.protobuf.Duration getTimeLimit() {
if (timeLimitBuilder_ == null) {
return timeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
} else {
return timeLimitBuilder_.getMessage();
}
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
public Builder setTimeLimit(com.google.protobuf.Duration value) {
if (timeLimitBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
timeLimit_ = value;
onChanged();
} else {
timeLimitBuilder_.setMessage(value);
}
return this;
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
public Builder setTimeLimit(
com.google.protobuf.Duration.Builder builderForValue) {
if (timeLimitBuilder_ == null) {
timeLimit_ = builderForValue.build();
onChanged();
} else {
timeLimitBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
public Builder mergeTimeLimit(com.google.protobuf.Duration value) {
if (timeLimitBuilder_ == null) {
if (timeLimit_ != null) {
timeLimit_ =
com.google.protobuf.Duration.newBuilder(timeLimit_).mergeFrom(value).buildPartial();
} else {
timeLimit_ = value;
}
onChanged();
} else {
timeLimitBuilder_.mergeFrom(value);
}
return this;
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
public Builder clearTimeLimit() {
if (timeLimitBuilder_ == null) {
timeLimit_ = null;
onChanged();
} else {
timeLimit_ = null;
timeLimitBuilder_ = null;
}
return this;
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
public com.google.protobuf.Duration.Builder getTimeLimitBuilder() {
onChanged();
return getTimeLimitFieldBuilder().getBuilder();
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
public com.google.protobuf.DurationOrBuilder getTimeLimitOrBuilder() {
if (timeLimitBuilder_ != null) {
return timeLimitBuilder_.getMessageOrBuilder();
} else {
return timeLimit_ == null ?
com.google.protobuf.Duration.getDefaultInstance() : timeLimit_;
}
}
/**
*
* Limit to the time spent in the search.
*
*
* .google.protobuf.Duration time_limit = 9;
*/
private com.google.protobuf.SingleFieldBuilderV3<
com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
getTimeLimitFieldBuilder() {
if (timeLimitBuilder_ == null) {
timeLimitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
getTimeLimit(),
getParentForChildren(),
isClean());
timeLimit_ = null;
}
return timeLimitBuilder_;
}
private com.google.protobuf.Duration lnsTimeLimit_;
private com.google.protobuf.SingleFieldBuilderV3<
com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> lnsTimeLimitBuilder_;
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
* @return Whether the lnsTimeLimit field is set.
*/
public boolean hasLnsTimeLimit() {
return lnsTimeLimitBuilder_ != null || lnsTimeLimit_ != null;
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
* @return The lnsTimeLimit.
*/
public com.google.protobuf.Duration getLnsTimeLimit() {
if (lnsTimeLimitBuilder_ == null) {
return lnsTimeLimit_ == null ? com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
} else {
return lnsTimeLimitBuilder_.getMessage();
}
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
public Builder setLnsTimeLimit(com.google.protobuf.Duration value) {
if (lnsTimeLimitBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
lnsTimeLimit_ = value;
onChanged();
} else {
lnsTimeLimitBuilder_.setMessage(value);
}
return this;
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
public Builder setLnsTimeLimit(
com.google.protobuf.Duration.Builder builderForValue) {
if (lnsTimeLimitBuilder_ == null) {
lnsTimeLimit_ = builderForValue.build();
onChanged();
} else {
lnsTimeLimitBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
public Builder mergeLnsTimeLimit(com.google.protobuf.Duration value) {
if (lnsTimeLimitBuilder_ == null) {
if (lnsTimeLimit_ != null) {
lnsTimeLimit_ =
com.google.protobuf.Duration.newBuilder(lnsTimeLimit_).mergeFrom(value).buildPartial();
} else {
lnsTimeLimit_ = value;
}
onChanged();
} else {
lnsTimeLimitBuilder_.mergeFrom(value);
}
return this;
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
public Builder clearLnsTimeLimit() {
if (lnsTimeLimitBuilder_ == null) {
lnsTimeLimit_ = null;
onChanged();
} else {
lnsTimeLimit_ = null;
lnsTimeLimitBuilder_ = null;
}
return this;
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
public com.google.protobuf.Duration.Builder getLnsTimeLimitBuilder() {
onChanged();
return getLnsTimeLimitFieldBuilder().getBuilder();
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
public com.google.protobuf.DurationOrBuilder getLnsTimeLimitOrBuilder() {
if (lnsTimeLimitBuilder_ != null) {
return lnsTimeLimitBuilder_.getMessageOrBuilder();
} else {
return lnsTimeLimit_ == null ?
com.google.protobuf.Duration.getDefaultInstance() : lnsTimeLimit_;
}
}
/**
*
* Limit to the time spent in the completion search for each local search
* neighbor.
*
*
* .google.protobuf.Duration lns_time_limit = 10;
*/
private com.google.protobuf.SingleFieldBuilderV3<
com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
getLnsTimeLimitFieldBuilder() {
if (lnsTimeLimitBuilder_ == null) {
lnsTimeLimitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
getLnsTimeLimit(),
getParentForChildren(),
isClean());
lnsTimeLimit_ = null;
}
return lnsTimeLimitBuilder_;
}
private boolean useFullPropagation_ ;
/**
*
* --- Propagation control ---
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Use constraints with full propagation in routing model (instead of 'light'
* propagation only). Full propagation is only necessary when using
* depth-first search or for models which require strong propagation to
* finalize the value of secondary variables.
* Changing this setting to true will slow down the search in most cases and
* increase memory consumption in all cases.
*
*
* bool use_full_propagation = 11;
* @return The useFullPropagation.
*/
@java.lang.Override
public boolean getUseFullPropagation() {
return useFullPropagation_;
}
/**
*
* --- Propagation control ---
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Use constraints with full propagation in routing model (instead of 'light'
* propagation only). Full propagation is only necessary when using
* depth-first search or for models which require strong propagation to
* finalize the value of secondary variables.
* Changing this setting to true will slow down the search in most cases and
* increase memory consumption in all cases.
*
*
* bool use_full_propagation = 11;
* @param value The useFullPropagation to set.
* @return This builder for chaining.
*/
public Builder setUseFullPropagation(boolean value) {
useFullPropagation_ = value;
onChanged();
return this;
}
/**
*
* --- Propagation control ---
* These are advanced settings which should not be modified unless you know
* what you are doing.
* Use constraints with full propagation in routing model (instead of 'light'
* propagation only). Full propagation is only necessary when using
* depth-first search or for models which require strong propagation to
* finalize the value of secondary variables.
* Changing this setting to true will slow down the search in most cases and
* increase memory consumption in all cases.
*
*
* bool use_full_propagation = 11;
* @return This builder for chaining.
*/
public Builder clearUseFullPropagation() {
useFullPropagation_ = false;
onChanged();
return this;
}
private boolean logSearch_ ;
/**
*
* --- Miscellaneous ---
* Some of these are advanced settings which should not be modified unless you
* know what you are doing.
* Activates search logging. For each solution found during the search, the
* following will be displayed: its objective value, the maximum objective
* value since the beginning of the search, the elapsed time since the
* beginning of the search, the number of branches explored in the search
* tree, the number of failures in the search tree, the depth of the search
* tree, the number of local search neighbors explored, the number of local
* search neighbors filtered by local search filters, the number of local
* search neighbors accepted, the total memory used and the percentage of the
* search done.
*
*
* bool log_search = 13;
* @return The logSearch.
*/
@java.lang.Override
public boolean getLogSearch() {
return logSearch_;
}
/**
*
* --- Miscellaneous ---
* Some of these are advanced settings which should not be modified unless you
* know what you are doing.
* Activates search logging. For each solution found during the search, the
* following will be displayed: its objective value, the maximum objective
* value since the beginning of the search, the elapsed time since the
* beginning of the search, the number of branches explored in the search
* tree, the number of failures in the search tree, the depth of the search
* tree, the number of local search neighbors explored, the number of local
* search neighbors filtered by local search filters, the number of local
* search neighbors accepted, the total memory used and the percentage of the
* search done.
*
*
* bool log_search = 13;
* @param value The logSearch to set.
* @return This builder for chaining.
*/
public Builder setLogSearch(boolean value) {
logSearch_ = value;
onChanged();
return this;
}
/**
*
* --- Miscellaneous ---
* Some of these are advanced settings which should not be modified unless you
* know what you are doing.
* Activates search logging. For each solution found during the search, the
* following will be displayed: its objective value, the maximum objective
* value since the beginning of the search, the elapsed time since the
* beginning of the search, the number of branches explored in the search
* tree, the number of failures in the search tree, the depth of the search
* tree, the number of local search neighbors explored, the number of local
* search neighbors filtered by local search filters, the number of local
* search neighbors accepted, the total memory used and the percentage of the
* search done.
*
*
* bool log_search = 13;
* @return This builder for chaining.
*/
public Builder clearLogSearch() {
logSearch_ = false;
onChanged();
return this;
}
private double logCostScalingFactor_ ;
/**
*
* In logs, cost values will be scaled and offset by the given values in the
* following way: log_cost_scaling_factor * (cost + log_cost_offset)
*
*
* double log_cost_scaling_factor = 22;
* @return The logCostScalingFactor.
*/
@java.lang.Override
public double getLogCostScalingFactor() {
return logCostScalingFactor_;
}
/**
*
* In logs, cost values will be scaled and offset by the given values in the
* following way: log_cost_scaling_factor * (cost + log_cost_offset)
*
*
* double log_cost_scaling_factor = 22;
* @param value The logCostScalingFactor to set.
* @return This builder for chaining.
*/
public Builder setLogCostScalingFactor(double value) {
logCostScalingFactor_ = value;
onChanged();
return this;
}
/**
*
* In logs, cost values will be scaled and offset by the given values in the
* following way: log_cost_scaling_factor * (cost + log_cost_offset)
*
*
* double log_cost_scaling_factor = 22;
* @return This builder for chaining.
*/
public Builder clearLogCostScalingFactor() {
logCostScalingFactor_ = 0D;
onChanged();
return this;
}
private double logCostOffset_ ;
/**
* double log_cost_offset = 29;
* @return The logCostOffset.
*/
@java.lang.Override
public double getLogCostOffset() {
return logCostOffset_;
}
/**
* double log_cost_offset = 29;
* @param value The logCostOffset to set.
* @return This builder for chaining.
*/
public Builder setLogCostOffset(double value) {
logCostOffset_ = value;
onChanged();
return this;
}
/**
* double log_cost_offset = 29;
* @return This builder for chaining.
*/
public Builder clearLogCostOffset() {
logCostOffset_ = 0D;
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.RoutingSearchParameters)
}
// @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters)
private static final com.google.ortools.constraintsolver.RoutingSearchParameters DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new com.google.ortools.constraintsolver.RoutingSearchParameters();
}
public static com.google.ortools.constraintsolver.RoutingSearchParameters getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser
PARSER = new com.google.protobuf.AbstractParser() {
@java.lang.Override
public RoutingSearchParameters parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new RoutingSearchParameters(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.constraintsolver.RoutingSearchParameters getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy