RoutingParameters.pb.cs
Go to the documentation of this file.
1 // <auto-generated>
2 // Generated by the protocol buffer compiler. DO NOT EDIT!
3 // source: ortools/constraint_solver/routing_parameters.proto
4 // </auto-generated>
5 #pragma warning disable 1591, 0612, 3021
6 #region Designer generated code
7 
8 using pb = global::Google.Protobuf;
9 using pbc = global::Google.Protobuf.Collections;
10 using pbr = global::Google.Protobuf.Reflection;
11 using scg = global::System.Collections.Generic;
13 
15  public static partial class RoutingParametersReflection {
16 
17  #region Descriptor
18  public static pbr::FileDescriptor Descriptor {
20  get { return descriptor; }
21  }
22  private static pbr::FileDescriptor descriptor;
23 
25  byte[] descriptorData = global::System.Convert.FromBase64String(
26  string.Concat(
27  "CjJvcnRvb2xzL2NvbnN0cmFpbnRfc29sdmVyL3JvdXRpbmdfcGFyYW1ldGVy",
28  "cy5wcm90bxITb3BlcmF0aW9uc19yZXNlYXJjaBoeZ29vZ2xlL3Byb3RvYnVm",
29  "L2R1cmF0aW9uLnByb3RvGi1vcnRvb2xzL2NvbnN0cmFpbnRfc29sdmVyL3Jv",
30  "dXRpbmdfZW51bXMucHJvdG8aMW9ydG9vbHMvY29uc3RyYWludF9zb2x2ZXIv",
31  "c29sdmVyX3BhcmFtZXRlcnMucHJvdG8aI29ydG9vbHMvdXRpbC9vcHRpb25h",
32  "bF9ib29sZWFuLnByb3RvIrwWChdSb3V0aW5nU2VhcmNoUGFyYW1ldGVycxJR",
33  "ChdmaXJzdF9zb2x1dGlvbl9zdHJhdGVneRgBIAEoDjIwLm9wZXJhdGlvbnNf",
34  "cmVzZWFyY2guRmlyc3RTb2x1dGlvblN0cmF0ZWd5LlZhbHVlEi4KJnVzZV91",
35  "bmZpbHRlcmVkX2ZpcnN0X3NvbHV0aW9uX3N0cmF0ZWd5GAIgASgIEh8KF3Nh",
36  "dmluZ3NfbmVpZ2hib3JzX3JhdGlvGA4gASgBEiYKHnNhdmluZ3NfbWF4X21l",
37  "bW9yeV91c2FnZV9ieXRlcxgXIAEoARIgChhzYXZpbmdzX2FkZF9yZXZlcnNl",
38  "X2FyY3MYDyABKAgSHwoXc2F2aW5nc19hcmNfY29lZmZpY2llbnQYEiABKAES",
39  "HwoXc2F2aW5nc19wYXJhbGxlbF9yb3V0ZXMYEyABKAgSLwonY2hlYXBlc3Rf",
40  "aW5zZXJ0aW9uX2ZhcnRoZXN0X3NlZWRzX3JhdGlvGBAgASgBEioKImNoZWFw",
41  "ZXN0X2luc2VydGlvbl9uZWlnaGJvcnNfcmF0aW8YFSABKAESbQoWbG9jYWxf",
42  "c2VhcmNoX29wZXJhdG9ycxgDIAEoCzJNLm9wZXJhdGlvbnNfcmVzZWFyY2gu",
43  "Um91dGluZ1NlYXJjaFBhcmFtZXRlcnMuTG9jYWxTZWFyY2hOZWlnaGJvcmhv",
44  "b2RPcGVyYXRvcnMSNQotcmVsb2NhdGVfZXhwZW5zaXZlX2NoYWluX251bV9h",
45  "cmNzX3RvX2NvbnNpZGVyGBQgASgFElcKGmxvY2FsX3NlYXJjaF9tZXRhaGV1",
46  "cmlzdGljGAQgASgOMjMub3BlcmF0aW9uc19yZXNlYXJjaC5Mb2NhbFNlYXJj",
47  "aE1ldGFoZXVyaXN0aWMuVmFsdWUSLgomZ3VpZGVkX2xvY2FsX3NlYXJjaF9s",
48  "YW1iZGFfY29lZmZpY2llbnQYBSABKAESHgoWdXNlX2RlcHRoX2ZpcnN0X3Nl",
49  "YXJjaBgGIAEoCBI0CgZ1c2VfY3AYHCABKA4yJC5vcGVyYXRpb25zX3Jlc2Vh",
50  "cmNoLk9wdGlvbmFsQm9vbGVhbhI4Cgp1c2VfY3Bfc2F0GBsgASgOMiQub3Bl",
51  "cmF0aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SGQoRb3B0aW1pemF0",
52  "aW9uX3N0ZXAYByABKAESJgoebnVtYmVyX29mX3NvbHV0aW9uc190b19jb2xs",
53  "ZWN0GBEgASgFEhYKDnNvbHV0aW9uX2xpbWl0GAggASgDEi0KCnRpbWVfbGlt",
54  "aXQYCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SMQoObG5zX3Rp",
55  "bWVfbGltaXQYCiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHAoU",
56  "dXNlX2Z1bGxfcHJvcGFnYXRpb24YCyABKAgSEgoKbG9nX3NlYXJjaBgNIAEo",
57  "CBIfChdsb2dfY29zdF9zY2FsaW5nX2ZhY3RvchgWIAEoARrEDQogTG9jYWxT",
58  "ZWFyY2hOZWlnaGJvcmhvb2RPcGVyYXRvcnMSOgoMdXNlX3JlbG9jYXRlGAEg",
59  "ASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SPwoR",
60  "dXNlX3JlbG9jYXRlX3BhaXIYAiABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNo",
61  "Lk9wdGlvbmFsQm9vbGVhbhJFChd1c2VfbGlnaHRfcmVsb2NhdGVfcGFpchgY",
62  "IAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEkQK",
63  "FnVzZV9yZWxvY2F0ZV9uZWlnaGJvcnMYAyABKA4yJC5vcGVyYXRpb25zX3Jl",
64  "c2VhcmNoLk9wdGlvbmFsQm9vbGVhbhJCChR1c2VfcmVsb2NhdGVfc3VidHJp",
65  "cBgZIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFu",
66  "EjoKDHVzZV9leGNoYW5nZRgEIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2gu",
67  "T3B0aW9uYWxCb29sZWFuEj8KEXVzZV9leGNoYW5nZV9wYWlyGBYgASgOMiQu",
68  "b3BlcmF0aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SQgoUdXNlX2V4",
69  "Y2hhbmdlX3N1YnRyaXAYGiABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9w",
70  "dGlvbmFsQm9vbGVhbhI3Cgl1c2VfY3Jvc3MYBSABKA4yJC5vcGVyYXRpb25z",
71  "X3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVhbhJAChJ1c2VfY3Jvc3NfZXhjaGFu",
72  "Z2UYBiABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVh",
73  "bhJKChx1c2VfcmVsb2NhdGVfZXhwZW5zaXZlX2NoYWluGBcgASgOMiQub3Bl",
74  "cmF0aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SOQoLdXNlX3R3b19v",
75  "cHQYByABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVh",
76  "bhI4Cgp1c2Vfb3Jfb3B0GAggASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5P",
77  "cHRpb25hbEJvb2xlYW4SPwoRdXNlX2xpbl9rZXJuaWdoYW4YCSABKA4yJC5v",
78  "cGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVhbhI5Cgt1c2VfdHNw",
79  "X29wdBgKIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29s",
80  "ZWFuEj0KD3VzZV9tYWtlX2FjdGl2ZRgLIAEoDjIkLm9wZXJhdGlvbnNfcmVz",
81  "ZWFyY2guT3B0aW9uYWxCb29sZWFuEkoKHHVzZV9yZWxvY2F0ZV9hbmRfbWFr",
82  "ZV9hY3RpdmUYFSABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFs",
83  "Qm9vbGVhbhI/ChF1c2VfbWFrZV9pbmFjdGl2ZRgMIAEoDjIkLm9wZXJhdGlv",
84  "bnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEkUKF3VzZV9tYWtlX2NoYWlu",
85  "X2luYWN0aXZlGA0gASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5PcHRpb25h",
86  "bEJvb2xlYW4SPQoPdXNlX3N3YXBfYWN0aXZlGA4gASgOMiQub3BlcmF0aW9u",
87  "c19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SRgoYdXNlX2V4dGVuZGVkX3N3",
88  "YXBfYWN0aXZlGA8gASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5PcHRpb25h",
89  "bEJvb2xlYW4SRwoZdXNlX25vZGVfcGFpcl9zd2FwX2FjdGl2ZRgUIAEoDjIk",
90  "Lm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEjoKDHVzZV9w",
91  "YXRoX2xucxgQIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxC",
92  "b29sZWFuEj8KEXVzZV9mdWxsX3BhdGhfbG5zGBEgASgOMiQub3BlcmF0aW9u",
93  "c19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SOQoLdXNlX3RzcF9sbnMYEiAB",
94  "KA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVhbhI+ChB1",
95  "c2VfaW5hY3RpdmVfbG5zGBMgASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5P",
96  "cHRpb25hbEJvb2xlYW4iqAEKFlJvdXRpbmdNb2RlbFBhcmFtZXRlcnMSSgoR",
97  "c29sdmVyX3BhcmFtZXRlcnMYASABKAsyLy5vcGVyYXRpb25zX3Jlc2VhcmNo",
98  "LkNvbnN0cmFpbnRTb2x2ZXJQYXJhbWV0ZXJzEiEKGXJlZHVjZV92ZWhpY2xl",
99  "X2Nvc3RfbW9kZWwYAiABKAgSHwoXbWF4X2NhbGxiYWNrX2NhY2hlX3NpemUY",
100  "AyABKAVCSQojY29tLmdvb2dsZS5vcnRvb2xzLmNvbnN0cmFpbnRzb2x2ZXJQ",
101  "AaoCH0dvb2dsZS5PclRvb2xzLkNvbnN0cmFpbnRTb2x2ZXJiBnByb3RvMw=="));
102  descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
103  new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.OrTools.ConstraintSolver.RoutingEnumsReflection.Descriptor, global::Google.OrTools.ConstraintSolver.SolverParametersReflection.Descriptor, global::Google.OrTools.Util.OptionalBooleanReflection.Descriptor, },
104  new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
105  new pbr::GeneratedClrTypeInfo(typeof(global::Google.OrTools.ConstraintSolver.RoutingSearchParameters), global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Parser, new[]{ "FirstSolutionStrategy", "UseUnfilteredFirstSolutionStrategy", "SavingsNeighborsRatio", "SavingsMaxMemoryUsageBytes", "SavingsAddReverseArcs", "SavingsArcCoefficient", "SavingsParallelRoutes", "CheapestInsertionFarthestSeedsRatio", "CheapestInsertionNeighborsRatio", "LocalSearchOperators", "RelocateExpensiveChainNumArcsToConsider", "LocalSearchMetaheuristic", "GuidedLocalSearchLambdaCoefficient", "UseDepthFirstSearch", "UseCp", "UseCpSat", "OptimizationStep", "NumberOfSolutionsToCollect", "SolutionLimit", "TimeLimit", "LnsTimeLimit", "UseFullPropagation", "LogSearch", "LogCostScalingFactor" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators), global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators.Parser, new[]{ "UseRelocate", "UseRelocatePair", "UseLightRelocatePair", "UseRelocateNeighbors", "UseRelocateSubtrip", "UseExchange", "UseExchangePair", "UseExchangeSubtrip", "UseCross", "UseCrossExchange", "UseRelocateExpensiveChain", "UseTwoOpt", "UseOrOpt", "UseLinKernighan", "UseTspOpt", "UseMakeActive", "UseRelocateAndMakeActive", "UseMakeInactive", "UseMakeChainInactive", "UseSwapActive", "UseExtendedSwapActive", "UseNodePairSwapActive", "UsePathLns", "UseFullPathLns", "UseTspLns", "UseInactiveLns" }, null, null, null)}),
106  new pbr::GeneratedClrTypeInfo(typeof(global::Google.OrTools.ConstraintSolver.RoutingModelParameters), global::Google.OrTools.ConstraintSolver.RoutingModelParameters.Parser, new[]{ "SolverParameters", "ReduceVehicleCostModel", "MaxCallbackCacheSize" }, null, null, null)
107  }));
108  }
109  #endregion
110 
111  }
112  #region Messages
113  public sealed partial class RoutingSearchParameters : pb::IMessage<RoutingSearchParameters> {
122  private static readonly pb::MessageParser<RoutingSearchParameters> _parser = new pb::MessageParser<RoutingSearchParameters>(() => new RoutingSearchParameters());
123  private pb::UnknownFieldSet _unknownFields;
124  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
125  public static pb::MessageParser<RoutingSearchParameters> Parser { get { return _parser; } }
126 
127  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
128  public static pbr::MessageDescriptor Descriptor {
129  get { return global::Google.OrTools.ConstraintSolver.RoutingParametersReflection.Descriptor.MessageTypes[0]; }
130  }
131 
132  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
133  pbr::MessageDescriptor pb::IMessage.Descriptor {
134  get { return Descriptor; }
135  }
136 
137  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
139  OnConstruction();
140  }
141 
142  partial void OnConstruction();
143 
144  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
146  firstSolutionStrategy_ = other.firstSolutionStrategy_;
147  useUnfilteredFirstSolutionStrategy_ = other.useUnfilteredFirstSolutionStrategy_;
148  savingsNeighborsRatio_ = other.savingsNeighborsRatio_;
149  savingsMaxMemoryUsageBytes_ = other.savingsMaxMemoryUsageBytes_;
150  savingsAddReverseArcs_ = other.savingsAddReverseArcs_;
151  savingsArcCoefficient_ = other.savingsArcCoefficient_;
152  savingsParallelRoutes_ = other.savingsParallelRoutes_;
153  cheapestInsertionFarthestSeedsRatio_ = other.cheapestInsertionFarthestSeedsRatio_;
154  cheapestInsertionNeighborsRatio_ = other.cheapestInsertionNeighborsRatio_;
155  localSearchOperators_ = other.localSearchOperators_ != null ? other.localSearchOperators_.Clone() : null;
156  relocateExpensiveChainNumArcsToConsider_ = other.relocateExpensiveChainNumArcsToConsider_;
157  localSearchMetaheuristic_ = other.localSearchMetaheuristic_;
158  guidedLocalSearchLambdaCoefficient_ = other.guidedLocalSearchLambdaCoefficient_;
159  useDepthFirstSearch_ = other.useDepthFirstSearch_;
160  useCp_ = other.useCp_;
161  useCpSat_ = other.useCpSat_;
162  optimizationStep_ = other.optimizationStep_;
163  numberOfSolutionsToCollect_ = other.numberOfSolutionsToCollect_;
164  solutionLimit_ = other.solutionLimit_;
165  timeLimit_ = other.timeLimit_ != null ? other.timeLimit_.Clone() : null;
166  lnsTimeLimit_ = other.lnsTimeLimit_ != null ? other.lnsTimeLimit_.Clone() : null;
167  useFullPropagation_ = other.useFullPropagation_;
168  logSearch_ = other.logSearch_;
169  logCostScalingFactor_ = other.logCostScalingFactor_;
170  _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
171  }
172 
173  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
175  return new RoutingSearchParameters(this);
176  }
177 
179  public const int FirstSolutionStrategyFieldNumber = 1;
180  private global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value firstSolutionStrategy_ = 0;
184  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
185  public global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value FirstSolutionStrategy {
186  get { return firstSolutionStrategy_; }
187  set {
188  firstSolutionStrategy_ = value;
189  }
190  }
191 
193  public const int UseUnfilteredFirstSolutionStrategyFieldNumber = 2;
194  private bool useUnfilteredFirstSolutionStrategy_;
201  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
202  public bool UseUnfilteredFirstSolutionStrategy {
203  get { return useUnfilteredFirstSolutionStrategy_; }
204  set {
205  useUnfilteredFirstSolutionStrategy_ = value;
206  }
207  }
208 
210  public const int SavingsNeighborsRatioFieldNumber = 14;
211  private double savingsNeighborsRatio_;
217  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
218  public double SavingsNeighborsRatio {
219  get { return savingsNeighborsRatio_; }
220  set {
221  savingsNeighborsRatio_ = value;
222  }
223  }
224 
226  public const int SavingsMaxMemoryUsageBytesFieldNumber = 23;
227  private double savingsMaxMemoryUsageBytes_;
236  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
237  public double SavingsMaxMemoryUsageBytes {
238  get { return savingsMaxMemoryUsageBytes_; }
239  set {
240  savingsMaxMemoryUsageBytes_ = value;
241  }
242  }
243 
245  public const int SavingsAddReverseArcsFieldNumber = 15;
246  private bool savingsAddReverseArcs_;
251  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
252  public bool SavingsAddReverseArcs {
253  get { return savingsAddReverseArcs_; }
254  set {
255  savingsAddReverseArcs_ = value;
256  }
257  }
258 
260  public const int SavingsArcCoefficientFieldNumber = 18;
261  private double savingsArcCoefficient_;
269  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
270  public double SavingsArcCoefficient {
271  get { return savingsArcCoefficient_; }
272  set {
273  savingsArcCoefficient_ = value;
274  }
275  }
276 
278  public const int SavingsParallelRoutesFieldNumber = 19;
279  private bool savingsParallelRoutes_;
283  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
284  public bool SavingsParallelRoutes {
285  get { return savingsParallelRoutes_; }
286  set {
287  savingsParallelRoutes_ = value;
288  }
289  }
290 
292  public const int CheapestInsertionFarthestSeedsRatioFieldNumber = 16;
293  private double cheapestInsertionFarthestSeedsRatio_;
299  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
300  public double CheapestInsertionFarthestSeedsRatio {
301  get { return cheapestInsertionFarthestSeedsRatio_; }
302  set {
303  cheapestInsertionFarthestSeedsRatio_ = value;
304  }
305  }
306 
308  public const int CheapestInsertionNeighborsRatioFieldNumber = 21;
309  private double cheapestInsertionNeighborsRatio_;
316  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
317  public double CheapestInsertionNeighborsRatio {
318  get { return cheapestInsertionNeighborsRatio_; }
319  set {
320  cheapestInsertionNeighborsRatio_ = value;
321  }
322  }
323 
325  public const int LocalSearchOperatorsFieldNumber = 3;
326  private global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators localSearchOperators_;
327  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
328  public global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators LocalSearchOperators {
329  get { return localSearchOperators_; }
330  set {
331  localSearchOperators_ = value;
332  }
333  }
334 
336  public const int RelocateExpensiveChainNumArcsToConsiderFieldNumber = 20;
337  private int relocateExpensiveChainNumArcsToConsider_;
347  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
348  public int RelocateExpensiveChainNumArcsToConsider {
349  get { return relocateExpensiveChainNumArcsToConsider_; }
350  set {
351  relocateExpensiveChainNumArcsToConsider_ = value;
352  }
353  }
354 
356  public const int LocalSearchMetaheuristicFieldNumber = 4;
357  private global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value localSearchMetaheuristic_ = 0;
361  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
362  public global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value LocalSearchMetaheuristic {
363  get { return localSearchMetaheuristic_; }
364  set {
365  localSearchMetaheuristic_ = value;
366  }
367  }
368 
370  public const int GuidedLocalSearchLambdaCoefficientFieldNumber = 5;
371  private double guidedLocalSearchLambdaCoefficient_;
378  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
379  public double GuidedLocalSearchLambdaCoefficient {
380  get { return guidedLocalSearchLambdaCoefficient_; }
381  set {
382  guidedLocalSearchLambdaCoefficient_ = value;
383  }
384  }
385 
387  public const int UseDepthFirstSearchFieldNumber = 6;
388  private bool useDepthFirstSearch_;
395  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
396  public bool UseDepthFirstSearch {
397  get { return useDepthFirstSearch_; }
398  set {
399  useDepthFirstSearch_ = value;
400  }
401  }
402 
404  public const int UseCpFieldNumber = 28;
405  private global::Google.OrTools.Util.OptionalBoolean useCp_ = 0;
411  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
412  public global::Google.OrTools.Util.OptionalBoolean UseCp {
413  get { return useCp_; }
414  set {
415  useCp_ = value;
416  }
417  }
418 
420  public const int UseCpSatFieldNumber = 27;
421  private global::Google.OrTools.Util.OptionalBoolean useCpSat_ = 0;
428  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
429  public global::Google.OrTools.Util.OptionalBoolean UseCpSat {
430  get { return useCpSat_; }
431  set {
432  useCpSat_ = value;
433  }
434  }
435 
437  public const int OptimizationStepFieldNumber = 7;
438  private double optimizationStep_;
444  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
445  public double OptimizationStep {
446  get { return optimizationStep_; }
447  set {
448  optimizationStep_ = value;
449  }
450  }
451 
453  public const int NumberOfSolutionsToCollectFieldNumber = 17;
454  private int numberOfSolutionsToCollect_;
459  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
460  public int NumberOfSolutionsToCollect {
461  get { return numberOfSolutionsToCollect_; }
462  set {
463  numberOfSolutionsToCollect_ = value;
464  }
465  }
466 
468  public const int SolutionLimitFieldNumber = 8;
469  private long solutionLimit_;
475  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
476  public long SolutionLimit {
477  get { return solutionLimit_; }
478  set {
479  solutionLimit_ = value;
480  }
481  }
482 
484  public const int TimeLimitFieldNumber = 9;
485  private global::Google.Protobuf.WellKnownTypes.Duration timeLimit_;
489  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
490  public global::Google.Protobuf.WellKnownTypes.Duration TimeLimit {
491  get { return timeLimit_; }
492  set {
493  timeLimit_ = value;
494  }
495  }
496 
498  public const int LnsTimeLimitFieldNumber = 10;
499  private global::Google.Protobuf.WellKnownTypes.Duration lnsTimeLimit_;
504  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
505  public global::Google.Protobuf.WellKnownTypes.Duration LnsTimeLimit {
506  get { return lnsTimeLimit_; }
507  set {
508  lnsTimeLimit_ = value;
509  }
510  }
511 
513  public const int UseFullPropagationFieldNumber = 11;
514  private bool useFullPropagation_;
527  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
528  public bool UseFullPropagation {
529  get { return useFullPropagation_; }
530  set {
531  useFullPropagation_ = value;
532  }
533  }
534 
536  public const int LogSearchFieldNumber = 13;
537  private bool logSearch_;
553  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
554  public bool LogSearch {
555  get { return logSearch_; }
556  set {
557  logSearch_ = value;
558  }
559  }
560 
562  public const int LogCostScalingFactorFieldNumber = 22;
563  private double logCostScalingFactor_;
567  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
568  public double LogCostScalingFactor {
569  get { return logCostScalingFactor_; }
570  set {
571  logCostScalingFactor_ = value;
572  }
573  }
574 
575  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
576  public override bool Equals(object other) {
577  return Equals(other as RoutingSearchParameters);
578  }
579 
580  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
581  public bool Equals(RoutingSearchParameters other) {
582  if (ReferenceEquals(other, null)) {
583  return false;
584  }
585  if (ReferenceEquals(other, this)) {
586  return true;
587  }
588  if (FirstSolutionStrategy != other.FirstSolutionStrategy) return false;
589  if (UseUnfilteredFirstSolutionStrategy != other.UseUnfilteredFirstSolutionStrategy) return false;
590  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SavingsNeighborsRatio, other.SavingsNeighborsRatio)) return false;
591  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SavingsMaxMemoryUsageBytes, other.SavingsMaxMemoryUsageBytes)) return false;
592  if (SavingsAddReverseArcs != other.SavingsAddReverseArcs) return false;
593  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SavingsArcCoefficient, other.SavingsArcCoefficient)) return false;
594  if (SavingsParallelRoutes != other.SavingsParallelRoutes) return false;
595  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(CheapestInsertionFarthestSeedsRatio, other.CheapestInsertionFarthestSeedsRatio)) return false;
596  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(CheapestInsertionNeighborsRatio, other.CheapestInsertionNeighborsRatio)) return false;
597  if (!object.Equals(LocalSearchOperators, other.LocalSearchOperators)) return false;
598  if (RelocateExpensiveChainNumArcsToConsider != other.RelocateExpensiveChainNumArcsToConsider) return false;
599  if (LocalSearchMetaheuristic != other.LocalSearchMetaheuristic) return false;
600  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(GuidedLocalSearchLambdaCoefficient, other.GuidedLocalSearchLambdaCoefficient)) return false;
601  if (UseDepthFirstSearch != other.UseDepthFirstSearch) return false;
602  if (UseCp != other.UseCp) return false;
603  if (UseCpSat != other.UseCpSat) return false;
604  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(OptimizationStep, other.OptimizationStep)) return false;
605  if (NumberOfSolutionsToCollect != other.NumberOfSolutionsToCollect) return false;
606  if (SolutionLimit != other.SolutionLimit) return false;
607  if (!object.Equals(TimeLimit, other.TimeLimit)) return false;
608  if (!object.Equals(LnsTimeLimit, other.LnsTimeLimit)) return false;
609  if (UseFullPropagation != other.UseFullPropagation) return false;
610  if (LogSearch != other.LogSearch) return false;
611  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(LogCostScalingFactor, other.LogCostScalingFactor)) return false;
612  return Equals(_unknownFields, other._unknownFields);
613  }
614 
615  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
616  public override int GetHashCode() {
617  int hash = 1;
619  if (UseUnfilteredFirstSolutionStrategy != false) hash ^= UseUnfilteredFirstSolutionStrategy.GetHashCode();
620  if (SavingsNeighborsRatio != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SavingsNeighborsRatio);
621  if (SavingsMaxMemoryUsageBytes != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SavingsMaxMemoryUsageBytes);
622  if (SavingsAddReverseArcs != false) hash ^= SavingsAddReverseArcs.GetHashCode();
623  if (SavingsArcCoefficient != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SavingsArcCoefficient);
624  if (SavingsParallelRoutes != false) hash ^= SavingsParallelRoutes.GetHashCode();
625  if (CheapestInsertionFarthestSeedsRatio != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(CheapestInsertionFarthestSeedsRatio);
626  if (CheapestInsertionNeighborsRatio != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(CheapestInsertionNeighborsRatio);
627  if (localSearchOperators_ != null) hash ^= LocalSearchOperators.GetHashCode();
628  if (RelocateExpensiveChainNumArcsToConsider != 0) hash ^= RelocateExpensiveChainNumArcsToConsider.GetHashCode();
630  if (GuidedLocalSearchLambdaCoefficient != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(GuidedLocalSearchLambdaCoefficient);
631  if (UseDepthFirstSearch != false) hash ^= UseDepthFirstSearch.GetHashCode();
632  if (UseCp != 0) hash ^= UseCp.GetHashCode();
633  if (UseCpSat != 0) hash ^= UseCpSat.GetHashCode();
634  if (OptimizationStep != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(OptimizationStep);
635  if (NumberOfSolutionsToCollect != 0) hash ^= NumberOfSolutionsToCollect.GetHashCode();
636  if (SolutionLimit != 0L) hash ^= SolutionLimit.GetHashCode();
637  if (timeLimit_ != null) hash ^= TimeLimit.GetHashCode();
638  if (lnsTimeLimit_ != null) hash ^= LnsTimeLimit.GetHashCode();
639  if (UseFullPropagation != false) hash ^= UseFullPropagation.GetHashCode();
640  if (LogSearch != false) hash ^= LogSearch.GetHashCode();
641  if (LogCostScalingFactor != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(LogCostScalingFactor);
642  if (_unknownFields != null) {
643  hash ^= _unknownFields.GetHashCode();
644  }
645  return hash;
646  }
647 
648  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
649  public override string ToString() {
650  return pb::JsonFormatter.ToDiagnosticString(this);
651  }
652 
653  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
654  public void WriteTo(pb::CodedOutputStream output) {
655  if (FirstSolutionStrategy != 0) {
656  output.WriteRawTag(8);
657  output.WriteEnum((int) FirstSolutionStrategy);
658  }
659  if (UseUnfilteredFirstSolutionStrategy != false) {
660  output.WriteRawTag(16);
661  output.WriteBool(UseUnfilteredFirstSolutionStrategy);
662  }
663  if (localSearchOperators_ != null) {
664  output.WriteRawTag(26);
665  output.WriteMessage(LocalSearchOperators);
666  }
667  if (LocalSearchMetaheuristic != 0) {
668  output.WriteRawTag(32);
669  output.WriteEnum((int) LocalSearchMetaheuristic);
670  }
671  if (GuidedLocalSearchLambdaCoefficient != 0D) {
672  output.WriteRawTag(41);
673  output.WriteDouble(GuidedLocalSearchLambdaCoefficient);
674  }
675  if (UseDepthFirstSearch != false) {
676  output.WriteRawTag(48);
677  output.WriteBool(UseDepthFirstSearch);
678  }
679  if (OptimizationStep != 0D) {
680  output.WriteRawTag(57);
681  output.WriteDouble(OptimizationStep);
682  }
683  if (SolutionLimit != 0L) {
684  output.WriteRawTag(64);
685  output.WriteInt64(SolutionLimit);
686  }
687  if (timeLimit_ != null) {
688  output.WriteRawTag(74);
689  output.WriteMessage(TimeLimit);
690  }
691  if (lnsTimeLimit_ != null) {
692  output.WriteRawTag(82);
693  output.WriteMessage(LnsTimeLimit);
694  }
695  if (UseFullPropagation != false) {
696  output.WriteRawTag(88);
697  output.WriteBool(UseFullPropagation);
698  }
699  if (LogSearch != false) {
700  output.WriteRawTag(104);
701  output.WriteBool(LogSearch);
702  }
703  if (SavingsNeighborsRatio != 0D) {
704  output.WriteRawTag(113);
705  output.WriteDouble(SavingsNeighborsRatio);
706  }
707  if (SavingsAddReverseArcs != false) {
708  output.WriteRawTag(120);
709  output.WriteBool(SavingsAddReverseArcs);
710  }
711  if (CheapestInsertionFarthestSeedsRatio != 0D) {
712  output.WriteRawTag(129, 1);
713  output.WriteDouble(CheapestInsertionFarthestSeedsRatio);
714  }
715  if (NumberOfSolutionsToCollect != 0) {
716  output.WriteRawTag(136, 1);
717  output.WriteInt32(NumberOfSolutionsToCollect);
718  }
719  if (SavingsArcCoefficient != 0D) {
720  output.WriteRawTag(145, 1);
721  output.WriteDouble(SavingsArcCoefficient);
722  }
723  if (SavingsParallelRoutes != false) {
724  output.WriteRawTag(152, 1);
725  output.WriteBool(SavingsParallelRoutes);
726  }
727  if (RelocateExpensiveChainNumArcsToConsider != 0) {
728  output.WriteRawTag(160, 1);
729  output.WriteInt32(RelocateExpensiveChainNumArcsToConsider);
730  }
731  if (CheapestInsertionNeighborsRatio != 0D) {
732  output.WriteRawTag(169, 1);
733  output.WriteDouble(CheapestInsertionNeighborsRatio);
734  }
735  if (LogCostScalingFactor != 0D) {
736  output.WriteRawTag(177, 1);
737  output.WriteDouble(LogCostScalingFactor);
738  }
739  if (SavingsMaxMemoryUsageBytes != 0D) {
740  output.WriteRawTag(185, 1);
741  output.WriteDouble(SavingsMaxMemoryUsageBytes);
742  }
743  if (UseCpSat != 0) {
744  output.WriteRawTag(216, 1);
745  output.WriteEnum((int) UseCpSat);
746  }
747  if (UseCp != 0) {
748  output.WriteRawTag(224, 1);
749  output.WriteEnum((int) UseCp);
750  }
751  if (_unknownFields != null) {
752  _unknownFields.WriteTo(output);
753  }
754  }
755 
756  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
757  public int CalculateSize() {
758  int size = 0;
759  if (FirstSolutionStrategy != 0) {
760  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FirstSolutionStrategy);
761  }
762  if (UseUnfilteredFirstSolutionStrategy != false) {
763  size += 1 + 1;
764  }
765  if (SavingsNeighborsRatio != 0D) {
766  size += 1 + 8;
767  }
768  if (SavingsMaxMemoryUsageBytes != 0D) {
769  size += 2 + 8;
770  }
771  if (SavingsAddReverseArcs != false) {
772  size += 1 + 1;
773  }
774  if (SavingsArcCoefficient != 0D) {
775  size += 2 + 8;
776  }
777  if (SavingsParallelRoutes != false) {
778  size += 2 + 1;
779  }
780  if (CheapestInsertionFarthestSeedsRatio != 0D) {
781  size += 2 + 8;
782  }
783  if (CheapestInsertionNeighborsRatio != 0D) {
784  size += 2 + 8;
785  }
786  if (localSearchOperators_ != null) {
787  size += 1 + pb::CodedOutputStream.ComputeMessageSize(LocalSearchOperators);
788  }
789  if (RelocateExpensiveChainNumArcsToConsider != 0) {
790  size += 2 + pb::CodedOutputStream.ComputeInt32Size(RelocateExpensiveChainNumArcsToConsider);
791  }
792  if (LocalSearchMetaheuristic != 0) {
793  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LocalSearchMetaheuristic);
794  }
795  if (GuidedLocalSearchLambdaCoefficient != 0D) {
796  size += 1 + 8;
797  }
798  if (UseDepthFirstSearch != false) {
799  size += 1 + 1;
800  }
801  if (UseCp != 0) {
802  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseCp);
803  }
804  if (UseCpSat != 0) {
805  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseCpSat);
806  }
807  if (OptimizationStep != 0D) {
808  size += 1 + 8;
809  }
810  if (NumberOfSolutionsToCollect != 0) {
811  size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumberOfSolutionsToCollect);
812  }
813  if (SolutionLimit != 0L) {
814  size += 1 + pb::CodedOutputStream.ComputeInt64Size(SolutionLimit);
815  }
816  if (timeLimit_ != null) {
817  size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimeLimit);
818  }
819  if (lnsTimeLimit_ != null) {
820  size += 1 + pb::CodedOutputStream.ComputeMessageSize(LnsTimeLimit);
821  }
822  if (UseFullPropagation != false) {
823  size += 1 + 1;
824  }
825  if (LogSearch != false) {
826  size += 1 + 1;
827  }
828  if (LogCostScalingFactor != 0D) {
829  size += 2 + 8;
830  }
831  if (_unknownFields != null) {
832  size += _unknownFields.CalculateSize();
833  }
834  return size;
835  }
836 
837  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
838  public void MergeFrom(RoutingSearchParameters other) {
839  if (other == null) {
840  return;
841  }
842  if (other.FirstSolutionStrategy != 0) {
843  FirstSolutionStrategy = other.FirstSolutionStrategy;
844  }
845  if (other.UseUnfilteredFirstSolutionStrategy != false) {
846  UseUnfilteredFirstSolutionStrategy = other.UseUnfilteredFirstSolutionStrategy;
847  }
848  if (other.SavingsNeighborsRatio != 0D) {
849  SavingsNeighborsRatio = other.SavingsNeighborsRatio;
850  }
851  if (other.SavingsMaxMemoryUsageBytes != 0D) {
852  SavingsMaxMemoryUsageBytes = other.SavingsMaxMemoryUsageBytes;
853  }
854  if (other.SavingsAddReverseArcs != false) {
855  SavingsAddReverseArcs = other.SavingsAddReverseArcs;
856  }
857  if (other.SavingsArcCoefficient != 0D) {
858  SavingsArcCoefficient = other.SavingsArcCoefficient;
859  }
860  if (other.SavingsParallelRoutes != false) {
861  SavingsParallelRoutes = other.SavingsParallelRoutes;
862  }
863  if (other.CheapestInsertionFarthestSeedsRatio != 0D) {
864  CheapestInsertionFarthestSeedsRatio = other.CheapestInsertionFarthestSeedsRatio;
865  }
866  if (other.CheapestInsertionNeighborsRatio != 0D) {
867  CheapestInsertionNeighborsRatio = other.CheapestInsertionNeighborsRatio;
868  }
869  if (other.localSearchOperators_ != null) {
870  if (localSearchOperators_ == null) {
871  LocalSearchOperators = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators();
872  }
873  LocalSearchOperators.MergeFrom(other.LocalSearchOperators);
874  }
875  if (other.RelocateExpensiveChainNumArcsToConsider != 0) {
876  RelocateExpensiveChainNumArcsToConsider = other.RelocateExpensiveChainNumArcsToConsider;
877  }
878  if (other.LocalSearchMetaheuristic != 0) {
879  LocalSearchMetaheuristic = other.LocalSearchMetaheuristic;
880  }
881  if (other.GuidedLocalSearchLambdaCoefficient != 0D) {
882  GuidedLocalSearchLambdaCoefficient = other.GuidedLocalSearchLambdaCoefficient;
883  }
884  if (other.UseDepthFirstSearch != false) {
885  UseDepthFirstSearch = other.UseDepthFirstSearch;
886  }
887  if (other.UseCp != 0) {
888  UseCp = other.UseCp;
889  }
890  if (other.UseCpSat != 0) {
891  UseCpSat = other.UseCpSat;
892  }
893  if (other.OptimizationStep != 0D) {
894  OptimizationStep = other.OptimizationStep;
895  }
896  if (other.NumberOfSolutionsToCollect != 0) {
897  NumberOfSolutionsToCollect = other.NumberOfSolutionsToCollect;
898  }
899  if (other.SolutionLimit != 0L) {
900  SolutionLimit = other.SolutionLimit;
901  }
902  if (other.timeLimit_ != null) {
903  if (timeLimit_ == null) {
904  TimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
905  }
906  TimeLimit.MergeFrom(other.TimeLimit);
907  }
908  if (other.lnsTimeLimit_ != null) {
909  if (lnsTimeLimit_ == null) {
910  LnsTimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
911  }
912  LnsTimeLimit.MergeFrom(other.LnsTimeLimit);
913  }
914  if (other.UseFullPropagation != false) {
915  UseFullPropagation = other.UseFullPropagation;
916  }
917  if (other.LogSearch != false) {
918  LogSearch = other.LogSearch;
919  }
920  if (other.LogCostScalingFactor != 0D) {
921  LogCostScalingFactor = other.LogCostScalingFactor;
922  }
923  _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
924  }
925 
926  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
927  public void MergeFrom(pb::CodedInputStream input) {
928  uint tag;
929  while ((tag = input.ReadTag()) != 0) {
930  switch(tag) {
931  default:
932  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
933  break;
934  case 8: {
935  FirstSolutionStrategy = (global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value) input.ReadEnum();
936  break;
937  }
938  case 16: {
939  UseUnfilteredFirstSolutionStrategy = input.ReadBool();
940  break;
941  }
942  case 26: {
943  if (localSearchOperators_ == null) {
944  LocalSearchOperators = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators();
945  }
946  input.ReadMessage(LocalSearchOperators);
947  break;
948  }
949  case 32: {
950  LocalSearchMetaheuristic = (global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value) input.ReadEnum();
951  break;
952  }
953  case 41: {
954  GuidedLocalSearchLambdaCoefficient = input.ReadDouble();
955  break;
956  }
957  case 48: {
958  UseDepthFirstSearch = input.ReadBool();
959  break;
960  }
961  case 57: {
962  OptimizationStep = input.ReadDouble();
963  break;
964  }
965  case 64: {
966  SolutionLimit = input.ReadInt64();
967  break;
968  }
969  case 74: {
970  if (timeLimit_ == null) {
971  TimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
972  }
973  input.ReadMessage(TimeLimit);
974  break;
975  }
976  case 82: {
977  if (lnsTimeLimit_ == null) {
978  LnsTimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
979  }
980  input.ReadMessage(LnsTimeLimit);
981  break;
982  }
983  case 88: {
984  UseFullPropagation = input.ReadBool();
985  break;
986  }
987  case 104: {
988  LogSearch = input.ReadBool();
989  break;
990  }
991  case 113: {
992  SavingsNeighborsRatio = input.ReadDouble();
993  break;
994  }
995  case 120: {
996  SavingsAddReverseArcs = input.ReadBool();
997  break;
998  }
999  case 129: {
1000  CheapestInsertionFarthestSeedsRatio = input.ReadDouble();
1001  break;
1002  }
1003  case 136: {
1004  NumberOfSolutionsToCollect = input.ReadInt32();
1005  break;
1006  }
1007  case 145: {
1008  SavingsArcCoefficient = input.ReadDouble();
1009  break;
1010  }
1011  case 152: {
1012  SavingsParallelRoutes = input.ReadBool();
1013  break;
1014  }
1015  case 160: {
1016  RelocateExpensiveChainNumArcsToConsider = input.ReadInt32();
1017  break;
1018  }
1019  case 169: {
1020  CheapestInsertionNeighborsRatio = input.ReadDouble();
1021  break;
1022  }
1023  case 177: {
1024  LogCostScalingFactor = input.ReadDouble();
1025  break;
1026  }
1027  case 185: {
1028  SavingsMaxMemoryUsageBytes = input.ReadDouble();
1029  break;
1030  }
1031  case 216: {
1032  UseCpSat = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
1033  break;
1034  }
1035  case 224: {
1036  UseCp = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
1037  break;
1038  }
1039  }
1040  }
1041  }
1042 
1043  #region Nested types
1044  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1046  public static partial class Types {
1051  public sealed partial class LocalSearchNeighborhoodOperators : pb::IMessage<LocalSearchNeighborhoodOperators> {
1052  private static readonly pb::MessageParser<LocalSearchNeighborhoodOperators> _parser = new pb::MessageParser<LocalSearchNeighborhoodOperators>(() => new LocalSearchNeighborhoodOperators());
1053  private pb::UnknownFieldSet _unknownFields;
1054  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1055  public static pb::MessageParser<LocalSearchNeighborhoodOperators> Parser { get { return _parser; } }
1056 
1057  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1058  public static pbr::MessageDescriptor Descriptor {
1059  get { return global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Descriptor.NestedTypes[0]; }
1060  }
1061 
1062  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1063  pbr::MessageDescriptor pb::IMessage.Descriptor {
1064  get { return Descriptor; }
1065  }
1066 
1067  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1069  OnConstruction();
1070  }
1071 
1072  partial void OnConstruction();
1073 
1074  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1076  useRelocate_ = other.useRelocate_;
1077  useRelocatePair_ = other.useRelocatePair_;
1078  useLightRelocatePair_ = other.useLightRelocatePair_;
1079  useRelocateNeighbors_ = other.useRelocateNeighbors_;
1080  useRelocateSubtrip_ = other.useRelocateSubtrip_;
1081  useExchange_ = other.useExchange_;
1082  useExchangePair_ = other.useExchangePair_;
1083  useExchangeSubtrip_ = other.useExchangeSubtrip_;
1084  useCross_ = other.useCross_;
1085  useCrossExchange_ = other.useCrossExchange_;
1086  useRelocateExpensiveChain_ = other.useRelocateExpensiveChain_;
1087  useTwoOpt_ = other.useTwoOpt_;
1088  useOrOpt_ = other.useOrOpt_;
1089  useLinKernighan_ = other.useLinKernighan_;
1090  useTspOpt_ = other.useTspOpt_;
1091  useMakeActive_ = other.useMakeActive_;
1092  useRelocateAndMakeActive_ = other.useRelocateAndMakeActive_;
1093  useMakeInactive_ = other.useMakeInactive_;
1094  useMakeChainInactive_ = other.useMakeChainInactive_;
1095  useSwapActive_ = other.useSwapActive_;
1096  useExtendedSwapActive_ = other.useExtendedSwapActive_;
1097  useNodePairSwapActive_ = other.useNodePairSwapActive_;
1098  usePathLns_ = other.usePathLns_;
1099  useFullPathLns_ = other.useFullPathLns_;
1100  useTspLns_ = other.useTspLns_;
1101  useInactiveLns_ = other.useInactiveLns_;
1102  _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1103  }
1104 
1105  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1107  return new LocalSearchNeighborhoodOperators(this);
1108  }
1109 
1111  public const int UseRelocateFieldNumber = 1;
1112  private global::Google.OrTools.Util.OptionalBoolean useRelocate_ = 0;
1124  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1125  public global::Google.OrTools.Util.OptionalBoolean UseRelocate {
1126  get { return useRelocate_; }
1127  set {
1128  useRelocate_ = value;
1129  }
1130  }
1131 
1133  public const int UseRelocatePairFieldNumber = 2;
1134  private global::Google.OrTools.Util.OptionalBoolean useRelocatePair_ = 0;
1146  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1147  public global::Google.OrTools.Util.OptionalBoolean UseRelocatePair {
1148  get { return useRelocatePair_; }
1149  set {
1150  useRelocatePair_ = value;
1151  }
1152  }
1153 
1155  public const int UseLightRelocatePairFieldNumber = 24;
1156  private global::Google.OrTools.Util.OptionalBoolean useLightRelocatePair_ = 0;
1166  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1167  public global::Google.OrTools.Util.OptionalBoolean UseLightRelocatePair {
1168  get { return useLightRelocatePair_; }
1169  set {
1170  useLightRelocatePair_ = value;
1171  }
1172  }
1173 
1175  public const int UseRelocateNeighborsFieldNumber = 3;
1176  private global::Google.OrTools.Util.OptionalBoolean useRelocateNeighbors_ = 0;
1201  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1202  public global::Google.OrTools.Util.OptionalBoolean UseRelocateNeighbors {
1203  get { return useRelocateNeighbors_; }
1204  set {
1205  useRelocateNeighbors_ = value;
1206  }
1207  }
1208 
1210  public const int UseRelocateSubtripFieldNumber = 25;
1211  private global::Google.OrTools.Util.OptionalBoolean useRelocateSubtrip_ = 0;
1228  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1229  public global::Google.OrTools.Util.OptionalBoolean UseRelocateSubtrip {
1230  get { return useRelocateSubtrip_; }
1231  set {
1232  useRelocateSubtrip_ = value;
1233  }
1234  }
1235 
1237  public const int UseExchangeFieldNumber = 4;
1238  private global::Google.OrTools.Util.OptionalBoolean useExchange_ = 0;
1248  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1249  public global::Google.OrTools.Util.OptionalBoolean UseExchange {
1250  get { return useExchange_; }
1251  set {
1252  useExchange_ = value;
1253  }
1254  }
1255 
1257  public const int UseExchangePairFieldNumber = 22;
1258  private global::Google.OrTools.Util.OptionalBoolean useExchangePair_ = 0;
1268  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1269  public global::Google.OrTools.Util.OptionalBoolean UseExchangePair {
1270  get { return useExchangePair_; }
1271  set {
1272  useExchangePair_ = value;
1273  }
1274  }
1275 
1277  public const int UseExchangeSubtripFieldNumber = 26;
1278  private global::Google.OrTools.Util.OptionalBoolean useExchangeSubtrip_ = 0;
1283  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1284  public global::Google.OrTools.Util.OptionalBoolean UseExchangeSubtrip {
1285  get { return useExchangeSubtrip_; }
1286  set {
1287  useExchangeSubtrip_ = value;
1288  }
1289  }
1290 
1292  public const int UseCrossFieldNumber = 5;
1293  private global::Google.OrTools.Util.OptionalBoolean useCross_ = 0;
1305  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1306  public global::Google.OrTools.Util.OptionalBoolean UseCross {
1307  get { return useCross_; }
1308  set {
1309  useCross_ = value;
1310  }
1311  }
1312 
1314  public const int UseCrossExchangeFieldNumber = 6;
1315  private global::Google.OrTools.Util.OptionalBoolean useCrossExchange_ = 0;
1319  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1320  public global::Google.OrTools.Util.OptionalBoolean UseCrossExchange {
1321  get { return useCrossExchange_; }
1322  set {
1323  useCrossExchange_ = value;
1324  }
1325  }
1326 
1328  public const int UseRelocateExpensiveChainFieldNumber = 23;
1329  private global::Google.OrTools.Util.OptionalBoolean useRelocateExpensiveChain_ = 0;
1342  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1343  public global::Google.OrTools.Util.OptionalBoolean UseRelocateExpensiveChain {
1344  get { return useRelocateExpensiveChain_; }
1345  set {
1346  useRelocateExpensiveChain_ = value;
1347  }
1348  }
1349 
1351  public const int UseTwoOptFieldNumber = 7;
1352  private global::Google.OrTools.Util.OptionalBoolean useTwoOpt_ = 0;
1365  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1366  public global::Google.OrTools.Util.OptionalBoolean UseTwoOpt {
1367  get { return useTwoOpt_; }
1368  set {
1369  useTwoOpt_ = value;
1370  }
1371  }
1372 
1374  public const int UseOrOptFieldNumber = 8;
1375  private global::Google.OrTools.Util.OptionalBoolean useOrOpt_ = 0;
1389  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1390  public global::Google.OrTools.Util.OptionalBoolean UseOrOpt {
1391  get { return useOrOpt_; }
1392  set {
1393  useOrOpt_ = value;
1394  }
1395  }
1396 
1398  public const int UseLinKernighanFieldNumber = 9;
1399  private global::Google.OrTools.Util.OptionalBoolean useLinKernighan_ = 0;
1406  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1407  public global::Google.OrTools.Util.OptionalBoolean UseLinKernighan {
1408  get { return useLinKernighan_; }
1409  set {
1410  useLinKernighan_ = value;
1411  }
1412  }
1413 
1415  public const int UseTspOptFieldNumber = 10;
1416  private global::Google.OrTools.Util.OptionalBoolean useTspOpt_ = 0;
1425  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1426  public global::Google.OrTools.Util.OptionalBoolean UseTspOpt {
1427  get { return useTspOpt_; }
1428  set {
1429  useTspOpt_ = value;
1430  }
1431  }
1432 
1434  public const int UseMakeActiveFieldNumber = 11;
1435  private global::Google.OrTools.Util.OptionalBoolean useMakeActive_ = 0;
1445  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1446  public global::Google.OrTools.Util.OptionalBoolean UseMakeActive {
1447  get { return useMakeActive_; }
1448  set {
1449  useMakeActive_ = value;
1450  }
1451  }
1452 
1454  public const int UseRelocateAndMakeActiveFieldNumber = 21;
1455  private global::Google.OrTools.Util.OptionalBoolean useRelocateAndMakeActive_ = 0;
1468  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1469  public global::Google.OrTools.Util.OptionalBoolean UseRelocateAndMakeActive {
1470  get { return useRelocateAndMakeActive_; }
1471  set {
1472  useRelocateAndMakeActive_ = value;
1473  }
1474  }
1475 
1477  public const int UseMakeInactiveFieldNumber = 12;
1478  private global::Google.OrTools.Util.OptionalBoolean useMakeInactive_ = 0;
1486  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1487  public global::Google.OrTools.Util.OptionalBoolean UseMakeInactive {
1488  get { return useMakeInactive_; }
1489  set {
1490  useMakeInactive_ = value;
1491  }
1492  }
1493 
1495  public const int UseMakeChainInactiveFieldNumber = 13;
1496  private global::Google.OrTools.Util.OptionalBoolean useMakeChainInactive_ = 0;
1505  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1506  public global::Google.OrTools.Util.OptionalBoolean UseMakeChainInactive {
1507  get { return useMakeChainInactive_; }
1508  set {
1509  useMakeChainInactive_ = value;
1510  }
1511  }
1512 
1514  public const int UseSwapActiveFieldNumber = 14;
1515  private global::Google.OrTools.Util.OptionalBoolean useSwapActive_ = 0;
1523  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1524  public global::Google.OrTools.Util.OptionalBoolean UseSwapActive {
1525  get { return useSwapActive_; }
1526  set {
1527  useSwapActive_ = value;
1528  }
1529  }
1530 
1532  public const int UseExtendedSwapActiveFieldNumber = 15;
1533  private global::Google.OrTools.Util.OptionalBoolean useExtendedSwapActive_ = 0;
1546  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1547  public global::Google.OrTools.Util.OptionalBoolean UseExtendedSwapActive {
1548  get { return useExtendedSwapActive_; }
1549  set {
1550  useExtendedSwapActive_ = value;
1551  }
1552  }
1553 
1555  public const int UseNodePairSwapActiveFieldNumber = 20;
1556  private global::Google.OrTools.Util.OptionalBoolean useNodePairSwapActive_ = 0;
1570  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1571  public global::Google.OrTools.Util.OptionalBoolean UseNodePairSwapActive {
1572  get { return useNodePairSwapActive_; }
1573  set {
1574  useNodePairSwapActive_ = value;
1575  }
1576  }
1577 
1579  public const int UsePathLnsFieldNumber = 16;
1580  private global::Google.OrTools.Util.OptionalBoolean usePathLns_ = 0;
1591  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1592  public global::Google.OrTools.Util.OptionalBoolean UsePathLns {
1593  get { return usePathLns_; }
1594  set {
1595  usePathLns_ = value;
1596  }
1597  }
1598 
1600  public const int UseFullPathLnsFieldNumber = 17;
1601  private global::Google.OrTools.Util.OptionalBoolean useFullPathLns_ = 0;
1605  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1606  public global::Google.OrTools.Util.OptionalBoolean UseFullPathLns {
1607  get { return useFullPathLns_; }
1608  set {
1609  useFullPathLns_ = value;
1610  }
1611  }
1612 
1614  public const int UseTspLnsFieldNumber = 18;
1615  private global::Google.OrTools.Util.OptionalBoolean useTspLns_ = 0;
1624  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1625  public global::Google.OrTools.Util.OptionalBoolean UseTspLns {
1626  get { return useTspLns_; }
1627  set {
1628  useTspLns_ = value;
1629  }
1630  }
1631 
1633  public const int UseInactiveLnsFieldNumber = 19;
1634  private global::Google.OrTools.Util.OptionalBoolean useInactiveLns_ = 0;
1640  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1641  public global::Google.OrTools.Util.OptionalBoolean UseInactiveLns {
1642  get { return useInactiveLns_; }
1643  set {
1644  useInactiveLns_ = value;
1645  }
1646  }
1647 
1648  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1649  public override bool Equals(object other) {
1650  return Equals(other as LocalSearchNeighborhoodOperators);
1651  }
1652 
1653  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1655  if (ReferenceEquals(other, null)) {
1656  return false;
1657  }
1658  if (ReferenceEquals(other, this)) {
1659  return true;
1660  }
1661  if (UseRelocate != other.UseRelocate) return false;
1662  if (UseRelocatePair != other.UseRelocatePair) return false;
1663  if (UseLightRelocatePair != other.UseLightRelocatePair) return false;
1664  if (UseRelocateNeighbors != other.UseRelocateNeighbors) return false;
1665  if (UseRelocateSubtrip != other.UseRelocateSubtrip) return false;
1666  if (UseExchange != other.UseExchange) return false;
1667  if (UseExchangePair != other.UseExchangePair) return false;
1668  if (UseExchangeSubtrip != other.UseExchangeSubtrip) return false;
1669  if (UseCross != other.UseCross) return false;
1670  if (UseCrossExchange != other.UseCrossExchange) return false;
1671  if (UseRelocateExpensiveChain != other.UseRelocateExpensiveChain) return false;
1672  if (UseTwoOpt != other.UseTwoOpt) return false;
1673  if (UseOrOpt != other.UseOrOpt) return false;
1674  if (UseLinKernighan != other.UseLinKernighan) return false;
1675  if (UseTspOpt != other.UseTspOpt) return false;
1676  if (UseMakeActive != other.UseMakeActive) return false;
1677  if (UseRelocateAndMakeActive != other.UseRelocateAndMakeActive) return false;
1678  if (UseMakeInactive != other.UseMakeInactive) return false;
1679  if (UseMakeChainInactive != other.UseMakeChainInactive) return false;
1680  if (UseSwapActive != other.UseSwapActive) return false;
1681  if (UseExtendedSwapActive != other.UseExtendedSwapActive) return false;
1682  if (UseNodePairSwapActive != other.UseNodePairSwapActive) return false;
1683  if (UsePathLns != other.UsePathLns) return false;
1684  if (UseFullPathLns != other.UseFullPathLns) return false;
1685  if (UseTspLns != other.UseTspLns) return false;
1686  if (UseInactiveLns != other.UseInactiveLns) return false;
1687  return Equals(_unknownFields, other._unknownFields);
1688  }
1689 
1690  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1691  public override int GetHashCode() {
1692  int hash = 1;
1693  if (UseRelocate != 0) hash ^= UseRelocate.GetHashCode();
1694  if (UseRelocatePair != 0) hash ^= UseRelocatePair.GetHashCode();
1695  if (UseLightRelocatePair != 0) hash ^= UseLightRelocatePair.GetHashCode();
1696  if (UseRelocateNeighbors != 0) hash ^= UseRelocateNeighbors.GetHashCode();
1697  if (UseRelocateSubtrip != 0) hash ^= UseRelocateSubtrip.GetHashCode();
1698  if (UseExchange != 0) hash ^= UseExchange.GetHashCode();
1699  if (UseExchangePair != 0) hash ^= UseExchangePair.GetHashCode();
1700  if (UseExchangeSubtrip != 0) hash ^= UseExchangeSubtrip.GetHashCode();
1701  if (UseCross != 0) hash ^= UseCross.GetHashCode();
1702  if (UseCrossExchange != 0) hash ^= UseCrossExchange.GetHashCode();
1703  if (UseRelocateExpensiveChain != 0) hash ^= UseRelocateExpensiveChain.GetHashCode();
1704  if (UseTwoOpt != 0) hash ^= UseTwoOpt.GetHashCode();
1705  if (UseOrOpt != 0) hash ^= UseOrOpt.GetHashCode();
1706  if (UseLinKernighan != 0) hash ^= UseLinKernighan.GetHashCode();
1707  if (UseTspOpt != 0) hash ^= UseTspOpt.GetHashCode();
1708  if (UseMakeActive != 0) hash ^= UseMakeActive.GetHashCode();
1709  if (UseRelocateAndMakeActive != 0) hash ^= UseRelocateAndMakeActive.GetHashCode();
1710  if (UseMakeInactive != 0) hash ^= UseMakeInactive.GetHashCode();
1711  if (UseMakeChainInactive != 0) hash ^= UseMakeChainInactive.GetHashCode();
1712  if (UseSwapActive != 0) hash ^= UseSwapActive.GetHashCode();
1713  if (UseExtendedSwapActive != 0) hash ^= UseExtendedSwapActive.GetHashCode();
1714  if (UseNodePairSwapActive != 0) hash ^= UseNodePairSwapActive.GetHashCode();
1715  if (UsePathLns != 0) hash ^= UsePathLns.GetHashCode();
1716  if (UseFullPathLns != 0) hash ^= UseFullPathLns.GetHashCode();
1717  if (UseTspLns != 0) hash ^= UseTspLns.GetHashCode();
1718  if (UseInactiveLns != 0) hash ^= UseInactiveLns.GetHashCode();
1719  if (_unknownFields != null) {
1720  hash ^= _unknownFields.GetHashCode();
1721  }
1722  return hash;
1723  }
1724 
1725  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1726  public override string ToString() {
1727  return pb::JsonFormatter.ToDiagnosticString(this);
1728  }
1729 
1730  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1731  public void WriteTo(pb::CodedOutputStream output) {
1732  if (UseRelocate != 0) {
1733  output.WriteRawTag(8);
1734  output.WriteEnum((int) UseRelocate);
1735  }
1736  if (UseRelocatePair != 0) {
1737  output.WriteRawTag(16);
1738  output.WriteEnum((int) UseRelocatePair);
1739  }
1740  if (UseRelocateNeighbors != 0) {
1741  output.WriteRawTag(24);
1742  output.WriteEnum((int) UseRelocateNeighbors);
1743  }
1744  if (UseExchange != 0) {
1745  output.WriteRawTag(32);
1746  output.WriteEnum((int) UseExchange);
1747  }
1748  if (UseCross != 0) {
1749  output.WriteRawTag(40);
1750  output.WriteEnum((int) UseCross);
1751  }
1752  if (UseCrossExchange != 0) {
1753  output.WriteRawTag(48);
1754  output.WriteEnum((int) UseCrossExchange);
1755  }
1756  if (UseTwoOpt != 0) {
1757  output.WriteRawTag(56);
1758  output.WriteEnum((int) UseTwoOpt);
1759  }
1760  if (UseOrOpt != 0) {
1761  output.WriteRawTag(64);
1762  output.WriteEnum((int) UseOrOpt);
1763  }
1764  if (UseLinKernighan != 0) {
1765  output.WriteRawTag(72);
1766  output.WriteEnum((int) UseLinKernighan);
1767  }
1768  if (UseTspOpt != 0) {
1769  output.WriteRawTag(80);
1770  output.WriteEnum((int) UseTspOpt);
1771  }
1772  if (UseMakeActive != 0) {
1773  output.WriteRawTag(88);
1774  output.WriteEnum((int) UseMakeActive);
1775  }
1776  if (UseMakeInactive != 0) {
1777  output.WriteRawTag(96);
1778  output.WriteEnum((int) UseMakeInactive);
1779  }
1780  if (UseMakeChainInactive != 0) {
1781  output.WriteRawTag(104);
1782  output.WriteEnum((int) UseMakeChainInactive);
1783  }
1784  if (UseSwapActive != 0) {
1785  output.WriteRawTag(112);
1786  output.WriteEnum((int) UseSwapActive);
1787  }
1788  if (UseExtendedSwapActive != 0) {
1789  output.WriteRawTag(120);
1790  output.WriteEnum((int) UseExtendedSwapActive);
1791  }
1792  if (UsePathLns != 0) {
1793  output.WriteRawTag(128, 1);
1794  output.WriteEnum((int) UsePathLns);
1795  }
1796  if (UseFullPathLns != 0) {
1797  output.WriteRawTag(136, 1);
1798  output.WriteEnum((int) UseFullPathLns);
1799  }
1800  if (UseTspLns != 0) {
1801  output.WriteRawTag(144, 1);
1802  output.WriteEnum((int) UseTspLns);
1803  }
1804  if (UseInactiveLns != 0) {
1805  output.WriteRawTag(152, 1);
1806  output.WriteEnum((int) UseInactiveLns);
1807  }
1808  if (UseNodePairSwapActive != 0) {
1809  output.WriteRawTag(160, 1);
1810  output.WriteEnum((int) UseNodePairSwapActive);
1811  }
1812  if (UseRelocateAndMakeActive != 0) {
1813  output.WriteRawTag(168, 1);
1814  output.WriteEnum((int) UseRelocateAndMakeActive);
1815  }
1816  if (UseExchangePair != 0) {
1817  output.WriteRawTag(176, 1);
1818  output.WriteEnum((int) UseExchangePair);
1819  }
1820  if (UseRelocateExpensiveChain != 0) {
1821  output.WriteRawTag(184, 1);
1822  output.WriteEnum((int) UseRelocateExpensiveChain);
1823  }
1824  if (UseLightRelocatePair != 0) {
1825  output.WriteRawTag(192, 1);
1826  output.WriteEnum((int) UseLightRelocatePair);
1827  }
1828  if (UseRelocateSubtrip != 0) {
1829  output.WriteRawTag(200, 1);
1830  output.WriteEnum((int) UseRelocateSubtrip);
1831  }
1832  if (UseExchangeSubtrip != 0) {
1833  output.WriteRawTag(208, 1);
1834  output.WriteEnum((int) UseExchangeSubtrip);
1835  }
1836  if (_unknownFields != null) {
1837  _unknownFields.WriteTo(output);
1838  }
1839  }
1840 
1841  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1842  public int CalculateSize() {
1843  int size = 0;
1844  if (UseRelocate != 0) {
1845  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocate);
1846  }
1847  if (UseRelocatePair != 0) {
1848  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocatePair);
1849  }
1850  if (UseLightRelocatePair != 0) {
1851  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseLightRelocatePair);
1852  }
1853  if (UseRelocateNeighbors != 0) {
1854  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateNeighbors);
1855  }
1856  if (UseRelocateSubtrip != 0) {
1857  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateSubtrip);
1858  }
1859  if (UseExchange != 0) {
1860  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseExchange);
1861  }
1862  if (UseExchangePair != 0) {
1863  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseExchangePair);
1864  }
1865  if (UseExchangeSubtrip != 0) {
1866  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseExchangeSubtrip);
1867  }
1868  if (UseCross != 0) {
1869  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseCross);
1870  }
1871  if (UseCrossExchange != 0) {
1872  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseCrossExchange);
1873  }
1874  if (UseRelocateExpensiveChain != 0) {
1875  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateExpensiveChain);
1876  }
1877  if (UseTwoOpt != 0) {
1878  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseTwoOpt);
1879  }
1880  if (UseOrOpt != 0) {
1881  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseOrOpt);
1882  }
1883  if (UseLinKernighan != 0) {
1884  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseLinKernighan);
1885  }
1886  if (UseTspOpt != 0) {
1887  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseTspOpt);
1888  }
1889  if (UseMakeActive != 0) {
1890  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseMakeActive);
1891  }
1892  if (UseRelocateAndMakeActive != 0) {
1893  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateAndMakeActive);
1894  }
1895  if (UseMakeInactive != 0) {
1896  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseMakeInactive);
1897  }
1898  if (UseMakeChainInactive != 0) {
1899  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseMakeChainInactive);
1900  }
1901  if (UseSwapActive != 0) {
1902  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseSwapActive);
1903  }
1904  if (UseExtendedSwapActive != 0) {
1905  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseExtendedSwapActive);
1906  }
1907  if (UseNodePairSwapActive != 0) {
1908  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseNodePairSwapActive);
1909  }
1910  if (UsePathLns != 0) {
1911  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UsePathLns);
1912  }
1913  if (UseFullPathLns != 0) {
1914  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseFullPathLns);
1915  }
1916  if (UseTspLns != 0) {
1917  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseTspLns);
1918  }
1919  if (UseInactiveLns != 0) {
1920  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseInactiveLns);
1921  }
1922  if (_unknownFields != null) {
1923  size += _unknownFields.CalculateSize();
1924  }
1925  return size;
1926  }
1927 
1928  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1930  if (other == null) {
1931  return;
1932  }
1933  if (other.UseRelocate != 0) {
1934  UseRelocate = other.UseRelocate;
1935  }
1936  if (other.UseRelocatePair != 0) {
1937  UseRelocatePair = other.UseRelocatePair;
1938  }
1939  if (other.UseLightRelocatePair != 0) {
1940  UseLightRelocatePair = other.UseLightRelocatePair;
1941  }
1942  if (other.UseRelocateNeighbors != 0) {
1943  UseRelocateNeighbors = other.UseRelocateNeighbors;
1944  }
1945  if (other.UseRelocateSubtrip != 0) {
1946  UseRelocateSubtrip = other.UseRelocateSubtrip;
1947  }
1948  if (other.UseExchange != 0) {
1949  UseExchange = other.UseExchange;
1950  }
1951  if (other.UseExchangePair != 0) {
1952  UseExchangePair = other.UseExchangePair;
1953  }
1954  if (other.UseExchangeSubtrip != 0) {
1955  UseExchangeSubtrip = other.UseExchangeSubtrip;
1956  }
1957  if (other.UseCross != 0) {
1958  UseCross = other.UseCross;
1959  }
1960  if (other.UseCrossExchange != 0) {
1961  UseCrossExchange = other.UseCrossExchange;
1962  }
1963  if (other.UseRelocateExpensiveChain != 0) {
1964  UseRelocateExpensiveChain = other.UseRelocateExpensiveChain;
1965  }
1966  if (other.UseTwoOpt != 0) {
1967  UseTwoOpt = other.UseTwoOpt;
1968  }
1969  if (other.UseOrOpt != 0) {
1970  UseOrOpt = other.UseOrOpt;
1971  }
1972  if (other.UseLinKernighan != 0) {
1973  UseLinKernighan = other.UseLinKernighan;
1974  }
1975  if (other.UseTspOpt != 0) {
1976  UseTspOpt = other.UseTspOpt;
1977  }
1978  if (other.UseMakeActive != 0) {
1979  UseMakeActive = other.UseMakeActive;
1980  }
1981  if (other.UseRelocateAndMakeActive != 0) {
1982  UseRelocateAndMakeActive = other.UseRelocateAndMakeActive;
1983  }
1984  if (other.UseMakeInactive != 0) {
1985  UseMakeInactive = other.UseMakeInactive;
1986  }
1987  if (other.UseMakeChainInactive != 0) {
1988  UseMakeChainInactive = other.UseMakeChainInactive;
1989  }
1990  if (other.UseSwapActive != 0) {
1991  UseSwapActive = other.UseSwapActive;
1992  }
1993  if (other.UseExtendedSwapActive != 0) {
1994  UseExtendedSwapActive = other.UseExtendedSwapActive;
1995  }
1996  if (other.UseNodePairSwapActive != 0) {
1997  UseNodePairSwapActive = other.UseNodePairSwapActive;
1998  }
1999  if (other.UsePathLns != 0) {
2000  UsePathLns = other.UsePathLns;
2001  }
2002  if (other.UseFullPathLns != 0) {
2003  UseFullPathLns = other.UseFullPathLns;
2004  }
2005  if (other.UseTspLns != 0) {
2006  UseTspLns = other.UseTspLns;
2007  }
2008  if (other.UseInactiveLns != 0) {
2009  UseInactiveLns = other.UseInactiveLns;
2010  }
2011  _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
2012  }
2013 
2014  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2015  public void MergeFrom(pb::CodedInputStream input) {
2016  uint tag;
2017  while ((tag = input.ReadTag()) != 0) {
2018  switch(tag) {
2019  default:
2020  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
2021  break;
2022  case 8: {
2023  UseRelocate = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2024  break;
2025  }
2026  case 16: {
2027  UseRelocatePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2028  break;
2029  }
2030  case 24: {
2031  UseRelocateNeighbors = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2032  break;
2033  }
2034  case 32: {
2035  UseExchange = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2036  break;
2037  }
2038  case 40: {
2039  UseCross = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2040  break;
2041  }
2042  case 48: {
2043  UseCrossExchange = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2044  break;
2045  }
2046  case 56: {
2047  UseTwoOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2048  break;
2049  }
2050  case 64: {
2051  UseOrOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2052  break;
2053  }
2054  case 72: {
2055  UseLinKernighan = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2056  break;
2057  }
2058  case 80: {
2059  UseTspOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2060  break;
2061  }
2062  case 88: {
2063  UseMakeActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2064  break;
2065  }
2066  case 96: {
2067  UseMakeInactive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2068  break;
2069  }
2070  case 104: {
2071  UseMakeChainInactive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2072  break;
2073  }
2074  case 112: {
2075  UseSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2076  break;
2077  }
2078  case 120: {
2079  UseExtendedSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2080  break;
2081  }
2082  case 128: {
2083  UsePathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2084  break;
2085  }
2086  case 136: {
2087  UseFullPathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2088  break;
2089  }
2090  case 144: {
2091  UseTspLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2092  break;
2093  }
2094  case 152: {
2095  UseInactiveLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2096  break;
2097  }
2098  case 160: {
2099  UseNodePairSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2100  break;
2101  }
2102  case 168: {
2103  UseRelocateAndMakeActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2104  break;
2105  }
2106  case 176: {
2107  UseExchangePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2108  break;
2109  }
2110  case 184: {
2111  UseRelocateExpensiveChain = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2112  break;
2113  }
2114  case 192: {
2115  UseLightRelocatePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2116  break;
2117  }
2118  case 200: {
2119  UseRelocateSubtrip = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2120  break;
2121  }
2122  case 208: {
2123  UseExchangeSubtrip = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
2124  break;
2125  }
2126  }
2127  }
2128  }
2129 
2130  }
2131 
2132  }
2133  #endregion
2134 
2135  }
2136 
2140  public sealed partial class RoutingModelParameters : pb::IMessage<RoutingModelParameters> {
2141  private static readonly pb::MessageParser<RoutingModelParameters> _parser = new pb::MessageParser<RoutingModelParameters>(() => new RoutingModelParameters());
2142  private pb::UnknownFieldSet _unknownFields;
2143  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2144  public static pb::MessageParser<RoutingModelParameters> Parser { get { return _parser; } }
2145 
2146  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2147  public static pbr::MessageDescriptor Descriptor {
2148  get { return global::Google.OrTools.ConstraintSolver.RoutingParametersReflection.Descriptor.MessageTypes[1]; }
2149  }
2150 
2151  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2152  pbr::MessageDescriptor pb::IMessage.Descriptor {
2153  get { return Descriptor; }
2154  }
2155 
2156  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2158  OnConstruction();
2159  }
2160 
2161  partial void OnConstruction();
2162 
2163  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2165  solverParameters_ = other.solverParameters_ != null ? other.solverParameters_.Clone() : null;
2166  reduceVehicleCostModel_ = other.reduceVehicleCostModel_;
2167  maxCallbackCacheSize_ = other.maxCallbackCacheSize_;
2168  _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
2169  }
2170 
2171  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2173  return new RoutingModelParameters(this);
2174  }
2175 
2177  public const int SolverParametersFieldNumber = 1;
2178  private global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters solverParameters_;
2182  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2183  public global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters SolverParameters {
2184  get { return solverParameters_; }
2185  set {
2186  solverParameters_ = value;
2187  }
2188  }
2189 
2191  public const int ReduceVehicleCostModelFieldNumber = 2;
2192  private bool reduceVehicleCostModel_;
2199  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2200  public bool ReduceVehicleCostModel {
2201  get { return reduceVehicleCostModel_; }
2202  set {
2203  reduceVehicleCostModel_ = value;
2204  }
2205  }
2206 
2208  public const int MaxCallbackCacheSizeFieldNumber = 3;
2209  private int maxCallbackCacheSize_;
2214  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2215  public int MaxCallbackCacheSize {
2216  get { return maxCallbackCacheSize_; }
2217  set {
2218  maxCallbackCacheSize_ = value;
2219  }
2220  }
2221 
2222  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2223  public override bool Equals(object other) {
2224  return Equals(other as RoutingModelParameters);
2225  }
2226 
2227  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2228  public bool Equals(RoutingModelParameters other) {
2229  if (ReferenceEquals(other, null)) {
2230  return false;
2231  }
2232  if (ReferenceEquals(other, this)) {
2233  return true;
2234  }
2235  if (!object.Equals(SolverParameters, other.SolverParameters)) return false;
2236  if (ReduceVehicleCostModel != other.ReduceVehicleCostModel) return false;
2237  if (MaxCallbackCacheSize != other.MaxCallbackCacheSize) return false;
2238  return Equals(_unknownFields, other._unknownFields);
2239  }
2240 
2241  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2242  public override int GetHashCode() {
2243  int hash = 1;
2244  if (solverParameters_ != null) hash ^= SolverParameters.GetHashCode();
2245  if (ReduceVehicleCostModel != false) hash ^= ReduceVehicleCostModel.GetHashCode();
2246  if (MaxCallbackCacheSize != 0) hash ^= MaxCallbackCacheSize.GetHashCode();
2247  if (_unknownFields != null) {
2248  hash ^= _unknownFields.GetHashCode();
2249  }
2250  return hash;
2251  }
2252 
2253  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2254  public override string ToString() {
2255  return pb::JsonFormatter.ToDiagnosticString(this);
2256  }
2257 
2258  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2259  public void WriteTo(pb::CodedOutputStream output) {
2260  if (solverParameters_ != null) {
2261  output.WriteRawTag(10);
2262  output.WriteMessage(SolverParameters);
2263  }
2264  if (ReduceVehicleCostModel != false) {
2265  output.WriteRawTag(16);
2266  output.WriteBool(ReduceVehicleCostModel);
2267  }
2268  if (MaxCallbackCacheSize != 0) {
2269  output.WriteRawTag(24);
2270  output.WriteInt32(MaxCallbackCacheSize);
2271  }
2272  if (_unknownFields != null) {
2273  _unknownFields.WriteTo(output);
2274  }
2275  }
2276 
2277  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2278  public int CalculateSize() {
2279  int size = 0;
2280  if (solverParameters_ != null) {
2281  size += 1 + pb::CodedOutputStream.ComputeMessageSize(SolverParameters);
2282  }
2283  if (ReduceVehicleCostModel != false) {
2284  size += 1 + 1;
2285  }
2286  if (MaxCallbackCacheSize != 0) {
2287  size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxCallbackCacheSize);
2288  }
2289  if (_unknownFields != null) {
2290  size += _unknownFields.CalculateSize();
2291  }
2292  return size;
2293  }
2294 
2295  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2296  public void MergeFrom(RoutingModelParameters other) {
2297  if (other == null) {
2298  return;
2299  }
2300  if (other.solverParameters_ != null) {
2301  if (solverParameters_ == null) {
2302  SolverParameters = new global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters();
2303  }
2304  SolverParameters.MergeFrom(other.SolverParameters);
2305  }
2306  if (other.ReduceVehicleCostModel != false) {
2307  ReduceVehicleCostModel = other.ReduceVehicleCostModel;
2308  }
2309  if (other.MaxCallbackCacheSize != 0) {
2310  MaxCallbackCacheSize = other.MaxCallbackCacheSize;
2311  }
2312  _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
2313  }
2314 
2315  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2316  public void MergeFrom(pb::CodedInputStream input) {
2317  uint tag;
2318  while ((tag = input.ReadTag()) != 0) {
2319  switch(tag) {
2320  default:
2321  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
2322  break;
2323  case 10: {
2324  if (solverParameters_ == null) {
2325  SolverParameters = new global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters();
2326  }
2327  input.ReadMessage(SolverParameters);
2328  break;
2329  }
2330  case 16: {
2331  ReduceVehicleCostModel = input.ReadBool();
2332  break;
2333  }
2334  case 24: {
2335  MaxCallbackCacheSize = input.ReadInt32();
2336  break;
2337  }
2338  }
2339  }
2340  }
2341 
2342  }
2343 
2344  #endregion
2345 
2346 }
2347 
2348 #endregion Designer generated code
global::Google.OrTools.Util.OptionalBoolean UseExchange
Operator which exchanges the positions of two nodes.
Parameters defining the search used to solve vehicle routing problems.
Local search neighborhood operators used to build a solutions neighborhood.
global::Google.OrTools.Util.OptionalBoolean UsePathLns
— Large neighborhood search operators — Operator which relaxes two sub-chains of three consecutive ar...
global::Google.Protobuf.Reflection pbr
global::Google.OrTools.Util.OptionalBoolean UseTwoOpt
— Intra-route operators — Operator which reverves a sub-chain of a path.
global::Google.OrTools.Util.OptionalBoolean UseRelocatePair
Operator which moves a pair of pickup and delivery nodes to another position where the first node of ...
global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters SolverParameters
Parameters to use in the underlying constraint solver.
Container for nested types declared in the FirstSolutionStrategy message type.
global::Google.OrTools.Util.OptionalBoolean UseRelocateNeighbors
Relocate neighborhood which moves chains of neighbors.
global::Google.OrTools.Util.OptionalBoolean UseExchangeSubtrip
Operator which exchanges subtrips associated to two pairs of nodes, see use_relocate_subtrip for a de...
global::Google.OrTools.Util.OptionalBoolean UseLightRelocatePair
Operator which moves a pair of pickup and delivery nodes after another pair.
global::Google.OrTools.Util.OptionalBoolean UseRelocateExpensiveChain
Operator which detects the relocate_expensive_chain_num_arcs_to_consider most expensive arcs on a pat...
global::Google.Protobuf.Collections pbc
int MaxCallbackCacheSize
Cache callback calls if the number of nodes in the model is less or equal to this value.
global::Google.OrTools.Util.OptionalBoolean UseMakeChainInactive
Operator which makes a "chain" of path nodes inactive.
global::Google.OrTools.Util.OptionalBoolean UseLinKernighan
Lin-Kernighan operator.
Local search metaheuristics used to guide the search.
global::System.Collections.Generic scg
Container for nested types declared in the RoutingSearchParameters message type.
global::Google.OrTools.Util.OptionalBoolean UseOrOpt
Operator which moves sub-chains of a path of length 1, 2 and 3 to another position in the same path.
global::Google.Protobuf pb
global::Google.OrTools.Util.OptionalBoolean UseSwapActive
Operator which replaces an active node by an inactive one.
Holder for reflection information generated from ortools/constraint_solver/routing_parameters....
static pbr::FileDescriptor Descriptor
File descriptor for ortools/constraint_solver/routing_parameters.proto
global::Google.OrTools.Util.OptionalBoolean UseExtendedSwapActive
Operator which makes an inactive node active and an active one inactive.
global::Google.OrTools.Util.OptionalBoolean UseFullPathLns
Operator which relaxes one entire path and all unactive nodes.
Parameters which have to be set when creating a RoutingModel.
global::Google.OrTools.Util.OptionalBoolean UseCross
Operator which cross exchanges the starting chains of 2 paths, including exchanging the whole paths.
global::Google.OrTools.Util.OptionalBoolean UseExchangePair
Operator which exchanges the positions of two pair of nodes.
First solution strategies, used as starting point of local search.
global::Google.OrTools.Util.OptionalBoolean UseNodePairSwapActive
Operator which makes an inactive node active and an active pair of nodes inactive OR makes an inactiv...
global::Google.OrTools.Util.OptionalBoolean UseMakeActive
— Operators on inactive nodes — Operator which inserts an inactive node into a path.
global::Google.OrTools.Util.OptionalBoolean UseRelocate
— Inter-route operators — Operator which moves a single node to another position.
global::Google.OrTools.Util.OptionalBoolean UseInactiveLns
Operator which relaxes all inactive nodes and one sub-chain of six consecutive arcs.
global::Google.OrTools.Util.OptionalBoolean UseRelocateSubtrip
Relocate neighborhood that moves subpaths all pickup and delivery pairs have both pickup and delivery...
global::Google.OrTools.Util.OptionalBoolean UseMakeInactive
Operator which makes path nodes inactive.
global::Google.OrTools.Util.OptionalBoolean UseRelocateAndMakeActive
Operator which relocates a node while making an inactive one active.