DotNet Reference

.Net Reference

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  "bF9ib29sZWFuLnByb3RvIrMjChdSb3V0aW5nU2VhcmNoUGFyYW1ldGVycxJR",
33  "ChdmaXJzdF9zb2x1dGlvbl9zdHJhdGVneRgBIAEoDjIwLm9wZXJhdGlvbnNf",
34  "cmVzZWFyY2guRmlyc3RTb2x1dGlvblN0cmF0ZWd5LlZhbHVlEi4KJnVzZV91",
35  "bmZpbHRlcmVkX2ZpcnN0X3NvbHV0aW9uX3N0cmF0ZWd5GAIgASgIEh8KF3Nh",
36  "dmluZ3NfbmVpZ2hib3JzX3JhdGlvGA4gASgBEiYKHnNhdmluZ3NfbWF4X21l",
37  "bW9yeV91c2FnZV9ieXRlcxgXIAEoARIgChhzYXZpbmdzX2FkZF9yZXZlcnNl",
38  "X2FyY3MYDyABKAgSHwoXc2F2aW5nc19hcmNfY29lZmZpY2llbnQYEiABKAES",
39  "HwoXc2F2aW5nc19wYXJhbGxlbF9yb3V0ZXMYEyABKAgSLwonY2hlYXBlc3Rf",
40  "aW5zZXJ0aW9uX2ZhcnRoZXN0X3NlZWRzX3JhdGlvGBAgASgBEjkKMWNoZWFw",
41  "ZXN0X2luc2VydGlvbl9maXJzdF9zb2x1dGlvbl9uZWlnaGJvcnNfcmF0aW8Y",
42  "FSABKAESNgouY2hlYXBlc3RfaW5zZXJ0aW9uX2xzX29wZXJhdG9yX25laWdo",
43  "Ym9yc19yYXRpbxgfIAEoARIyCipjaGVhcGVzdF9pbnNlcnRpb25fYWRkX3Vu",
44  "cGVyZm9ybWVkX2VudHJpZXMYKCABKAgSKQohY2hyaXN0b2ZpZGVzX3VzZV9t",
45  "aW5pbXVtX21hdGNoaW5nGB4gASgIEm0KFmxvY2FsX3NlYXJjaF9vcGVyYXRv",
46  "cnMYAyABKAsyTS5vcGVyYXRpb25zX3Jlc2VhcmNoLlJvdXRpbmdTZWFyY2hQ",
47  "YXJhbWV0ZXJzLkxvY2FsU2VhcmNoTmVpZ2hib3Job29kT3BlcmF0b3JzEjQK",
48  "LHVzZV9tdWx0aV9hcm1lZF9iYW5kaXRfY29uY2F0ZW5hdGVfb3BlcmF0b3Jz",
49  "GCkgASgIEj8KN211bHRpX2FybWVkX2JhbmRpdF9jb21wb3VuZF9vcGVyYXRv",
50  "cl9tZW1vcnlfY29lZmZpY2llbnQYKiABKAESRAo8bXVsdGlfYXJtZWRfYmFu",
51  "ZGl0X2NvbXBvdW5kX29wZXJhdG9yX2V4cGxvcmF0aW9uX2NvZWZmaWNpZW50",
52  "GCsgASgBEjUKLXJlbG9jYXRlX2V4cGVuc2l2ZV9jaGFpbl9udW1fYXJjc190",
53  "b19jb25zaWRlchgUIAEoBRI6CjJoZXVyaXN0aWNfZXhwZW5zaXZlX2NoYWlu",
54  "X2xuc19udW1fYXJjc190b19jb25zaWRlchggIAEoBRIrCiNoZXVyaXN0aWNf",
55  "Y2xvc2Vfbm9kZXNfbG5zX251bV9ub2RlcxgjIAEoBRJXChpsb2NhbF9zZWFy",
56  "Y2hfbWV0YWhldXJpc3RpYxgEIAEoDjIzLm9wZXJhdGlvbnNfcmVzZWFyY2gu",
57  "TG9jYWxTZWFyY2hNZXRhaGV1cmlzdGljLlZhbHVlEi4KJmd1aWRlZF9sb2Nh",
58  "bF9zZWFyY2hfbGFtYmRhX2NvZWZmaWNpZW50GAUgASgBEh4KFnVzZV9kZXB0",
59  "aF9maXJzdF9zZWFyY2gYBiABKAgSNAoGdXNlX2NwGBwgASgOMiQub3BlcmF0",
60  "aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SOAoKdXNlX2NwX3NhdBgb",
61  "IAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEmMK",
62  "HGNvbnRpbnVvdXNfc2NoZWR1bGluZ19zb2x2ZXIYISABKA4yPS5vcGVyYXRp",
63  "b25zX3Jlc2VhcmNoLlJvdXRpbmdTZWFyY2hQYXJhbWV0ZXJzLlNjaGVkdWxp",
64  "bmdTb2x2ZXISZgofbWl4ZWRfaW50ZWdlcl9zY2hlZHVsaW5nX3NvbHZlchgi",
65  "IAEoDjI9Lm9wZXJhdGlvbnNfcmVzZWFyY2guUm91dGluZ1NlYXJjaFBhcmFt",
66  "ZXRlcnMuU2NoZWR1bGluZ1NvbHZlchIZChFvcHRpbWl6YXRpb25fc3RlcBgH",
67  "IAEoARImCh5udW1iZXJfb2Zfc29sdXRpb25zX3RvX2NvbGxlY3QYESABKAUS",
68  "FgoOc29sdXRpb25fbGltaXQYCCABKAMSLQoKdGltZV9saW1pdBgJIAEoCzIZ",
69  "Lmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIxCg5sbnNfdGltZV9saW1pdBgK",
70  "IAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhJzChxpbXByb3ZlbWVu",
71  "dF9saW1pdF9wYXJhbWV0ZXJzGCUgASgLMk0ub3BlcmF0aW9uc19yZXNlYXJj",
72  "aC5Sb3V0aW5nU2VhcmNoUGFyYW1ldGVycy5JbXByb3ZlbWVudFNlYXJjaExp",
73  "bWl0UGFyYW1ldGVycxIcChR1c2VfZnVsbF9wcm9wYWdhdGlvbhgLIAEoCBIS",
74  "Cgpsb2dfc2VhcmNoGA0gASgIEh8KF2xvZ19jb3N0X3NjYWxpbmdfZmFjdG9y",
75  "GBYgASgBEhcKD2xvZ19jb3N0X29mZnNldBgdIAEoARIPCgdsb2dfdGFnGCQg",
76  "ASgJGtcSCiBMb2NhbFNlYXJjaE5laWdoYm9yaG9vZE9wZXJhdG9ycxI6Cgx1",
77  "c2VfcmVsb2NhdGUYASABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlv",
78  "bmFsQm9vbGVhbhI/ChF1c2VfcmVsb2NhdGVfcGFpchgCIAEoDjIkLm9wZXJh",
79  "dGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEkUKF3VzZV9saWdodF9y",
80  "ZWxvY2F0ZV9wYWlyGBggASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5PcHRp",
81  "b25hbEJvb2xlYW4SRAoWdXNlX3JlbG9jYXRlX25laWdoYm9ycxgDIAEoDjIk",
82  "Lm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEkIKFHVzZV9y",
83  "ZWxvY2F0ZV9zdWJ0cmlwGBkgASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5P",
84  "cHRpb25hbEJvb2xlYW4SOgoMdXNlX2V4Y2hhbmdlGAQgASgOMiQub3BlcmF0",
85  "aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SPwoRdXNlX2V4Y2hhbmdl",
86  "X3BhaXIYFiABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9v",
87  "bGVhbhJCChR1c2VfZXhjaGFuZ2Vfc3VidHJpcBgaIAEoDjIkLm9wZXJhdGlv",
88  "bnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEjcKCXVzZV9jcm9zcxgFIAEo",
89  "DjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEkAKEnVz",
90  "ZV9jcm9zc19leGNoYW5nZRgGIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2gu",
91  "T3B0aW9uYWxCb29sZWFuEkoKHHVzZV9yZWxvY2F0ZV9leHBlbnNpdmVfY2hh",
92  "aW4YFyABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVh",
93  "bhI5Cgt1c2VfdHdvX29wdBgHIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2gu",
94  "T3B0aW9uYWxCb29sZWFuEjgKCnVzZV9vcl9vcHQYCCABKA4yJC5vcGVyYXRp",
95  "b25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVhbhI/ChF1c2VfbGluX2tlcm5p",
96  "Z2hhbhgJIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29s",
97  "ZWFuEjkKC3VzZV90c3Bfb3B0GAogASgOMiQub3BlcmF0aW9uc19yZXNlYXJj",
98  "aC5PcHRpb25hbEJvb2xlYW4SPQoPdXNlX21ha2VfYWN0aXZlGAsgASgOMiQu",
99  "b3BlcmF0aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SSgocdXNlX3Jl",
100  "bG9jYXRlX2FuZF9tYWtlX2FjdGl2ZRgVIAEoDjIkLm9wZXJhdGlvbnNfcmVz",
101  "ZWFyY2guT3B0aW9uYWxCb29sZWFuEj8KEXVzZV9tYWtlX2luYWN0aXZlGAwg",
102  "ASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5PcHRpb25hbEJvb2xlYW4SRQoX",
103  "dXNlX21ha2VfY2hhaW5faW5hY3RpdmUYDSABKA4yJC5vcGVyYXRpb25zX3Jl",
104  "c2VhcmNoLk9wdGlvbmFsQm9vbGVhbhI9Cg91c2Vfc3dhcF9hY3RpdmUYDiAB",
105  "KA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVhbhJGChh1",
106  "c2VfZXh0ZW5kZWRfc3dhcF9hY3RpdmUYDyABKA4yJC5vcGVyYXRpb25zX3Jl",
107  "c2VhcmNoLk9wdGlvbmFsQm9vbGVhbhJHChl1c2Vfbm9kZV9wYWlyX3N3YXBf",
108  "YWN0aXZlGBQgASgOMiQub3BlcmF0aW9uc19yZXNlYXJjaC5PcHRpb25hbEJv",
109  "b2xlYW4SOgoMdXNlX3BhdGhfbG5zGBAgASgOMiQub3BlcmF0aW9uc19yZXNl",
110  "YXJjaC5PcHRpb25hbEJvb2xlYW4SPwoRdXNlX2Z1bGxfcGF0aF9sbnMYESAB",
111  "KA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVhbhI5Cgt1",
112  "c2VfdHNwX2xucxgSIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9u",
113  "YWxCb29sZWFuEj4KEHVzZV9pbmFjdGl2ZV9sbnMYEyABKA4yJC5vcGVyYXRp",
114  "b25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVhbhJUCiZ1c2VfZ2xvYmFsX2No",
115  "ZWFwZXN0X2luc2VydGlvbl9wYXRoX2xucxgbIAEoDjIkLm9wZXJhdGlvbnNf",
116  "cmVzZWFyY2guT3B0aW9uYWxCb29sZWFuElMKJXVzZV9sb2NhbF9jaGVhcGVz",
117  "dF9pbnNlcnRpb25fcGF0aF9sbnMYHCABKA4yJC5vcGVyYXRpb25zX3Jlc2Vh",
118  "cmNoLk9wdGlvbmFsQm9vbGVhbhJsCj51c2VfcmVsb2NhdGVfcGF0aF9nbG9i",
119  "YWxfY2hlYXBlc3RfaW5zZXJ0aW9uX2luc2VydF91bnBlcmZvcm1lZBghIAEo",
120  "DjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0aW9uYWxCb29sZWFuEl8KMXVz",
121  "ZV9nbG9iYWxfY2hlYXBlc3RfaW5zZXJ0aW9uX2V4cGVuc2l2ZV9jaGFpbl9s",
122  "bnMYHSABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFsQm9vbGVh",
123  "bhJeCjB1c2VfbG9jYWxfY2hlYXBlc3RfaW5zZXJ0aW9uX2V4cGVuc2l2ZV9j",
124  "aGFpbl9sbnMYHiABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlvbmFs",
125  "Qm9vbGVhbhJbCi11c2VfZ2xvYmFsX2NoZWFwZXN0X2luc2VydGlvbl9jbG9z",
126  "ZV9ub2Rlc19sbnMYHyABKA4yJC5vcGVyYXRpb25zX3Jlc2VhcmNoLk9wdGlv",
127  "bmFsQm9vbGVhbhJaCix1c2VfbG9jYWxfY2hlYXBlc3RfaW5zZXJ0aW9uX2Ns",
128  "b3NlX25vZGVzX2xucxggIAEoDjIkLm9wZXJhdGlvbnNfcmVzZWFyY2guT3B0",
129  "aW9uYWxCb29sZWFuGnUKIEltcHJvdmVtZW50U2VhcmNoTGltaXRQYXJhbWV0",
130  "ZXJzEiQKHGltcHJvdmVtZW50X3JhdGVfY29lZmZpY2llbnQYJiABKAESKwoj",
131  "aW1wcm92ZW1lbnRfcmF0ZV9zb2x1dGlvbnNfZGlzdGFuY2UYJyABKAUiMwoQ",
132  "U2NoZWR1bGluZ1NvbHZlchIJCgVVTlNFVBAAEggKBEdMT1AQARIKCgZDUF9T",
133  "QVQQAiKoAQoWUm91dGluZ01vZGVsUGFyYW1ldGVycxJKChFzb2x2ZXJfcGFy",
134  "YW1ldGVycxgBIAEoCzIvLm9wZXJhdGlvbnNfcmVzZWFyY2guQ29uc3RyYWlu",
135  "dFNvbHZlclBhcmFtZXRlcnMSIQoZcmVkdWNlX3ZlaGljbGVfY29zdF9tb2Rl",
136  "bBgCIAEoCBIfChdtYXhfY2FsbGJhY2tfY2FjaGVfc2l6ZRgDIAEoBUJJCiNj",
137  "b20uZ29vZ2xlLm9ydG9vbHMuY29uc3RyYWludHNvbHZlclABqgIfR29vZ2xl",
138  "Lk9yVG9vbHMuQ29uc3RyYWludFNvbHZlcmIGcHJvdG8z"));
139  descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
140  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, },
141  new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
142  new pbr::GeneratedClrTypeInfo(typeof(global::Google.OrTools.ConstraintSolver.RoutingSearchParameters), global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Parser, new[]{ "FirstSolutionStrategy", "UseUnfilteredFirstSolutionStrategy", "SavingsNeighborsRatio", "SavingsMaxMemoryUsageBytes", "SavingsAddReverseArcs", "SavingsArcCoefficient", "SavingsParallelRoutes", "CheapestInsertionFarthestSeedsRatio", "CheapestInsertionFirstSolutionNeighborsRatio", "CheapestInsertionLsOperatorNeighborsRatio", "CheapestInsertionAddUnperformedEntries", "ChristofidesUseMinimumMatching", "LocalSearchOperators", "UseMultiArmedBanditConcatenateOperators", "MultiArmedBanditCompoundOperatorMemoryCoefficient", "MultiArmedBanditCompoundOperatorExplorationCoefficient", "RelocateExpensiveChainNumArcsToConsider", "HeuristicExpensiveChainLnsNumArcsToConsider", "HeuristicCloseNodesLnsNumNodes", "LocalSearchMetaheuristic", "GuidedLocalSearchLambdaCoefficient", "UseDepthFirstSearch", "UseCp", "UseCpSat", "ContinuousSchedulingSolver", "MixedIntegerSchedulingSolver", "OptimizationStep", "NumberOfSolutionsToCollect", "SolutionLimit", "TimeLimit", "LnsTimeLimit", "ImprovementLimitParameters", "UseFullPropagation", "LogSearch", "LogCostScalingFactor", "LogCostOffset", "LogTag" }, null, new[]{ typeof(global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver) }, 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", "UseGlobalCheapestInsertionPathLns", "UseLocalCheapestInsertionPathLns", "UseRelocatePathGlobalCheapestInsertionInsertUnperformed", "UseGlobalCheapestInsertionExpensiveChainLns", "UseLocalCheapestInsertionExpensiveChainLns", "UseGlobalCheapestInsertionCloseNodesLns", "UseLocalCheapestInsertionCloseNodesLns" }, null, null, null, null),
143  new pbr::GeneratedClrTypeInfo(typeof(global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.ImprovementSearchLimitParameters), global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.ImprovementSearchLimitParameters.Parser, new[]{ "ImprovementRateCoefficient", "ImprovementRateSolutionsDistance" }, null, null, null, null)}),
144  new pbr::GeneratedClrTypeInfo(typeof(global::Google.OrTools.ConstraintSolver.RoutingModelParameters), global::Google.OrTools.ConstraintSolver.RoutingModelParameters.Parser, new[]{ "SolverParameters", "ReduceVehicleCostModel", "MaxCallbackCacheSize" }, null, null, null, null)
145  }));
146  }
147  #endregion
148 
149  }
150  #region Messages
151  public sealed partial class RoutingSearchParameters : pb::IMessage<RoutingSearchParameters>
161  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
162  , pb::IBufferMessage
163  #endif
164  {
165  private static readonly pb::MessageParser<RoutingSearchParameters> _parser = new pb::MessageParser<RoutingSearchParameters>(() => new RoutingSearchParameters());
166  private pb::UnknownFieldSet _unknownFields;
167  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
168  public static pb::MessageParser<RoutingSearchParameters> Parser { get { return _parser; } }
169 
170  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
171  public static pbr::MessageDescriptor Descriptor {
172  get { return global::Google.OrTools.ConstraintSolver.RoutingParametersReflection.Descriptor.MessageTypes[0]; }
173  }
174 
175  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
176  pbr::MessageDescriptor pb::IMessage.Descriptor {
177  get { return Descriptor; }
178  }
179 
180  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
182  OnConstruction();
183  }
184 
185  partial void OnConstruction();
186 
187  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
189  firstSolutionStrategy_ = other.firstSolutionStrategy_;
190  useUnfilteredFirstSolutionStrategy_ = other.useUnfilteredFirstSolutionStrategy_;
191  savingsNeighborsRatio_ = other.savingsNeighborsRatio_;
192  savingsMaxMemoryUsageBytes_ = other.savingsMaxMemoryUsageBytes_;
193  savingsAddReverseArcs_ = other.savingsAddReverseArcs_;
194  savingsArcCoefficient_ = other.savingsArcCoefficient_;
195  savingsParallelRoutes_ = other.savingsParallelRoutes_;
196  cheapestInsertionFarthestSeedsRatio_ = other.cheapestInsertionFarthestSeedsRatio_;
197  cheapestInsertionFirstSolutionNeighborsRatio_ = other.cheapestInsertionFirstSolutionNeighborsRatio_;
198  cheapestInsertionLsOperatorNeighborsRatio_ = other.cheapestInsertionLsOperatorNeighborsRatio_;
199  cheapestInsertionAddUnperformedEntries_ = other.cheapestInsertionAddUnperformedEntries_;
200  christofidesUseMinimumMatching_ = other.christofidesUseMinimumMatching_;
201  localSearchOperators_ = other.localSearchOperators_ != null ? other.localSearchOperators_.Clone() : null;
202  useMultiArmedBanditConcatenateOperators_ = other.useMultiArmedBanditConcatenateOperators_;
203  multiArmedBanditCompoundOperatorMemoryCoefficient_ = other.multiArmedBanditCompoundOperatorMemoryCoefficient_;
204  multiArmedBanditCompoundOperatorExplorationCoefficient_ = other.multiArmedBanditCompoundOperatorExplorationCoefficient_;
205  relocateExpensiveChainNumArcsToConsider_ = other.relocateExpensiveChainNumArcsToConsider_;
206  heuristicExpensiveChainLnsNumArcsToConsider_ = other.heuristicExpensiveChainLnsNumArcsToConsider_;
207  heuristicCloseNodesLnsNumNodes_ = other.heuristicCloseNodesLnsNumNodes_;
208  localSearchMetaheuristic_ = other.localSearchMetaheuristic_;
209  guidedLocalSearchLambdaCoefficient_ = other.guidedLocalSearchLambdaCoefficient_;
210  useDepthFirstSearch_ = other.useDepthFirstSearch_;
211  useCp_ = other.useCp_;
212  useCpSat_ = other.useCpSat_;
213  continuousSchedulingSolver_ = other.continuousSchedulingSolver_;
214  mixedIntegerSchedulingSolver_ = other.mixedIntegerSchedulingSolver_;
215  optimizationStep_ = other.optimizationStep_;
216  numberOfSolutionsToCollect_ = other.numberOfSolutionsToCollect_;
217  solutionLimit_ = other.solutionLimit_;
218  timeLimit_ = other.timeLimit_ != null ? other.timeLimit_.Clone() : null;
219  lnsTimeLimit_ = other.lnsTimeLimit_ != null ? other.lnsTimeLimit_.Clone() : null;
220  improvementLimitParameters_ = other.improvementLimitParameters_ != null ? other.improvementLimitParameters_.Clone() : null;
221  useFullPropagation_ = other.useFullPropagation_;
222  logSearch_ = other.logSearch_;
223  logCostScalingFactor_ = other.logCostScalingFactor_;
224  logCostOffset_ = other.logCostOffset_;
225  logTag_ = other.logTag_;
226  _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
227  }
228 
229  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
231  return new RoutingSearchParameters(this);
232  }
233 
235  public const int FirstSolutionStrategyFieldNumber = 1;
236  private global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value firstSolutionStrategy_ = global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value.Unset;
240  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
241  public global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value FirstSolutionStrategy {
242  get { return firstSolutionStrategy_; }
243  set {
244  firstSolutionStrategy_ = value;
245  }
246  }
247 
249  public const int UseUnfilteredFirstSolutionStrategyFieldNumber = 2;
250  private bool useUnfilteredFirstSolutionStrategy_;
257  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
258  public bool UseUnfilteredFirstSolutionStrategy {
259  get { return useUnfilteredFirstSolutionStrategy_; }
260  set {
261  useUnfilteredFirstSolutionStrategy_ = value;
262  }
263  }
264 
266  public const int SavingsNeighborsRatioFieldNumber = 14;
267  private double savingsNeighborsRatio_;
273  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
274  public double SavingsNeighborsRatio {
275  get { return savingsNeighborsRatio_; }
276  set {
277  savingsNeighborsRatio_ = value;
278  }
279  }
280 
282  public const int SavingsMaxMemoryUsageBytesFieldNumber = 23;
283  private double savingsMaxMemoryUsageBytes_;
292  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
293  public double SavingsMaxMemoryUsageBytes {
294  get { return savingsMaxMemoryUsageBytes_; }
295  set {
296  savingsMaxMemoryUsageBytes_ = value;
297  }
298  }
299 
301  public const int SavingsAddReverseArcsFieldNumber = 15;
302  private bool savingsAddReverseArcs_;
307  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
308  public bool SavingsAddReverseArcs {
309  get { return savingsAddReverseArcs_; }
310  set {
311  savingsAddReverseArcs_ = value;
312  }
313  }
314 
316  public const int SavingsArcCoefficientFieldNumber = 18;
317  private double savingsArcCoefficient_;
325  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
326  public double SavingsArcCoefficient {
327  get { return savingsArcCoefficient_; }
328  set {
329  savingsArcCoefficient_ = value;
330  }
331  }
332 
334  public const int SavingsParallelRoutesFieldNumber = 19;
335  private bool savingsParallelRoutes_;
339  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
340  public bool SavingsParallelRoutes {
341  get { return savingsParallelRoutes_; }
342  set {
343  savingsParallelRoutes_ = value;
344  }
345  }
346 
348  public const int CheapestInsertionFarthestSeedsRatioFieldNumber = 16;
349  private double cheapestInsertionFarthestSeedsRatio_;
355  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
356  public double CheapestInsertionFarthestSeedsRatio {
357  get { return cheapestInsertionFarthestSeedsRatio_; }
358  set {
359  cheapestInsertionFarthestSeedsRatio_ = value;
360  }
361  }
362 
364  public const int CheapestInsertionFirstSolutionNeighborsRatioFieldNumber = 21;
365  private double cheapestInsertionFirstSolutionNeighborsRatio_;
375  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
376  public double CheapestInsertionFirstSolutionNeighborsRatio {
377  get { return cheapestInsertionFirstSolutionNeighborsRatio_; }
378  set {
379  cheapestInsertionFirstSolutionNeighborsRatio_ = value;
380  }
381  }
382 
384  public const int CheapestInsertionLsOperatorNeighborsRatioFieldNumber = 31;
385  private double cheapestInsertionLsOperatorNeighborsRatio_;
391  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
392  public double CheapestInsertionLsOperatorNeighborsRatio {
393  get { return cheapestInsertionLsOperatorNeighborsRatio_; }
394  set {
395  cheapestInsertionLsOperatorNeighborsRatio_ = value;
396  }
397  }
398 
400  public const int CheapestInsertionAddUnperformedEntriesFieldNumber = 40;
401  private bool cheapestInsertionAddUnperformedEntries_;
406  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
407  public bool CheapestInsertionAddUnperformedEntries {
408  get { return cheapestInsertionAddUnperformedEntries_; }
409  set {
410  cheapestInsertionAddUnperformedEntries_ = value;
411  }
412  }
413 
415  public const int ChristofidesUseMinimumMatchingFieldNumber = 30;
416  private bool christofidesUseMinimumMatching_;
421  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
422  public bool ChristofidesUseMinimumMatching {
423  get { return christofidesUseMinimumMatching_; }
424  set {
425  christofidesUseMinimumMatching_ = value;
426  }
427  }
428 
430  public const int LocalSearchOperatorsFieldNumber = 3;
431  private global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators localSearchOperators_;
432  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
433  public global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators LocalSearchOperators {
434  get { return localSearchOperators_; }
435  set {
436  localSearchOperators_ = value;
437  }
438  }
439 
441  public const int UseMultiArmedBanditConcatenateOperatorsFieldNumber = 41;
442  private bool useMultiArmedBanditConcatenateOperators_;
448  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
449  public bool UseMultiArmedBanditConcatenateOperators {
450  get { return useMultiArmedBanditConcatenateOperators_; }
451  set {
452  useMultiArmedBanditConcatenateOperators_ = value;
453  }
454  }
455 
457  public const int MultiArmedBanditCompoundOperatorMemoryCoefficientFieldNumber = 42;
458  private double multiArmedBanditCompoundOperatorMemoryCoefficient_;
465  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
466  public double MultiArmedBanditCompoundOperatorMemoryCoefficient {
467  get { return multiArmedBanditCompoundOperatorMemoryCoefficient_; }
468  set {
469  multiArmedBanditCompoundOperatorMemoryCoefficient_ = value;
470  }
471  }
472 
474  public const int MultiArmedBanditCompoundOperatorExplorationCoefficientFieldNumber = 43;
475  private double multiArmedBanditCompoundOperatorExplorationCoefficient_;
481  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
482  public double MultiArmedBanditCompoundOperatorExplorationCoefficient {
483  get { return multiArmedBanditCompoundOperatorExplorationCoefficient_; }
484  set {
485  multiArmedBanditCompoundOperatorExplorationCoefficient_ = value;
486  }
487  }
488 
490  public const int RelocateExpensiveChainNumArcsToConsiderFieldNumber = 20;
491  private int relocateExpensiveChainNumArcsToConsider_;
501  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
502  public int RelocateExpensiveChainNumArcsToConsider {
503  get { return relocateExpensiveChainNumArcsToConsider_; }
504  set {
505  relocateExpensiveChainNumArcsToConsider_ = value;
506  }
507  }
508 
510  public const int HeuristicExpensiveChainLnsNumArcsToConsiderFieldNumber = 32;
511  private int heuristicExpensiveChainLnsNumArcsToConsider_;
516  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
517  public int HeuristicExpensiveChainLnsNumArcsToConsider {
518  get { return heuristicExpensiveChainLnsNumArcsToConsider_; }
519  set {
520  heuristicExpensiveChainLnsNumArcsToConsider_ = value;
521  }
522  }
523 
525  public const int HeuristicCloseNodesLnsNumNodesFieldNumber = 35;
526  private int heuristicCloseNodesLnsNumNodes_;
531  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
532  public int HeuristicCloseNodesLnsNumNodes {
533  get { return heuristicCloseNodesLnsNumNodes_; }
534  set {
535  heuristicCloseNodesLnsNumNodes_ = value;
536  }
537  }
538 
540  public const int LocalSearchMetaheuristicFieldNumber = 4;
541  private global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value localSearchMetaheuristic_ = global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value.Unset;
545  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
546  public global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value LocalSearchMetaheuristic {
547  get { return localSearchMetaheuristic_; }
548  set {
549  localSearchMetaheuristic_ = value;
550  }
551  }
552 
554  public const int GuidedLocalSearchLambdaCoefficientFieldNumber = 5;
555  private double guidedLocalSearchLambdaCoefficient_;
562  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
563  public double GuidedLocalSearchLambdaCoefficient {
564  get { return guidedLocalSearchLambdaCoefficient_; }
565  set {
566  guidedLocalSearchLambdaCoefficient_ = value;
567  }
568  }
569 
571  public const int UseDepthFirstSearchFieldNumber = 6;
572  private bool useDepthFirstSearch_;
579  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
580  public bool UseDepthFirstSearch {
581  get { return useDepthFirstSearch_; }
582  set {
583  useDepthFirstSearch_ = value;
584  }
585  }
586 
588  public const int UseCpFieldNumber = 28;
589  private global::Google.OrTools.Util.OptionalBoolean useCp_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
595  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
596  public global::Google.OrTools.Util.OptionalBoolean UseCp {
597  get { return useCp_; }
598  set {
599  useCp_ = value;
600  }
601  }
602 
604  public const int UseCpSatFieldNumber = 27;
605  private global::Google.OrTools.Util.OptionalBoolean useCpSat_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
612  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
613  public global::Google.OrTools.Util.OptionalBoolean UseCpSat {
614  get { return useCpSat_; }
615  set {
616  useCpSat_ = value;
617  }
618  }
619 
621  public const int ContinuousSchedulingSolverFieldNumber = 33;
622  private global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver continuousSchedulingSolver_ = global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset;
623  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
624  public global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver ContinuousSchedulingSolver {
625  get { return continuousSchedulingSolver_; }
626  set {
627  continuousSchedulingSolver_ = value;
628  }
629  }
630 
632  public const int MixedIntegerSchedulingSolverFieldNumber = 34;
633  private global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver mixedIntegerSchedulingSolver_ = global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset;
634  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
635  public global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver MixedIntegerSchedulingSolver {
636  get { return mixedIntegerSchedulingSolver_; }
637  set {
638  mixedIntegerSchedulingSolver_ = value;
639  }
640  }
641 
643  public const int OptimizationStepFieldNumber = 7;
644  private double optimizationStep_;
650  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
651  public double OptimizationStep {
652  get { return optimizationStep_; }
653  set {
654  optimizationStep_ = value;
655  }
656  }
657 
659  public const int NumberOfSolutionsToCollectFieldNumber = 17;
660  private int numberOfSolutionsToCollect_;
665  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
666  public int NumberOfSolutionsToCollect {
667  get { return numberOfSolutionsToCollect_; }
668  set {
669  numberOfSolutionsToCollect_ = value;
670  }
671  }
672 
674  public const int SolutionLimitFieldNumber = 8;
675  private long solutionLimit_;
681  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
682  public long SolutionLimit {
683  get { return solutionLimit_; }
684  set {
685  solutionLimit_ = value;
686  }
687  }
688 
690  public const int TimeLimitFieldNumber = 9;
691  private global::Google.Protobuf.WellKnownTypes.Duration timeLimit_;
695  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
696  public global::Google.Protobuf.WellKnownTypes.Duration TimeLimit {
697  get { return timeLimit_; }
698  set {
699  timeLimit_ = value;
700  }
701  }
702 
704  public const int LnsTimeLimitFieldNumber = 10;
705  private global::Google.Protobuf.WellKnownTypes.Duration lnsTimeLimit_;
710  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
711  public global::Google.Protobuf.WellKnownTypes.Duration LnsTimeLimit {
712  get { return lnsTimeLimit_; }
713  set {
714  lnsTimeLimit_ = value;
715  }
716  }
717 
719  public const int ImprovementLimitParametersFieldNumber = 37;
720  private global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.ImprovementSearchLimitParameters improvementLimitParameters_;
725  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
726  public global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.ImprovementSearchLimitParameters ImprovementLimitParameters {
727  get { return improvementLimitParameters_; }
728  set {
729  improvementLimitParameters_ = value;
730  }
731  }
732 
734  public const int UseFullPropagationFieldNumber = 11;
735  private bool useFullPropagation_;
748  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
749  public bool UseFullPropagation {
750  get { return useFullPropagation_; }
751  set {
752  useFullPropagation_ = value;
753  }
754  }
755 
757  public const int LogSearchFieldNumber = 13;
758  private bool logSearch_;
774  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
775  public bool LogSearch {
776  get { return logSearch_; }
777  set {
778  logSearch_ = value;
779  }
780  }
781 
783  public const int LogCostScalingFactorFieldNumber = 22;
784  private double logCostScalingFactor_;
789  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
790  public double LogCostScalingFactor {
791  get { return logCostScalingFactor_; }
792  set {
793  logCostScalingFactor_ = value;
794  }
795  }
796 
798  public const int LogCostOffsetFieldNumber = 29;
799  private double logCostOffset_;
800  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
801  public double LogCostOffset {
802  get { return logCostOffset_; }
803  set {
804  logCostOffset_ = value;
805  }
806  }
807 
809  public const int LogTagFieldNumber = 36;
810  private string logTag_ = "";
815  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
816  public string LogTag {
817  get { return logTag_; }
818  set {
819  logTag_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
820  }
821  }
822 
823  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
824  public override bool Equals(object other) {
825  return Equals(other as RoutingSearchParameters);
826  }
827 
828  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
829  public bool Equals(RoutingSearchParameters other) {
830  if (ReferenceEquals(other, null)) {
831  return false;
832  }
833  if (ReferenceEquals(other, this)) {
834  return true;
835  }
836  if (FirstSolutionStrategy != other.FirstSolutionStrategy) return false;
837  if (UseUnfilteredFirstSolutionStrategy != other.UseUnfilteredFirstSolutionStrategy) return false;
838  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SavingsNeighborsRatio, other.SavingsNeighborsRatio)) return false;
839  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SavingsMaxMemoryUsageBytes, other.SavingsMaxMemoryUsageBytes)) return false;
840  if (SavingsAddReverseArcs != other.SavingsAddReverseArcs) return false;
841  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SavingsArcCoefficient, other.SavingsArcCoefficient)) return false;
842  if (SavingsParallelRoutes != other.SavingsParallelRoutes) return false;
843  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(CheapestInsertionFarthestSeedsRatio, other.CheapestInsertionFarthestSeedsRatio)) return false;
844  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(CheapestInsertionFirstSolutionNeighborsRatio, other.CheapestInsertionFirstSolutionNeighborsRatio)) return false;
845  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(CheapestInsertionLsOperatorNeighborsRatio, other.CheapestInsertionLsOperatorNeighborsRatio)) return false;
846  if (CheapestInsertionAddUnperformedEntries != other.CheapestInsertionAddUnperformedEntries) return false;
847  if (ChristofidesUseMinimumMatching != other.ChristofidesUseMinimumMatching) return false;
848  if (!object.Equals(LocalSearchOperators, other.LocalSearchOperators)) return false;
849  if (UseMultiArmedBanditConcatenateOperators != other.UseMultiArmedBanditConcatenateOperators) return false;
850  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(MultiArmedBanditCompoundOperatorMemoryCoefficient, other.MultiArmedBanditCompoundOperatorMemoryCoefficient)) return false;
851  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(MultiArmedBanditCompoundOperatorExplorationCoefficient, other.MultiArmedBanditCompoundOperatorExplorationCoefficient)) return false;
852  if (RelocateExpensiveChainNumArcsToConsider != other.RelocateExpensiveChainNumArcsToConsider) return false;
853  if (HeuristicExpensiveChainLnsNumArcsToConsider != other.HeuristicExpensiveChainLnsNumArcsToConsider) return false;
854  if (HeuristicCloseNodesLnsNumNodes != other.HeuristicCloseNodesLnsNumNodes) return false;
855  if (LocalSearchMetaheuristic != other.LocalSearchMetaheuristic) return false;
856  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(GuidedLocalSearchLambdaCoefficient, other.GuidedLocalSearchLambdaCoefficient)) return false;
857  if (UseDepthFirstSearch != other.UseDepthFirstSearch) return false;
858  if (UseCp != other.UseCp) return false;
859  if (UseCpSat != other.UseCpSat) return false;
860  if (ContinuousSchedulingSolver != other.ContinuousSchedulingSolver) return false;
861  if (MixedIntegerSchedulingSolver != other.MixedIntegerSchedulingSolver) return false;
862  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(OptimizationStep, other.OptimizationStep)) return false;
863  if (NumberOfSolutionsToCollect != other.NumberOfSolutionsToCollect) return false;
864  if (SolutionLimit != other.SolutionLimit) return false;
865  if (!object.Equals(TimeLimit, other.TimeLimit)) return false;
866  if (!object.Equals(LnsTimeLimit, other.LnsTimeLimit)) return false;
867  if (!object.Equals(ImprovementLimitParameters, other.ImprovementLimitParameters)) return false;
868  if (UseFullPropagation != other.UseFullPropagation) return false;
869  if (LogSearch != other.LogSearch) return false;
870  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(LogCostScalingFactor, other.LogCostScalingFactor)) return false;
871  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(LogCostOffset, other.LogCostOffset)) return false;
872  if (LogTag != other.LogTag) return false;
873  return Equals(_unknownFields, other._unknownFields);
874  }
875 
876  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
877  public override int GetHashCode() {
878  int hash = 1;
879  if (FirstSolutionStrategy != global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value.Unset) hash ^= FirstSolutionStrategy.GetHashCode();
880  if (UseUnfilteredFirstSolutionStrategy != false) hash ^= UseUnfilteredFirstSolutionStrategy.GetHashCode();
881  if (SavingsNeighborsRatio != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SavingsNeighborsRatio);
882  if (SavingsMaxMemoryUsageBytes != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SavingsMaxMemoryUsageBytes);
883  if (SavingsAddReverseArcs != false) hash ^= SavingsAddReverseArcs.GetHashCode();
884  if (SavingsArcCoefficient != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SavingsArcCoefficient);
885  if (SavingsParallelRoutes != false) hash ^= SavingsParallelRoutes.GetHashCode();
886  if (CheapestInsertionFarthestSeedsRatio != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(CheapestInsertionFarthestSeedsRatio);
887  if (CheapestInsertionFirstSolutionNeighborsRatio != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(CheapestInsertionFirstSolutionNeighborsRatio);
888  if (CheapestInsertionLsOperatorNeighborsRatio != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(CheapestInsertionLsOperatorNeighborsRatio);
889  if (CheapestInsertionAddUnperformedEntries != false) hash ^= CheapestInsertionAddUnperformedEntries.GetHashCode();
890  if (ChristofidesUseMinimumMatching != false) hash ^= ChristofidesUseMinimumMatching.GetHashCode();
891  if (localSearchOperators_ != null) hash ^= LocalSearchOperators.GetHashCode();
892  if (UseMultiArmedBanditConcatenateOperators != false) hash ^= UseMultiArmedBanditConcatenateOperators.GetHashCode();
893  if (MultiArmedBanditCompoundOperatorMemoryCoefficient != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(MultiArmedBanditCompoundOperatorMemoryCoefficient);
894  if (MultiArmedBanditCompoundOperatorExplorationCoefficient != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(MultiArmedBanditCompoundOperatorExplorationCoefficient);
895  if (RelocateExpensiveChainNumArcsToConsider != 0) hash ^= RelocateExpensiveChainNumArcsToConsider.GetHashCode();
896  if (HeuristicExpensiveChainLnsNumArcsToConsider != 0) hash ^= HeuristicExpensiveChainLnsNumArcsToConsider.GetHashCode();
897  if (HeuristicCloseNodesLnsNumNodes != 0) hash ^= HeuristicCloseNodesLnsNumNodes.GetHashCode();
898  if (LocalSearchMetaheuristic != global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value.Unset) hash ^= LocalSearchMetaheuristic.GetHashCode();
899  if (GuidedLocalSearchLambdaCoefficient != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(GuidedLocalSearchLambdaCoefficient);
900  if (UseDepthFirstSearch != false) hash ^= UseDepthFirstSearch.GetHashCode();
901  if (UseCp != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseCp.GetHashCode();
902  if (UseCpSat != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseCpSat.GetHashCode();
903  if (ContinuousSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) hash ^= ContinuousSchedulingSolver.GetHashCode();
904  if (MixedIntegerSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) hash ^= MixedIntegerSchedulingSolver.GetHashCode();
905  if (OptimizationStep != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(OptimizationStep);
906  if (NumberOfSolutionsToCollect != 0) hash ^= NumberOfSolutionsToCollect.GetHashCode();
907  if (SolutionLimit != 0L) hash ^= SolutionLimit.GetHashCode();
908  if (timeLimit_ != null) hash ^= TimeLimit.GetHashCode();
909  if (lnsTimeLimit_ != null) hash ^= LnsTimeLimit.GetHashCode();
910  if (improvementLimitParameters_ != null) hash ^= ImprovementLimitParameters.GetHashCode();
911  if (UseFullPropagation != false) hash ^= UseFullPropagation.GetHashCode();
912  if (LogSearch != false) hash ^= LogSearch.GetHashCode();
913  if (LogCostScalingFactor != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(LogCostScalingFactor);
914  if (LogCostOffset != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(LogCostOffset);
915  if (LogTag.Length != 0) hash ^= LogTag.GetHashCode();
916  if (_unknownFields != null) {
917  hash ^= _unknownFields.GetHashCode();
918  }
919  return hash;
920  }
921 
922  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
923  public override string ToString() {
924  return pb::JsonFormatter.ToDiagnosticString(this);
925  }
926 
927  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
928  public void WriteTo(pb::CodedOutputStream output) {
929  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
930  output.WriteRawMessage(this);
931  #else
932  if (FirstSolutionStrategy != global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value.Unset) {
933  output.WriteRawTag(8);
934  output.WriteEnum((int) FirstSolutionStrategy);
935  }
936  if (UseUnfilteredFirstSolutionStrategy != false) {
937  output.WriteRawTag(16);
938  output.WriteBool(UseUnfilteredFirstSolutionStrategy);
939  }
940  if (localSearchOperators_ != null) {
941  output.WriteRawTag(26);
942  output.WriteMessage(LocalSearchOperators);
943  }
944  if (LocalSearchMetaheuristic != global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value.Unset) {
945  output.WriteRawTag(32);
946  output.WriteEnum((int) LocalSearchMetaheuristic);
947  }
948  if (GuidedLocalSearchLambdaCoefficient != 0D) {
949  output.WriteRawTag(41);
950  output.WriteDouble(GuidedLocalSearchLambdaCoefficient);
951  }
952  if (UseDepthFirstSearch != false) {
953  output.WriteRawTag(48);
954  output.WriteBool(UseDepthFirstSearch);
955  }
956  if (OptimizationStep != 0D) {
957  output.WriteRawTag(57);
958  output.WriteDouble(OptimizationStep);
959  }
960  if (SolutionLimit != 0L) {
961  output.WriteRawTag(64);
962  output.WriteInt64(SolutionLimit);
963  }
964  if (timeLimit_ != null) {
965  output.WriteRawTag(74);
966  output.WriteMessage(TimeLimit);
967  }
968  if (lnsTimeLimit_ != null) {
969  output.WriteRawTag(82);
970  output.WriteMessage(LnsTimeLimit);
971  }
972  if (UseFullPropagation != false) {
973  output.WriteRawTag(88);
974  output.WriteBool(UseFullPropagation);
975  }
976  if (LogSearch != false) {
977  output.WriteRawTag(104);
978  output.WriteBool(LogSearch);
979  }
980  if (SavingsNeighborsRatio != 0D) {
981  output.WriteRawTag(113);
982  output.WriteDouble(SavingsNeighborsRatio);
983  }
984  if (SavingsAddReverseArcs != false) {
985  output.WriteRawTag(120);
986  output.WriteBool(SavingsAddReverseArcs);
987  }
988  if (CheapestInsertionFarthestSeedsRatio != 0D) {
989  output.WriteRawTag(129, 1);
990  output.WriteDouble(CheapestInsertionFarthestSeedsRatio);
991  }
992  if (NumberOfSolutionsToCollect != 0) {
993  output.WriteRawTag(136, 1);
994  output.WriteInt32(NumberOfSolutionsToCollect);
995  }
996  if (SavingsArcCoefficient != 0D) {
997  output.WriteRawTag(145, 1);
998  output.WriteDouble(SavingsArcCoefficient);
999  }
1000  if (SavingsParallelRoutes != false) {
1001  output.WriteRawTag(152, 1);
1002  output.WriteBool(SavingsParallelRoutes);
1003  }
1004  if (RelocateExpensiveChainNumArcsToConsider != 0) {
1005  output.WriteRawTag(160, 1);
1006  output.WriteInt32(RelocateExpensiveChainNumArcsToConsider);
1007  }
1008  if (CheapestInsertionFirstSolutionNeighborsRatio != 0D) {
1009  output.WriteRawTag(169, 1);
1010  output.WriteDouble(CheapestInsertionFirstSolutionNeighborsRatio);
1011  }
1012  if (LogCostScalingFactor != 0D) {
1013  output.WriteRawTag(177, 1);
1014  output.WriteDouble(LogCostScalingFactor);
1015  }
1016  if (SavingsMaxMemoryUsageBytes != 0D) {
1017  output.WriteRawTag(185, 1);
1018  output.WriteDouble(SavingsMaxMemoryUsageBytes);
1019  }
1020  if (UseCpSat != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1021  output.WriteRawTag(216, 1);
1022  output.WriteEnum((int) UseCpSat);
1023  }
1024  if (UseCp != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1025  output.WriteRawTag(224, 1);
1026  output.WriteEnum((int) UseCp);
1027  }
1028  if (LogCostOffset != 0D) {
1029  output.WriteRawTag(233, 1);
1030  output.WriteDouble(LogCostOffset);
1031  }
1032  if (ChristofidesUseMinimumMatching != false) {
1033  output.WriteRawTag(240, 1);
1034  output.WriteBool(ChristofidesUseMinimumMatching);
1035  }
1036  if (CheapestInsertionLsOperatorNeighborsRatio != 0D) {
1037  output.WriteRawTag(249, 1);
1038  output.WriteDouble(CheapestInsertionLsOperatorNeighborsRatio);
1039  }
1040  if (HeuristicExpensiveChainLnsNumArcsToConsider != 0) {
1041  output.WriteRawTag(128, 2);
1042  output.WriteInt32(HeuristicExpensiveChainLnsNumArcsToConsider);
1043  }
1044  if (ContinuousSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1045  output.WriteRawTag(136, 2);
1046  output.WriteEnum((int) ContinuousSchedulingSolver);
1047  }
1048  if (MixedIntegerSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1049  output.WriteRawTag(144, 2);
1050  output.WriteEnum((int) MixedIntegerSchedulingSolver);
1051  }
1052  if (HeuristicCloseNodesLnsNumNodes != 0) {
1053  output.WriteRawTag(152, 2);
1054  output.WriteInt32(HeuristicCloseNodesLnsNumNodes);
1055  }
1056  if (LogTag.Length != 0) {
1057  output.WriteRawTag(162, 2);
1058  output.WriteString(LogTag);
1059  }
1060  if (improvementLimitParameters_ != null) {
1061  output.WriteRawTag(170, 2);
1062  output.WriteMessage(ImprovementLimitParameters);
1063  }
1064  if (CheapestInsertionAddUnperformedEntries != false) {
1065  output.WriteRawTag(192, 2);
1066  output.WriteBool(CheapestInsertionAddUnperformedEntries);
1067  }
1068  if (UseMultiArmedBanditConcatenateOperators != false) {
1069  output.WriteRawTag(200, 2);
1070  output.WriteBool(UseMultiArmedBanditConcatenateOperators);
1071  }
1072  if (MultiArmedBanditCompoundOperatorMemoryCoefficient != 0D) {
1073  output.WriteRawTag(209, 2);
1074  output.WriteDouble(MultiArmedBanditCompoundOperatorMemoryCoefficient);
1075  }
1076  if (MultiArmedBanditCompoundOperatorExplorationCoefficient != 0D) {
1077  output.WriteRawTag(217, 2);
1078  output.WriteDouble(MultiArmedBanditCompoundOperatorExplorationCoefficient);
1079  }
1080  if (_unknownFields != null) {
1081  _unknownFields.WriteTo(output);
1082  }
1083  #endif
1084  }
1085 
1086  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1087  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1088  void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1089  if (FirstSolutionStrategy != global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value.Unset) {
1090  output.WriteRawTag(8);
1091  output.WriteEnum((int) FirstSolutionStrategy);
1092  }
1093  if (UseUnfilteredFirstSolutionStrategy != false) {
1094  output.WriteRawTag(16);
1095  output.WriteBool(UseUnfilteredFirstSolutionStrategy);
1096  }
1097  if (localSearchOperators_ != null) {
1098  output.WriteRawTag(26);
1099  output.WriteMessage(LocalSearchOperators);
1100  }
1101  if (LocalSearchMetaheuristic != global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value.Unset) {
1102  output.WriteRawTag(32);
1103  output.WriteEnum((int) LocalSearchMetaheuristic);
1104  }
1105  if (GuidedLocalSearchLambdaCoefficient != 0D) {
1106  output.WriteRawTag(41);
1107  output.WriteDouble(GuidedLocalSearchLambdaCoefficient);
1108  }
1109  if (UseDepthFirstSearch != false) {
1110  output.WriteRawTag(48);
1111  output.WriteBool(UseDepthFirstSearch);
1112  }
1113  if (OptimizationStep != 0D) {
1114  output.WriteRawTag(57);
1115  output.WriteDouble(OptimizationStep);
1116  }
1117  if (SolutionLimit != 0L) {
1118  output.WriteRawTag(64);
1119  output.WriteInt64(SolutionLimit);
1120  }
1121  if (timeLimit_ != null) {
1122  output.WriteRawTag(74);
1123  output.WriteMessage(TimeLimit);
1124  }
1125  if (lnsTimeLimit_ != null) {
1126  output.WriteRawTag(82);
1127  output.WriteMessage(LnsTimeLimit);
1128  }
1129  if (UseFullPropagation != false) {
1130  output.WriteRawTag(88);
1131  output.WriteBool(UseFullPropagation);
1132  }
1133  if (LogSearch != false) {
1134  output.WriteRawTag(104);
1135  output.WriteBool(LogSearch);
1136  }
1137  if (SavingsNeighborsRatio != 0D) {
1138  output.WriteRawTag(113);
1139  output.WriteDouble(SavingsNeighborsRatio);
1140  }
1141  if (SavingsAddReverseArcs != false) {
1142  output.WriteRawTag(120);
1143  output.WriteBool(SavingsAddReverseArcs);
1144  }
1145  if (CheapestInsertionFarthestSeedsRatio != 0D) {
1146  output.WriteRawTag(129, 1);
1147  output.WriteDouble(CheapestInsertionFarthestSeedsRatio);
1148  }
1149  if (NumberOfSolutionsToCollect != 0) {
1150  output.WriteRawTag(136, 1);
1151  output.WriteInt32(NumberOfSolutionsToCollect);
1152  }
1153  if (SavingsArcCoefficient != 0D) {
1154  output.WriteRawTag(145, 1);
1155  output.WriteDouble(SavingsArcCoefficient);
1156  }
1157  if (SavingsParallelRoutes != false) {
1158  output.WriteRawTag(152, 1);
1159  output.WriteBool(SavingsParallelRoutes);
1160  }
1161  if (RelocateExpensiveChainNumArcsToConsider != 0) {
1162  output.WriteRawTag(160, 1);
1163  output.WriteInt32(RelocateExpensiveChainNumArcsToConsider);
1164  }
1165  if (CheapestInsertionFirstSolutionNeighborsRatio != 0D) {
1166  output.WriteRawTag(169, 1);
1167  output.WriteDouble(CheapestInsertionFirstSolutionNeighborsRatio);
1168  }
1169  if (LogCostScalingFactor != 0D) {
1170  output.WriteRawTag(177, 1);
1171  output.WriteDouble(LogCostScalingFactor);
1172  }
1173  if (SavingsMaxMemoryUsageBytes != 0D) {
1174  output.WriteRawTag(185, 1);
1175  output.WriteDouble(SavingsMaxMemoryUsageBytes);
1176  }
1177  if (UseCpSat != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1178  output.WriteRawTag(216, 1);
1179  output.WriteEnum((int) UseCpSat);
1180  }
1181  if (UseCp != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1182  output.WriteRawTag(224, 1);
1183  output.WriteEnum((int) UseCp);
1184  }
1185  if (LogCostOffset != 0D) {
1186  output.WriteRawTag(233, 1);
1187  output.WriteDouble(LogCostOffset);
1188  }
1189  if (ChristofidesUseMinimumMatching != false) {
1190  output.WriteRawTag(240, 1);
1191  output.WriteBool(ChristofidesUseMinimumMatching);
1192  }
1193  if (CheapestInsertionLsOperatorNeighborsRatio != 0D) {
1194  output.WriteRawTag(249, 1);
1195  output.WriteDouble(CheapestInsertionLsOperatorNeighborsRatio);
1196  }
1197  if (HeuristicExpensiveChainLnsNumArcsToConsider != 0) {
1198  output.WriteRawTag(128, 2);
1199  output.WriteInt32(HeuristicExpensiveChainLnsNumArcsToConsider);
1200  }
1201  if (ContinuousSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1202  output.WriteRawTag(136, 2);
1203  output.WriteEnum((int) ContinuousSchedulingSolver);
1204  }
1205  if (MixedIntegerSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1206  output.WriteRawTag(144, 2);
1207  output.WriteEnum((int) MixedIntegerSchedulingSolver);
1208  }
1209  if (HeuristicCloseNodesLnsNumNodes != 0) {
1210  output.WriteRawTag(152, 2);
1211  output.WriteInt32(HeuristicCloseNodesLnsNumNodes);
1212  }
1213  if (LogTag.Length != 0) {
1214  output.WriteRawTag(162, 2);
1215  output.WriteString(LogTag);
1216  }
1217  if (improvementLimitParameters_ != null) {
1218  output.WriteRawTag(170, 2);
1219  output.WriteMessage(ImprovementLimitParameters);
1220  }
1221  if (CheapestInsertionAddUnperformedEntries != false) {
1222  output.WriteRawTag(192, 2);
1223  output.WriteBool(CheapestInsertionAddUnperformedEntries);
1224  }
1225  if (UseMultiArmedBanditConcatenateOperators != false) {
1226  output.WriteRawTag(200, 2);
1227  output.WriteBool(UseMultiArmedBanditConcatenateOperators);
1228  }
1229  if (MultiArmedBanditCompoundOperatorMemoryCoefficient != 0D) {
1230  output.WriteRawTag(209, 2);
1231  output.WriteDouble(MultiArmedBanditCompoundOperatorMemoryCoefficient);
1232  }
1233  if (MultiArmedBanditCompoundOperatorExplorationCoefficient != 0D) {
1234  output.WriteRawTag(217, 2);
1235  output.WriteDouble(MultiArmedBanditCompoundOperatorExplorationCoefficient);
1236  }
1237  if (_unknownFields != null) {
1238  _unknownFields.WriteTo(ref output);
1239  }
1240  }
1241  #endif
1242 
1243  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1244  public int CalculateSize() {
1245  int size = 0;
1246  if (FirstSolutionStrategy != global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value.Unset) {
1247  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FirstSolutionStrategy);
1248  }
1249  if (UseUnfilteredFirstSolutionStrategy != false) {
1250  size += 1 + 1;
1251  }
1252  if (SavingsNeighborsRatio != 0D) {
1253  size += 1 + 8;
1254  }
1255  if (SavingsMaxMemoryUsageBytes != 0D) {
1256  size += 2 + 8;
1257  }
1258  if (SavingsAddReverseArcs != false) {
1259  size += 1 + 1;
1260  }
1261  if (SavingsArcCoefficient != 0D) {
1262  size += 2 + 8;
1263  }
1264  if (SavingsParallelRoutes != false) {
1265  size += 2 + 1;
1266  }
1267  if (CheapestInsertionFarthestSeedsRatio != 0D) {
1268  size += 2 + 8;
1269  }
1270  if (CheapestInsertionFirstSolutionNeighborsRatio != 0D) {
1271  size += 2 + 8;
1272  }
1273  if (CheapestInsertionLsOperatorNeighborsRatio != 0D) {
1274  size += 2 + 8;
1275  }
1276  if (CheapestInsertionAddUnperformedEntries != false) {
1277  size += 2 + 1;
1278  }
1279  if (ChristofidesUseMinimumMatching != false) {
1280  size += 2 + 1;
1281  }
1282  if (localSearchOperators_ != null) {
1283  size += 1 + pb::CodedOutputStream.ComputeMessageSize(LocalSearchOperators);
1284  }
1285  if (UseMultiArmedBanditConcatenateOperators != false) {
1286  size += 2 + 1;
1287  }
1288  if (MultiArmedBanditCompoundOperatorMemoryCoefficient != 0D) {
1289  size += 2 + 8;
1290  }
1291  if (MultiArmedBanditCompoundOperatorExplorationCoefficient != 0D) {
1292  size += 2 + 8;
1293  }
1294  if (RelocateExpensiveChainNumArcsToConsider != 0) {
1295  size += 2 + pb::CodedOutputStream.ComputeInt32Size(RelocateExpensiveChainNumArcsToConsider);
1296  }
1297  if (HeuristicExpensiveChainLnsNumArcsToConsider != 0) {
1298  size += 2 + pb::CodedOutputStream.ComputeInt32Size(HeuristicExpensiveChainLnsNumArcsToConsider);
1299  }
1300  if (HeuristicCloseNodesLnsNumNodes != 0) {
1301  size += 2 + pb::CodedOutputStream.ComputeInt32Size(HeuristicCloseNodesLnsNumNodes);
1302  }
1303  if (LocalSearchMetaheuristic != global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value.Unset) {
1304  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LocalSearchMetaheuristic);
1305  }
1306  if (GuidedLocalSearchLambdaCoefficient != 0D) {
1307  size += 1 + 8;
1308  }
1309  if (UseDepthFirstSearch != false) {
1310  size += 1 + 1;
1311  }
1312  if (UseCp != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1313  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseCp);
1314  }
1315  if (UseCpSat != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1316  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseCpSat);
1317  }
1318  if (ContinuousSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1319  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) ContinuousSchedulingSolver);
1320  }
1321  if (MixedIntegerSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1322  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) MixedIntegerSchedulingSolver);
1323  }
1324  if (OptimizationStep != 0D) {
1325  size += 1 + 8;
1326  }
1327  if (NumberOfSolutionsToCollect != 0) {
1328  size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumberOfSolutionsToCollect);
1329  }
1330  if (SolutionLimit != 0L) {
1331  size += 1 + pb::CodedOutputStream.ComputeInt64Size(SolutionLimit);
1332  }
1333  if (timeLimit_ != null) {
1334  size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimeLimit);
1335  }
1336  if (lnsTimeLimit_ != null) {
1337  size += 1 + pb::CodedOutputStream.ComputeMessageSize(LnsTimeLimit);
1338  }
1339  if (improvementLimitParameters_ != null) {
1340  size += 2 + pb::CodedOutputStream.ComputeMessageSize(ImprovementLimitParameters);
1341  }
1342  if (UseFullPropagation != false) {
1343  size += 1 + 1;
1344  }
1345  if (LogSearch != false) {
1346  size += 1 + 1;
1347  }
1348  if (LogCostScalingFactor != 0D) {
1349  size += 2 + 8;
1350  }
1351  if (LogCostOffset != 0D) {
1352  size += 2 + 8;
1353  }
1354  if (LogTag.Length != 0) {
1355  size += 2 + pb::CodedOutputStream.ComputeStringSize(LogTag);
1356  }
1357  if (_unknownFields != null) {
1358  size += _unknownFields.CalculateSize();
1359  }
1360  return size;
1361  }
1362 
1363  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1364  public void MergeFrom(RoutingSearchParameters other) {
1365  if (other == null) {
1366  return;
1367  }
1368  if (other.FirstSolutionStrategy != global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value.Unset) {
1369  FirstSolutionStrategy = other.FirstSolutionStrategy;
1370  }
1371  if (other.UseUnfilteredFirstSolutionStrategy != false) {
1372  UseUnfilteredFirstSolutionStrategy = other.UseUnfilteredFirstSolutionStrategy;
1373  }
1374  if (other.SavingsNeighborsRatio != 0D) {
1375  SavingsNeighborsRatio = other.SavingsNeighborsRatio;
1376  }
1377  if (other.SavingsMaxMemoryUsageBytes != 0D) {
1378  SavingsMaxMemoryUsageBytes = other.SavingsMaxMemoryUsageBytes;
1379  }
1380  if (other.SavingsAddReverseArcs != false) {
1381  SavingsAddReverseArcs = other.SavingsAddReverseArcs;
1382  }
1383  if (other.SavingsArcCoefficient != 0D) {
1384  SavingsArcCoefficient = other.SavingsArcCoefficient;
1385  }
1386  if (other.SavingsParallelRoutes != false) {
1387  SavingsParallelRoutes = other.SavingsParallelRoutes;
1388  }
1389  if (other.CheapestInsertionFarthestSeedsRatio != 0D) {
1390  CheapestInsertionFarthestSeedsRatio = other.CheapestInsertionFarthestSeedsRatio;
1391  }
1392  if (other.CheapestInsertionFirstSolutionNeighborsRatio != 0D) {
1393  CheapestInsertionFirstSolutionNeighborsRatio = other.CheapestInsertionFirstSolutionNeighborsRatio;
1394  }
1395  if (other.CheapestInsertionLsOperatorNeighborsRatio != 0D) {
1396  CheapestInsertionLsOperatorNeighborsRatio = other.CheapestInsertionLsOperatorNeighborsRatio;
1397  }
1398  if (other.CheapestInsertionAddUnperformedEntries != false) {
1399  CheapestInsertionAddUnperformedEntries = other.CheapestInsertionAddUnperformedEntries;
1400  }
1401  if (other.ChristofidesUseMinimumMatching != false) {
1402  ChristofidesUseMinimumMatching = other.ChristofidesUseMinimumMatching;
1403  }
1404  if (other.localSearchOperators_ != null) {
1405  if (localSearchOperators_ == null) {
1406  LocalSearchOperators = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators();
1407  }
1408  LocalSearchOperators.MergeFrom(other.LocalSearchOperators);
1409  }
1410  if (other.UseMultiArmedBanditConcatenateOperators != false) {
1411  UseMultiArmedBanditConcatenateOperators = other.UseMultiArmedBanditConcatenateOperators;
1412  }
1413  if (other.MultiArmedBanditCompoundOperatorMemoryCoefficient != 0D) {
1414  MultiArmedBanditCompoundOperatorMemoryCoefficient = other.MultiArmedBanditCompoundOperatorMemoryCoefficient;
1415  }
1416  if (other.MultiArmedBanditCompoundOperatorExplorationCoefficient != 0D) {
1417  MultiArmedBanditCompoundOperatorExplorationCoefficient = other.MultiArmedBanditCompoundOperatorExplorationCoefficient;
1418  }
1419  if (other.RelocateExpensiveChainNumArcsToConsider != 0) {
1420  RelocateExpensiveChainNumArcsToConsider = other.RelocateExpensiveChainNumArcsToConsider;
1421  }
1422  if (other.HeuristicExpensiveChainLnsNumArcsToConsider != 0) {
1423  HeuristicExpensiveChainLnsNumArcsToConsider = other.HeuristicExpensiveChainLnsNumArcsToConsider;
1424  }
1425  if (other.HeuristicCloseNodesLnsNumNodes != 0) {
1426  HeuristicCloseNodesLnsNumNodes = other.HeuristicCloseNodesLnsNumNodes;
1427  }
1428  if (other.LocalSearchMetaheuristic != global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value.Unset) {
1429  LocalSearchMetaheuristic = other.LocalSearchMetaheuristic;
1430  }
1431  if (other.GuidedLocalSearchLambdaCoefficient != 0D) {
1432  GuidedLocalSearchLambdaCoefficient = other.GuidedLocalSearchLambdaCoefficient;
1433  }
1434  if (other.UseDepthFirstSearch != false) {
1435  UseDepthFirstSearch = other.UseDepthFirstSearch;
1436  }
1437  if (other.UseCp != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1438  UseCp = other.UseCp;
1439  }
1440  if (other.UseCpSat != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
1441  UseCpSat = other.UseCpSat;
1442  }
1443  if (other.ContinuousSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1444  ContinuousSchedulingSolver = other.ContinuousSchedulingSolver;
1445  }
1446  if (other.MixedIntegerSchedulingSolver != global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver.Unset) {
1447  MixedIntegerSchedulingSolver = other.MixedIntegerSchedulingSolver;
1448  }
1449  if (other.OptimizationStep != 0D) {
1450  OptimizationStep = other.OptimizationStep;
1451  }
1452  if (other.NumberOfSolutionsToCollect != 0) {
1453  NumberOfSolutionsToCollect = other.NumberOfSolutionsToCollect;
1454  }
1455  if (other.SolutionLimit != 0L) {
1456  SolutionLimit = other.SolutionLimit;
1457  }
1458  if (other.timeLimit_ != null) {
1459  if (timeLimit_ == null) {
1460  TimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
1461  }
1462  TimeLimit.MergeFrom(other.TimeLimit);
1463  }
1464  if (other.lnsTimeLimit_ != null) {
1465  if (lnsTimeLimit_ == null) {
1466  LnsTimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
1467  }
1468  LnsTimeLimit.MergeFrom(other.LnsTimeLimit);
1469  }
1470  if (other.improvementLimitParameters_ != null) {
1471  if (improvementLimitParameters_ == null) {
1472  ImprovementLimitParameters = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.ImprovementSearchLimitParameters();
1473  }
1474  ImprovementLimitParameters.MergeFrom(other.ImprovementLimitParameters);
1475  }
1476  if (other.UseFullPropagation != false) {
1477  UseFullPropagation = other.UseFullPropagation;
1478  }
1479  if (other.LogSearch != false) {
1480  LogSearch = other.LogSearch;
1481  }
1482  if (other.LogCostScalingFactor != 0D) {
1483  LogCostScalingFactor = other.LogCostScalingFactor;
1484  }
1485  if (other.LogCostOffset != 0D) {
1486  LogCostOffset = other.LogCostOffset;
1487  }
1488  if (other.LogTag.Length != 0) {
1489  LogTag = other.LogTag;
1490  }
1491  _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1492  }
1493 
1494  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1495  public void MergeFrom(pb::CodedInputStream input) {
1496  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1497  input.ReadRawMessage(this);
1498  #else
1499  uint tag;
1500  while ((tag = input.ReadTag()) != 0) {
1501  switch(tag) {
1502  default:
1503  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1504  break;
1505  case 8: {
1506  FirstSolutionStrategy = (global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value) input.ReadEnum();
1507  break;
1508  }
1509  case 16: {
1510  UseUnfilteredFirstSolutionStrategy = input.ReadBool();
1511  break;
1512  }
1513  case 26: {
1514  if (localSearchOperators_ == null) {
1515  LocalSearchOperators = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators();
1516  }
1517  input.ReadMessage(LocalSearchOperators);
1518  break;
1519  }
1520  case 32: {
1521  LocalSearchMetaheuristic = (global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value) input.ReadEnum();
1522  break;
1523  }
1524  case 41: {
1525  GuidedLocalSearchLambdaCoefficient = input.ReadDouble();
1526  break;
1527  }
1528  case 48: {
1529  UseDepthFirstSearch = input.ReadBool();
1530  break;
1531  }
1532  case 57: {
1533  OptimizationStep = input.ReadDouble();
1534  break;
1535  }
1536  case 64: {
1537  SolutionLimit = input.ReadInt64();
1538  break;
1539  }
1540  case 74: {
1541  if (timeLimit_ == null) {
1542  TimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
1543  }
1544  input.ReadMessage(TimeLimit);
1545  break;
1546  }
1547  case 82: {
1548  if (lnsTimeLimit_ == null) {
1549  LnsTimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
1550  }
1551  input.ReadMessage(LnsTimeLimit);
1552  break;
1553  }
1554  case 88: {
1555  UseFullPropagation = input.ReadBool();
1556  break;
1557  }
1558  case 104: {
1559  LogSearch = input.ReadBool();
1560  break;
1561  }
1562  case 113: {
1563  SavingsNeighborsRatio = input.ReadDouble();
1564  break;
1565  }
1566  case 120: {
1567  SavingsAddReverseArcs = input.ReadBool();
1568  break;
1569  }
1570  case 129: {
1571  CheapestInsertionFarthestSeedsRatio = input.ReadDouble();
1572  break;
1573  }
1574  case 136: {
1575  NumberOfSolutionsToCollect = input.ReadInt32();
1576  break;
1577  }
1578  case 145: {
1579  SavingsArcCoefficient = input.ReadDouble();
1580  break;
1581  }
1582  case 152: {
1583  SavingsParallelRoutes = input.ReadBool();
1584  break;
1585  }
1586  case 160: {
1587  RelocateExpensiveChainNumArcsToConsider = input.ReadInt32();
1588  break;
1589  }
1590  case 169: {
1591  CheapestInsertionFirstSolutionNeighborsRatio = input.ReadDouble();
1592  break;
1593  }
1594  case 177: {
1595  LogCostScalingFactor = input.ReadDouble();
1596  break;
1597  }
1598  case 185: {
1599  SavingsMaxMemoryUsageBytes = input.ReadDouble();
1600  break;
1601  }
1602  case 216: {
1603  UseCpSat = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
1604  break;
1605  }
1606  case 224: {
1607  UseCp = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
1608  break;
1609  }
1610  case 233: {
1611  LogCostOffset = input.ReadDouble();
1612  break;
1613  }
1614  case 240: {
1615  ChristofidesUseMinimumMatching = input.ReadBool();
1616  break;
1617  }
1618  case 249: {
1619  CheapestInsertionLsOperatorNeighborsRatio = input.ReadDouble();
1620  break;
1621  }
1622  case 256: {
1623  HeuristicExpensiveChainLnsNumArcsToConsider = input.ReadInt32();
1624  break;
1625  }
1626  case 264: {
1627  ContinuousSchedulingSolver = (global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver) input.ReadEnum();
1628  break;
1629  }
1630  case 272: {
1631  MixedIntegerSchedulingSolver = (global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver) input.ReadEnum();
1632  break;
1633  }
1634  case 280: {
1635  HeuristicCloseNodesLnsNumNodes = input.ReadInt32();
1636  break;
1637  }
1638  case 290: {
1639  LogTag = input.ReadString();
1640  break;
1641  }
1642  case 298: {
1643  if (improvementLimitParameters_ == null) {
1644  ImprovementLimitParameters = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.ImprovementSearchLimitParameters();
1645  }
1646  input.ReadMessage(ImprovementLimitParameters);
1647  break;
1648  }
1649  case 320: {
1650  CheapestInsertionAddUnperformedEntries = input.ReadBool();
1651  break;
1652  }
1653  case 328: {
1654  UseMultiArmedBanditConcatenateOperators = input.ReadBool();
1655  break;
1656  }
1657  case 337: {
1658  MultiArmedBanditCompoundOperatorMemoryCoefficient = input.ReadDouble();
1659  break;
1660  }
1661  case 345: {
1662  MultiArmedBanditCompoundOperatorExplorationCoefficient = input.ReadDouble();
1663  break;
1664  }
1665  }
1666  }
1667  #endif
1668  }
1669 
1670  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1671  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1672  void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1673  uint tag;
1674  while ((tag = input.ReadTag()) != 0) {
1675  switch(tag) {
1676  default:
1677  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1678  break;
1679  case 8: {
1680  FirstSolutionStrategy = (global::Google.OrTools.ConstraintSolver.FirstSolutionStrategy.Types.Value) input.ReadEnum();
1681  break;
1682  }
1683  case 16: {
1684  UseUnfilteredFirstSolutionStrategy = input.ReadBool();
1685  break;
1686  }
1687  case 26: {
1688  if (localSearchOperators_ == null) {
1689  LocalSearchOperators = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.LocalSearchNeighborhoodOperators();
1690  }
1691  input.ReadMessage(LocalSearchOperators);
1692  break;
1693  }
1694  case 32: {
1695  LocalSearchMetaheuristic = (global::Google.OrTools.ConstraintSolver.LocalSearchMetaheuristic.Types.Value) input.ReadEnum();
1696  break;
1697  }
1698  case 41: {
1699  GuidedLocalSearchLambdaCoefficient = input.ReadDouble();
1700  break;
1701  }
1702  case 48: {
1703  UseDepthFirstSearch = input.ReadBool();
1704  break;
1705  }
1706  case 57: {
1707  OptimizationStep = input.ReadDouble();
1708  break;
1709  }
1710  case 64: {
1711  SolutionLimit = input.ReadInt64();
1712  break;
1713  }
1714  case 74: {
1715  if (timeLimit_ == null) {
1716  TimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
1717  }
1718  input.ReadMessage(TimeLimit);
1719  break;
1720  }
1721  case 82: {
1722  if (lnsTimeLimit_ == null) {
1723  LnsTimeLimit = new global::Google.Protobuf.WellKnownTypes.Duration();
1724  }
1725  input.ReadMessage(LnsTimeLimit);
1726  break;
1727  }
1728  case 88: {
1729  UseFullPropagation = input.ReadBool();
1730  break;
1731  }
1732  case 104: {
1733  LogSearch = input.ReadBool();
1734  break;
1735  }
1736  case 113: {
1737  SavingsNeighborsRatio = input.ReadDouble();
1738  break;
1739  }
1740  case 120: {
1741  SavingsAddReverseArcs = input.ReadBool();
1742  break;
1743  }
1744  case 129: {
1745  CheapestInsertionFarthestSeedsRatio = input.ReadDouble();
1746  break;
1747  }
1748  case 136: {
1749  NumberOfSolutionsToCollect = input.ReadInt32();
1750  break;
1751  }
1752  case 145: {
1753  SavingsArcCoefficient = input.ReadDouble();
1754  break;
1755  }
1756  case 152: {
1757  SavingsParallelRoutes = input.ReadBool();
1758  break;
1759  }
1760  case 160: {
1761  RelocateExpensiveChainNumArcsToConsider = input.ReadInt32();
1762  break;
1763  }
1764  case 169: {
1765  CheapestInsertionFirstSolutionNeighborsRatio = input.ReadDouble();
1766  break;
1767  }
1768  case 177: {
1769  LogCostScalingFactor = input.ReadDouble();
1770  break;
1771  }
1772  case 185: {
1773  SavingsMaxMemoryUsageBytes = input.ReadDouble();
1774  break;
1775  }
1776  case 216: {
1777  UseCpSat = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
1778  break;
1779  }
1780  case 224: {
1781  UseCp = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
1782  break;
1783  }
1784  case 233: {
1785  LogCostOffset = input.ReadDouble();
1786  break;
1787  }
1788  case 240: {
1789  ChristofidesUseMinimumMatching = input.ReadBool();
1790  break;
1791  }
1792  case 249: {
1793  CheapestInsertionLsOperatorNeighborsRatio = input.ReadDouble();
1794  break;
1795  }
1796  case 256: {
1797  HeuristicExpensiveChainLnsNumArcsToConsider = input.ReadInt32();
1798  break;
1799  }
1800  case 264: {
1801  ContinuousSchedulingSolver = (global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver) input.ReadEnum();
1802  break;
1803  }
1804  case 272: {
1805  MixedIntegerSchedulingSolver = (global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.SchedulingSolver) input.ReadEnum();
1806  break;
1807  }
1808  case 280: {
1809  HeuristicCloseNodesLnsNumNodes = input.ReadInt32();
1810  break;
1811  }
1812  case 290: {
1813  LogTag = input.ReadString();
1814  break;
1815  }
1816  case 298: {
1817  if (improvementLimitParameters_ == null) {
1818  ImprovementLimitParameters = new global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Types.ImprovementSearchLimitParameters();
1819  }
1820  input.ReadMessage(ImprovementLimitParameters);
1821  break;
1822  }
1823  case 320: {
1824  CheapestInsertionAddUnperformedEntries = input.ReadBool();
1825  break;
1826  }
1827  case 328: {
1828  UseMultiArmedBanditConcatenateOperators = input.ReadBool();
1829  break;
1830  }
1831  case 337: {
1832  MultiArmedBanditCompoundOperatorMemoryCoefficient = input.ReadDouble();
1833  break;
1834  }
1835  case 345: {
1836  MultiArmedBanditCompoundOperatorExplorationCoefficient = input.ReadDouble();
1837  break;
1838  }
1839  }
1840  }
1841  }
1842  #endif
1843 
1844  #region Nested types
1845  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1847  public static partial class Types {
1852  public enum SchedulingSolver {
1853  [pbr::OriginalName("UNSET")] Unset = 0,
1854  [pbr::OriginalName("GLOP")] Glop = 1,
1855  [pbr::OriginalName("CP_SAT")] CpSat = 2,
1856  }
1857 
1862  public sealed partial class LocalSearchNeighborhoodOperators : pb::IMessage<LocalSearchNeighborhoodOperators>
1863  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1864  , pb::IBufferMessage
1865  #endif
1866  {
1867  private static readonly pb::MessageParser<LocalSearchNeighborhoodOperators> _parser = new pb::MessageParser<LocalSearchNeighborhoodOperators>(() => new LocalSearchNeighborhoodOperators());
1868  private pb::UnknownFieldSet _unknownFields;
1869  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1870  public static pb::MessageParser<LocalSearchNeighborhoodOperators> Parser { get { return _parser; } }
1871 
1872  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1873  public static pbr::MessageDescriptor Descriptor {
1874  get { return global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Descriptor.NestedTypes[0]; }
1875  }
1876 
1877  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1878  pbr::MessageDescriptor pb::IMessage.Descriptor {
1879  get { return Descriptor; }
1880  }
1881 
1882  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1884  OnConstruction();
1885  }
1886 
1887  partial void OnConstruction();
1888 
1889  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1891  useRelocate_ = other.useRelocate_;
1892  useRelocatePair_ = other.useRelocatePair_;
1893  useLightRelocatePair_ = other.useLightRelocatePair_;
1894  useRelocateNeighbors_ = other.useRelocateNeighbors_;
1895  useRelocateSubtrip_ = other.useRelocateSubtrip_;
1896  useExchange_ = other.useExchange_;
1897  useExchangePair_ = other.useExchangePair_;
1898  useExchangeSubtrip_ = other.useExchangeSubtrip_;
1899  useCross_ = other.useCross_;
1900  useCrossExchange_ = other.useCrossExchange_;
1901  useRelocateExpensiveChain_ = other.useRelocateExpensiveChain_;
1902  useTwoOpt_ = other.useTwoOpt_;
1903  useOrOpt_ = other.useOrOpt_;
1904  useLinKernighan_ = other.useLinKernighan_;
1905  useTspOpt_ = other.useTspOpt_;
1906  useMakeActive_ = other.useMakeActive_;
1907  useRelocateAndMakeActive_ = other.useRelocateAndMakeActive_;
1908  useMakeInactive_ = other.useMakeInactive_;
1909  useMakeChainInactive_ = other.useMakeChainInactive_;
1910  useSwapActive_ = other.useSwapActive_;
1911  useExtendedSwapActive_ = other.useExtendedSwapActive_;
1912  useNodePairSwapActive_ = other.useNodePairSwapActive_;
1913  usePathLns_ = other.usePathLns_;
1914  useFullPathLns_ = other.useFullPathLns_;
1915  useTspLns_ = other.useTspLns_;
1916  useInactiveLns_ = other.useInactiveLns_;
1917  useGlobalCheapestInsertionPathLns_ = other.useGlobalCheapestInsertionPathLns_;
1918  useLocalCheapestInsertionPathLns_ = other.useLocalCheapestInsertionPathLns_;
1919  useRelocatePathGlobalCheapestInsertionInsertUnperformed_ = other.useRelocatePathGlobalCheapestInsertionInsertUnperformed_;
1920  useGlobalCheapestInsertionExpensiveChainLns_ = other.useGlobalCheapestInsertionExpensiveChainLns_;
1921  useLocalCheapestInsertionExpensiveChainLns_ = other.useLocalCheapestInsertionExpensiveChainLns_;
1922  useGlobalCheapestInsertionCloseNodesLns_ = other.useGlobalCheapestInsertionCloseNodesLns_;
1923  useLocalCheapestInsertionCloseNodesLns_ = other.useLocalCheapestInsertionCloseNodesLns_;
1924  _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1925  }
1926 
1927  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1929  return new LocalSearchNeighborhoodOperators(this);
1930  }
1931 
1933  public const int UseRelocateFieldNumber = 1;
1934  private global::Google.OrTools.Util.OptionalBoolean useRelocate_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
1946  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1947  public global::Google.OrTools.Util.OptionalBoolean UseRelocate {
1948  get { return useRelocate_; }
1949  set {
1950  useRelocate_ = value;
1951  }
1952  }
1953 
1955  public const int UseRelocatePairFieldNumber = 2;
1956  private global::Google.OrTools.Util.OptionalBoolean useRelocatePair_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
1968  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1969  public global::Google.OrTools.Util.OptionalBoolean UseRelocatePair {
1970  get { return useRelocatePair_; }
1971  set {
1972  useRelocatePair_ = value;
1973  }
1974  }
1975 
1977  public const int UseLightRelocatePairFieldNumber = 24;
1978  private global::Google.OrTools.Util.OptionalBoolean useLightRelocatePair_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
1988  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1989  public global::Google.OrTools.Util.OptionalBoolean UseLightRelocatePair {
1990  get { return useLightRelocatePair_; }
1991  set {
1992  useLightRelocatePair_ = value;
1993  }
1994  }
1995 
1997  public const int UseRelocateNeighborsFieldNumber = 3;
1998  private global::Google.OrTools.Util.OptionalBoolean useRelocateNeighbors_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2023  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2024  public global::Google.OrTools.Util.OptionalBoolean UseRelocateNeighbors {
2025  get { return useRelocateNeighbors_; }
2026  set {
2027  useRelocateNeighbors_ = value;
2028  }
2029  }
2030 
2032  public const int UseRelocateSubtripFieldNumber = 25;
2033  private global::Google.OrTools.Util.OptionalBoolean useRelocateSubtrip_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2050  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2051  public global::Google.OrTools.Util.OptionalBoolean UseRelocateSubtrip {
2052  get { return useRelocateSubtrip_; }
2053  set {
2054  useRelocateSubtrip_ = value;
2055  }
2056  }
2057 
2059  public const int UseExchangeFieldNumber = 4;
2060  private global::Google.OrTools.Util.OptionalBoolean useExchange_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2070  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2071  public global::Google.OrTools.Util.OptionalBoolean UseExchange {
2072  get { return useExchange_; }
2073  set {
2074  useExchange_ = value;
2075  }
2076  }
2077 
2079  public const int UseExchangePairFieldNumber = 22;
2080  private global::Google.OrTools.Util.OptionalBoolean useExchangePair_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2090  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2091  public global::Google.OrTools.Util.OptionalBoolean UseExchangePair {
2092  get { return useExchangePair_; }
2093  set {
2094  useExchangePair_ = value;
2095  }
2096  }
2097 
2099  public const int UseExchangeSubtripFieldNumber = 26;
2100  private global::Google.OrTools.Util.OptionalBoolean useExchangeSubtrip_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2105  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2106  public global::Google.OrTools.Util.OptionalBoolean UseExchangeSubtrip {
2107  get { return useExchangeSubtrip_; }
2108  set {
2109  useExchangeSubtrip_ = value;
2110  }
2111  }
2112 
2114  public const int UseCrossFieldNumber = 5;
2115  private global::Google.OrTools.Util.OptionalBoolean useCross_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2127  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2128  public global::Google.OrTools.Util.OptionalBoolean UseCross {
2129  get { return useCross_; }
2130  set {
2131  useCross_ = value;
2132  }
2133  }
2134 
2136  public const int UseCrossExchangeFieldNumber = 6;
2137  private global::Google.OrTools.Util.OptionalBoolean useCrossExchange_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2141  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2142  public global::Google.OrTools.Util.OptionalBoolean UseCrossExchange {
2143  get { return useCrossExchange_; }
2144  set {
2145  useCrossExchange_ = value;
2146  }
2147  }
2148 
2150  public const int UseRelocateExpensiveChainFieldNumber = 23;
2151  private global::Google.OrTools.Util.OptionalBoolean useRelocateExpensiveChain_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2164  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2165  public global::Google.OrTools.Util.OptionalBoolean UseRelocateExpensiveChain {
2166  get { return useRelocateExpensiveChain_; }
2167  set {
2168  useRelocateExpensiveChain_ = value;
2169  }
2170  }
2171 
2173  public const int UseTwoOptFieldNumber = 7;
2174  private global::Google.OrTools.Util.OptionalBoolean useTwoOpt_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2187  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2188  public global::Google.OrTools.Util.OptionalBoolean UseTwoOpt {
2189  get { return useTwoOpt_; }
2190  set {
2191  useTwoOpt_ = value;
2192  }
2193  }
2194 
2196  public const int UseOrOptFieldNumber = 8;
2197  private global::Google.OrTools.Util.OptionalBoolean useOrOpt_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2211  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2212  public global::Google.OrTools.Util.OptionalBoolean UseOrOpt {
2213  get { return useOrOpt_; }
2214  set {
2215  useOrOpt_ = value;
2216  }
2217  }
2218 
2220  public const int UseLinKernighanFieldNumber = 9;
2221  private global::Google.OrTools.Util.OptionalBoolean useLinKernighan_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2228  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2229  public global::Google.OrTools.Util.OptionalBoolean UseLinKernighan {
2230  get { return useLinKernighan_; }
2231  set {
2232  useLinKernighan_ = value;
2233  }
2234  }
2235 
2237  public const int UseTspOptFieldNumber = 10;
2238  private global::Google.OrTools.Util.OptionalBoolean useTspOpt_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2247  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2248  public global::Google.OrTools.Util.OptionalBoolean UseTspOpt {
2249  get { return useTspOpt_; }
2250  set {
2251  useTspOpt_ = value;
2252  }
2253  }
2254 
2256  public const int UseMakeActiveFieldNumber = 11;
2257  private global::Google.OrTools.Util.OptionalBoolean useMakeActive_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2267  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2268  public global::Google.OrTools.Util.OptionalBoolean UseMakeActive {
2269  get { return useMakeActive_; }
2270  set {
2271  useMakeActive_ = value;
2272  }
2273  }
2274 
2276  public const int UseRelocateAndMakeActiveFieldNumber = 21;
2277  private global::Google.OrTools.Util.OptionalBoolean useRelocateAndMakeActive_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2290  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2291  public global::Google.OrTools.Util.OptionalBoolean UseRelocateAndMakeActive {
2292  get { return useRelocateAndMakeActive_; }
2293  set {
2294  useRelocateAndMakeActive_ = value;
2295  }
2296  }
2297 
2299  public const int UseMakeInactiveFieldNumber = 12;
2300  private global::Google.OrTools.Util.OptionalBoolean useMakeInactive_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2308  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2309  public global::Google.OrTools.Util.OptionalBoolean UseMakeInactive {
2310  get { return useMakeInactive_; }
2311  set {
2312  useMakeInactive_ = value;
2313  }
2314  }
2315 
2317  public const int UseMakeChainInactiveFieldNumber = 13;
2318  private global::Google.OrTools.Util.OptionalBoolean useMakeChainInactive_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2327  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2328  public global::Google.OrTools.Util.OptionalBoolean UseMakeChainInactive {
2329  get { return useMakeChainInactive_; }
2330  set {
2331  useMakeChainInactive_ = value;
2332  }
2333  }
2334 
2336  public const int UseSwapActiveFieldNumber = 14;
2337  private global::Google.OrTools.Util.OptionalBoolean useSwapActive_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2345  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2346  public global::Google.OrTools.Util.OptionalBoolean UseSwapActive {
2347  get { return useSwapActive_; }
2348  set {
2349  useSwapActive_ = value;
2350  }
2351  }
2352 
2354  public const int UseExtendedSwapActiveFieldNumber = 15;
2355  private global::Google.OrTools.Util.OptionalBoolean useExtendedSwapActive_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2368  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2369  public global::Google.OrTools.Util.OptionalBoolean UseExtendedSwapActive {
2370  get { return useExtendedSwapActive_; }
2371  set {
2372  useExtendedSwapActive_ = value;
2373  }
2374  }
2375 
2377  public const int UseNodePairSwapActiveFieldNumber = 20;
2378  private global::Google.OrTools.Util.OptionalBoolean useNodePairSwapActive_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2392  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2393  public global::Google.OrTools.Util.OptionalBoolean UseNodePairSwapActive {
2394  get { return useNodePairSwapActive_; }
2395  set {
2396  useNodePairSwapActive_ = value;
2397  }
2398  }
2399 
2401  public const int UsePathLnsFieldNumber = 16;
2402  private global::Google.OrTools.Util.OptionalBoolean usePathLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2413  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2414  public global::Google.OrTools.Util.OptionalBoolean UsePathLns {
2415  get { return usePathLns_; }
2416  set {
2417  usePathLns_ = value;
2418  }
2419  }
2420 
2422  public const int UseFullPathLnsFieldNumber = 17;
2423  private global::Google.OrTools.Util.OptionalBoolean useFullPathLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2427  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2428  public global::Google.OrTools.Util.OptionalBoolean UseFullPathLns {
2429  get { return useFullPathLns_; }
2430  set {
2431  useFullPathLns_ = value;
2432  }
2433  }
2434 
2436  public const int UseTspLnsFieldNumber = 18;
2437  private global::Google.OrTools.Util.OptionalBoolean useTspLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2446  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2447  public global::Google.OrTools.Util.OptionalBoolean UseTspLns {
2448  get { return useTspLns_; }
2449  set {
2450  useTspLns_ = value;
2451  }
2452  }
2453 
2455  public const int UseInactiveLnsFieldNumber = 19;
2456  private global::Google.OrTools.Util.OptionalBoolean useInactiveLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2462  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2463  public global::Google.OrTools.Util.OptionalBoolean UseInactiveLns {
2464  get { return useInactiveLns_; }
2465  set {
2466  useInactiveLns_ = value;
2467  }
2468  }
2469 
2471  public const int UseGlobalCheapestInsertionPathLnsFieldNumber = 27;
2472  private global::Google.OrTools.Util.OptionalBoolean useGlobalCheapestInsertionPathLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2478  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2479  public global::Google.OrTools.Util.OptionalBoolean UseGlobalCheapestInsertionPathLns {
2480  get { return useGlobalCheapestInsertionPathLns_; }
2481  set {
2482  useGlobalCheapestInsertionPathLns_ = value;
2483  }
2484  }
2485 
2487  public const int UseLocalCheapestInsertionPathLnsFieldNumber = 28;
2488  private global::Google.OrTools.Util.OptionalBoolean useLocalCheapestInsertionPathLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2492  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2493  public global::Google.OrTools.Util.OptionalBoolean UseLocalCheapestInsertionPathLns {
2494  get { return useLocalCheapestInsertionPathLns_; }
2495  set {
2496  useLocalCheapestInsertionPathLns_ = value;
2497  }
2498  }
2499 
2501  public const int UseRelocatePathGlobalCheapestInsertionInsertUnperformedFieldNumber = 33;
2502  private global::Google.OrTools.Util.OptionalBoolean useRelocatePathGlobalCheapestInsertionInsertUnperformed_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2508  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2509  public global::Google.OrTools.Util.OptionalBoolean UseRelocatePathGlobalCheapestInsertionInsertUnperformed {
2510  get { return useRelocatePathGlobalCheapestInsertionInsertUnperformed_; }
2511  set {
2512  useRelocatePathGlobalCheapestInsertionInsertUnperformed_ = value;
2513  }
2514  }
2515 
2517  public const int UseGlobalCheapestInsertionExpensiveChainLnsFieldNumber = 29;
2518  private global::Google.OrTools.Util.OptionalBoolean useGlobalCheapestInsertionExpensiveChainLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2525  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2526  public global::Google.OrTools.Util.OptionalBoolean UseGlobalCheapestInsertionExpensiveChainLns {
2527  get { return useGlobalCheapestInsertionExpensiveChainLns_; }
2528  set {
2529  useGlobalCheapestInsertionExpensiveChainLns_ = value;
2530  }
2531  }
2532 
2534  public const int UseLocalCheapestInsertionExpensiveChainLnsFieldNumber = 30;
2535  private global::Google.OrTools.Util.OptionalBoolean useLocalCheapestInsertionExpensiveChainLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2540  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2541  public global::Google.OrTools.Util.OptionalBoolean UseLocalCheapestInsertionExpensiveChainLns {
2542  get { return useLocalCheapestInsertionExpensiveChainLns_; }
2543  set {
2544  useLocalCheapestInsertionExpensiveChainLns_ = value;
2545  }
2546  }
2547 
2549  public const int UseGlobalCheapestInsertionCloseNodesLnsFieldNumber = 31;
2550  private global::Google.OrTools.Util.OptionalBoolean useGlobalCheapestInsertionCloseNodesLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2557  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2558  public global::Google.OrTools.Util.OptionalBoolean UseGlobalCheapestInsertionCloseNodesLns {
2559  get { return useGlobalCheapestInsertionCloseNodesLns_; }
2560  set {
2561  useGlobalCheapestInsertionCloseNodesLns_ = value;
2562  }
2563  }
2564 
2566  public const int UseLocalCheapestInsertionCloseNodesLnsFieldNumber = 32;
2567  private global::Google.OrTools.Util.OptionalBoolean useLocalCheapestInsertionCloseNodesLns_ = global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified;
2572  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2573  public global::Google.OrTools.Util.OptionalBoolean UseLocalCheapestInsertionCloseNodesLns {
2574  get { return useLocalCheapestInsertionCloseNodesLns_; }
2575  set {
2576  useLocalCheapestInsertionCloseNodesLns_ = value;
2577  }
2578  }
2579 
2580  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2581  public override bool Equals(object other) {
2582  return Equals(other as LocalSearchNeighborhoodOperators);
2583  }
2584 
2585  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2587  if (ReferenceEquals(other, null)) {
2588  return false;
2589  }
2590  if (ReferenceEquals(other, this)) {
2591  return true;
2592  }
2593  if (UseRelocate != other.UseRelocate) return false;
2594  if (UseRelocatePair != other.UseRelocatePair) return false;
2595  if (UseLightRelocatePair != other.UseLightRelocatePair) return false;
2596  if (UseRelocateNeighbors != other.UseRelocateNeighbors) return false;
2597  if (UseRelocateSubtrip != other.UseRelocateSubtrip) return false;
2598  if (UseExchange != other.UseExchange) return false;
2599  if (UseExchangePair != other.UseExchangePair) return false;
2600  if (UseExchangeSubtrip != other.UseExchangeSubtrip) return false;
2601  if (UseCross != other.UseCross) return false;
2602  if (UseCrossExchange != other.UseCrossExchange) return false;
2603  if (UseRelocateExpensiveChain != other.UseRelocateExpensiveChain) return false;
2604  if (UseTwoOpt != other.UseTwoOpt) return false;
2605  if (UseOrOpt != other.UseOrOpt) return false;
2606  if (UseLinKernighan != other.UseLinKernighan) return false;
2607  if (UseTspOpt != other.UseTspOpt) return false;
2608  if (UseMakeActive != other.UseMakeActive) return false;
2609  if (UseRelocateAndMakeActive != other.UseRelocateAndMakeActive) return false;
2610  if (UseMakeInactive != other.UseMakeInactive) return false;
2611  if (UseMakeChainInactive != other.UseMakeChainInactive) return false;
2612  if (UseSwapActive != other.UseSwapActive) return false;
2613  if (UseExtendedSwapActive != other.UseExtendedSwapActive) return false;
2614  if (UseNodePairSwapActive != other.UseNodePairSwapActive) return false;
2615  if (UsePathLns != other.UsePathLns) return false;
2616  if (UseFullPathLns != other.UseFullPathLns) return false;
2617  if (UseTspLns != other.UseTspLns) return false;
2618  if (UseInactiveLns != other.UseInactiveLns) return false;
2619  if (UseGlobalCheapestInsertionPathLns != other.UseGlobalCheapestInsertionPathLns) return false;
2620  if (UseLocalCheapestInsertionPathLns != other.UseLocalCheapestInsertionPathLns) return false;
2621  if (UseRelocatePathGlobalCheapestInsertionInsertUnperformed != other.UseRelocatePathGlobalCheapestInsertionInsertUnperformed) return false;
2622  if (UseGlobalCheapestInsertionExpensiveChainLns != other.UseGlobalCheapestInsertionExpensiveChainLns) return false;
2623  if (UseLocalCheapestInsertionExpensiveChainLns != other.UseLocalCheapestInsertionExpensiveChainLns) return false;
2624  if (UseGlobalCheapestInsertionCloseNodesLns != other.UseGlobalCheapestInsertionCloseNodesLns) return false;
2625  if (UseLocalCheapestInsertionCloseNodesLns != other.UseLocalCheapestInsertionCloseNodesLns) return false;
2626  return Equals(_unknownFields, other._unknownFields);
2627  }
2628 
2629  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2630  public override int GetHashCode() {
2631  int hash = 1;
2632  if (UseRelocate != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseRelocate.GetHashCode();
2633  if (UseRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseRelocatePair.GetHashCode();
2634  if (UseLightRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseLightRelocatePair.GetHashCode();
2635  if (UseRelocateNeighbors != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseRelocateNeighbors.GetHashCode();
2636  if (UseRelocateSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseRelocateSubtrip.GetHashCode();
2637  if (UseExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseExchange.GetHashCode();
2638  if (UseExchangePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseExchangePair.GetHashCode();
2639  if (UseExchangeSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseExchangeSubtrip.GetHashCode();
2640  if (UseCross != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseCross.GetHashCode();
2641  if (UseCrossExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseCrossExchange.GetHashCode();
2642  if (UseRelocateExpensiveChain != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseRelocateExpensiveChain.GetHashCode();
2643  if (UseTwoOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseTwoOpt.GetHashCode();
2644  if (UseOrOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseOrOpt.GetHashCode();
2645  if (UseLinKernighan != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseLinKernighan.GetHashCode();
2646  if (UseTspOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseTspOpt.GetHashCode();
2647  if (UseMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseMakeActive.GetHashCode();
2648  if (UseRelocateAndMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseRelocateAndMakeActive.GetHashCode();
2649  if (UseMakeInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseMakeInactive.GetHashCode();
2650  if (UseMakeChainInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseMakeChainInactive.GetHashCode();
2651  if (UseSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseSwapActive.GetHashCode();
2652  if (UseExtendedSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseExtendedSwapActive.GetHashCode();
2653  if (UseNodePairSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseNodePairSwapActive.GetHashCode();
2654  if (UsePathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UsePathLns.GetHashCode();
2655  if (UseFullPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseFullPathLns.GetHashCode();
2656  if (UseTspLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseTspLns.GetHashCode();
2657  if (UseInactiveLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseInactiveLns.GetHashCode();
2658  if (UseGlobalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseGlobalCheapestInsertionPathLns.GetHashCode();
2659  if (UseLocalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseLocalCheapestInsertionPathLns.GetHashCode();
2660  if (UseRelocatePathGlobalCheapestInsertionInsertUnperformed != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseRelocatePathGlobalCheapestInsertionInsertUnperformed.GetHashCode();
2661  if (UseGlobalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseGlobalCheapestInsertionExpensiveChainLns.GetHashCode();
2662  if (UseLocalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseLocalCheapestInsertionExpensiveChainLns.GetHashCode();
2663  if (UseGlobalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseGlobalCheapestInsertionCloseNodesLns.GetHashCode();
2664  if (UseLocalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) hash ^= UseLocalCheapestInsertionCloseNodesLns.GetHashCode();
2665  if (_unknownFields != null) {
2666  hash ^= _unknownFields.GetHashCode();
2667  }
2668  return hash;
2669  }
2670 
2671  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2672  public override string ToString() {
2673  return pb::JsonFormatter.ToDiagnosticString(this);
2674  }
2675 
2676  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2677  public void WriteTo(pb::CodedOutputStream output) {
2678  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2679  output.WriteRawMessage(this);
2680  #else
2681  if (UseRelocate != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2682  output.WriteRawTag(8);
2683  output.WriteEnum((int) UseRelocate);
2684  }
2685  if (UseRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2686  output.WriteRawTag(16);
2687  output.WriteEnum((int) UseRelocatePair);
2688  }
2689  if (UseRelocateNeighbors != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2690  output.WriteRawTag(24);
2691  output.WriteEnum((int) UseRelocateNeighbors);
2692  }
2693  if (UseExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2694  output.WriteRawTag(32);
2695  output.WriteEnum((int) UseExchange);
2696  }
2697  if (UseCross != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2698  output.WriteRawTag(40);
2699  output.WriteEnum((int) UseCross);
2700  }
2701  if (UseCrossExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2702  output.WriteRawTag(48);
2703  output.WriteEnum((int) UseCrossExchange);
2704  }
2705  if (UseTwoOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2706  output.WriteRawTag(56);
2707  output.WriteEnum((int) UseTwoOpt);
2708  }
2709  if (UseOrOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2710  output.WriteRawTag(64);
2711  output.WriteEnum((int) UseOrOpt);
2712  }
2713  if (UseLinKernighan != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2714  output.WriteRawTag(72);
2715  output.WriteEnum((int) UseLinKernighan);
2716  }
2717  if (UseTspOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2718  output.WriteRawTag(80);
2719  output.WriteEnum((int) UseTspOpt);
2720  }
2721  if (UseMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2722  output.WriteRawTag(88);
2723  output.WriteEnum((int) UseMakeActive);
2724  }
2725  if (UseMakeInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2726  output.WriteRawTag(96);
2727  output.WriteEnum((int) UseMakeInactive);
2728  }
2729  if (UseMakeChainInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2730  output.WriteRawTag(104);
2731  output.WriteEnum((int) UseMakeChainInactive);
2732  }
2733  if (UseSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2734  output.WriteRawTag(112);
2735  output.WriteEnum((int) UseSwapActive);
2736  }
2737  if (UseExtendedSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2738  output.WriteRawTag(120);
2739  output.WriteEnum((int) UseExtendedSwapActive);
2740  }
2741  if (UsePathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2742  output.WriteRawTag(128, 1);
2743  output.WriteEnum((int) UsePathLns);
2744  }
2745  if (UseFullPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2746  output.WriteRawTag(136, 1);
2747  output.WriteEnum((int) UseFullPathLns);
2748  }
2749  if (UseTspLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2750  output.WriteRawTag(144, 1);
2751  output.WriteEnum((int) UseTspLns);
2752  }
2753  if (UseInactiveLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2754  output.WriteRawTag(152, 1);
2755  output.WriteEnum((int) UseInactiveLns);
2756  }
2757  if (UseNodePairSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2758  output.WriteRawTag(160, 1);
2759  output.WriteEnum((int) UseNodePairSwapActive);
2760  }
2761  if (UseRelocateAndMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2762  output.WriteRawTag(168, 1);
2763  output.WriteEnum((int) UseRelocateAndMakeActive);
2764  }
2765  if (UseExchangePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2766  output.WriteRawTag(176, 1);
2767  output.WriteEnum((int) UseExchangePair);
2768  }
2769  if (UseRelocateExpensiveChain != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2770  output.WriteRawTag(184, 1);
2771  output.WriteEnum((int) UseRelocateExpensiveChain);
2772  }
2773  if (UseLightRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2774  output.WriteRawTag(192, 1);
2775  output.WriteEnum((int) UseLightRelocatePair);
2776  }
2777  if (UseRelocateSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2778  output.WriteRawTag(200, 1);
2779  output.WriteEnum((int) UseRelocateSubtrip);
2780  }
2781  if (UseExchangeSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2782  output.WriteRawTag(208, 1);
2783  output.WriteEnum((int) UseExchangeSubtrip);
2784  }
2785  if (UseGlobalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2786  output.WriteRawTag(216, 1);
2787  output.WriteEnum((int) UseGlobalCheapestInsertionPathLns);
2788  }
2789  if (UseLocalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2790  output.WriteRawTag(224, 1);
2791  output.WriteEnum((int) UseLocalCheapestInsertionPathLns);
2792  }
2793  if (UseGlobalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2794  output.WriteRawTag(232, 1);
2795  output.WriteEnum((int) UseGlobalCheapestInsertionExpensiveChainLns);
2796  }
2797  if (UseLocalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2798  output.WriteRawTag(240, 1);
2799  output.WriteEnum((int) UseLocalCheapestInsertionExpensiveChainLns);
2800  }
2801  if (UseGlobalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2802  output.WriteRawTag(248, 1);
2803  output.WriteEnum((int) UseGlobalCheapestInsertionCloseNodesLns);
2804  }
2805  if (UseLocalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2806  output.WriteRawTag(128, 2);
2807  output.WriteEnum((int) UseLocalCheapestInsertionCloseNodesLns);
2808  }
2809  if (UseRelocatePathGlobalCheapestInsertionInsertUnperformed != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2810  output.WriteRawTag(136, 2);
2811  output.WriteEnum((int) UseRelocatePathGlobalCheapestInsertionInsertUnperformed);
2812  }
2813  if (_unknownFields != null) {
2814  _unknownFields.WriteTo(output);
2815  }
2816  #endif
2817  }
2818 
2819  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2820  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2821  void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
2822  if (UseRelocate != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2823  output.WriteRawTag(8);
2824  output.WriteEnum((int) UseRelocate);
2825  }
2826  if (UseRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2827  output.WriteRawTag(16);
2828  output.WriteEnum((int) UseRelocatePair);
2829  }
2830  if (UseRelocateNeighbors != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2831  output.WriteRawTag(24);
2832  output.WriteEnum((int) UseRelocateNeighbors);
2833  }
2834  if (UseExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2835  output.WriteRawTag(32);
2836  output.WriteEnum((int) UseExchange);
2837  }
2838  if (UseCross != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2839  output.WriteRawTag(40);
2840  output.WriteEnum((int) UseCross);
2841  }
2842  if (UseCrossExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2843  output.WriteRawTag(48);
2844  output.WriteEnum((int) UseCrossExchange);
2845  }
2846  if (UseTwoOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2847  output.WriteRawTag(56);
2848  output.WriteEnum((int) UseTwoOpt);
2849  }
2850  if (UseOrOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2851  output.WriteRawTag(64);
2852  output.WriteEnum((int) UseOrOpt);
2853  }
2854  if (UseLinKernighan != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2855  output.WriteRawTag(72);
2856  output.WriteEnum((int) UseLinKernighan);
2857  }
2858  if (UseTspOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2859  output.WriteRawTag(80);
2860  output.WriteEnum((int) UseTspOpt);
2861  }
2862  if (UseMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2863  output.WriteRawTag(88);
2864  output.WriteEnum((int) UseMakeActive);
2865  }
2866  if (UseMakeInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2867  output.WriteRawTag(96);
2868  output.WriteEnum((int) UseMakeInactive);
2869  }
2870  if (UseMakeChainInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2871  output.WriteRawTag(104);
2872  output.WriteEnum((int) UseMakeChainInactive);
2873  }
2874  if (UseSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2875  output.WriteRawTag(112);
2876  output.WriteEnum((int) UseSwapActive);
2877  }
2878  if (UseExtendedSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2879  output.WriteRawTag(120);
2880  output.WriteEnum((int) UseExtendedSwapActive);
2881  }
2882  if (UsePathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2883  output.WriteRawTag(128, 1);
2884  output.WriteEnum((int) UsePathLns);
2885  }
2886  if (UseFullPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2887  output.WriteRawTag(136, 1);
2888  output.WriteEnum((int) UseFullPathLns);
2889  }
2890  if (UseTspLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2891  output.WriteRawTag(144, 1);
2892  output.WriteEnum((int) UseTspLns);
2893  }
2894  if (UseInactiveLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2895  output.WriteRawTag(152, 1);
2896  output.WriteEnum((int) UseInactiveLns);
2897  }
2898  if (UseNodePairSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2899  output.WriteRawTag(160, 1);
2900  output.WriteEnum((int) UseNodePairSwapActive);
2901  }
2902  if (UseRelocateAndMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2903  output.WriteRawTag(168, 1);
2904  output.WriteEnum((int) UseRelocateAndMakeActive);
2905  }
2906  if (UseExchangePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2907  output.WriteRawTag(176, 1);
2908  output.WriteEnum((int) UseExchangePair);
2909  }
2910  if (UseRelocateExpensiveChain != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2911  output.WriteRawTag(184, 1);
2912  output.WriteEnum((int) UseRelocateExpensiveChain);
2913  }
2914  if (UseLightRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2915  output.WriteRawTag(192, 1);
2916  output.WriteEnum((int) UseLightRelocatePair);
2917  }
2918  if (UseRelocateSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2919  output.WriteRawTag(200, 1);
2920  output.WriteEnum((int) UseRelocateSubtrip);
2921  }
2922  if (UseExchangeSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2923  output.WriteRawTag(208, 1);
2924  output.WriteEnum((int) UseExchangeSubtrip);
2925  }
2926  if (UseGlobalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2927  output.WriteRawTag(216, 1);
2928  output.WriteEnum((int) UseGlobalCheapestInsertionPathLns);
2929  }
2930  if (UseLocalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2931  output.WriteRawTag(224, 1);
2932  output.WriteEnum((int) UseLocalCheapestInsertionPathLns);
2933  }
2934  if (UseGlobalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2935  output.WriteRawTag(232, 1);
2936  output.WriteEnum((int) UseGlobalCheapestInsertionExpensiveChainLns);
2937  }
2938  if (UseLocalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2939  output.WriteRawTag(240, 1);
2940  output.WriteEnum((int) UseLocalCheapestInsertionExpensiveChainLns);
2941  }
2942  if (UseGlobalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2943  output.WriteRawTag(248, 1);
2944  output.WriteEnum((int) UseGlobalCheapestInsertionCloseNodesLns);
2945  }
2946  if (UseLocalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2947  output.WriteRawTag(128, 2);
2948  output.WriteEnum((int) UseLocalCheapestInsertionCloseNodesLns);
2949  }
2950  if (UseRelocatePathGlobalCheapestInsertionInsertUnperformed != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2951  output.WriteRawTag(136, 2);
2952  output.WriteEnum((int) UseRelocatePathGlobalCheapestInsertionInsertUnperformed);
2953  }
2954  if (_unknownFields != null) {
2955  _unknownFields.WriteTo(ref output);
2956  }
2957  }
2958  #endif
2959 
2960  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2961  public int CalculateSize() {
2962  int size = 0;
2963  if (UseRelocate != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2964  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocate);
2965  }
2966  if (UseRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2967  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocatePair);
2968  }
2969  if (UseLightRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2970  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseLightRelocatePair);
2971  }
2972  if (UseRelocateNeighbors != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2973  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateNeighbors);
2974  }
2975  if (UseRelocateSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2976  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateSubtrip);
2977  }
2978  if (UseExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2979  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseExchange);
2980  }
2981  if (UseExchangePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2982  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseExchangePair);
2983  }
2984  if (UseExchangeSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2985  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseExchangeSubtrip);
2986  }
2987  if (UseCross != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2988  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseCross);
2989  }
2990  if (UseCrossExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2991  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseCrossExchange);
2992  }
2993  if (UseRelocateExpensiveChain != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2994  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateExpensiveChain);
2995  }
2996  if (UseTwoOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
2997  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseTwoOpt);
2998  }
2999  if (UseOrOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3000  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseOrOpt);
3001  }
3002  if (UseLinKernighan != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3003  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseLinKernighan);
3004  }
3005  if (UseTspOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3006  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseTspOpt);
3007  }
3008  if (UseMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3009  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseMakeActive);
3010  }
3011  if (UseRelocateAndMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3012  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocateAndMakeActive);
3013  }
3014  if (UseMakeInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3015  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseMakeInactive);
3016  }
3017  if (UseMakeChainInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3018  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseMakeChainInactive);
3019  }
3020  if (UseSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3021  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseSwapActive);
3022  }
3023  if (UseExtendedSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3024  size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseExtendedSwapActive);
3025  }
3026  if (UseNodePairSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3027  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseNodePairSwapActive);
3028  }
3029  if (UsePathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3030  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UsePathLns);
3031  }
3032  if (UseFullPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3033  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseFullPathLns);
3034  }
3035  if (UseTspLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3036  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseTspLns);
3037  }
3038  if (UseInactiveLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3039  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseInactiveLns);
3040  }
3041  if (UseGlobalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3042  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseGlobalCheapestInsertionPathLns);
3043  }
3044  if (UseLocalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3045  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseLocalCheapestInsertionPathLns);
3046  }
3047  if (UseRelocatePathGlobalCheapestInsertionInsertUnperformed != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3048  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseRelocatePathGlobalCheapestInsertionInsertUnperformed);
3049  }
3050  if (UseGlobalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3051  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseGlobalCheapestInsertionExpensiveChainLns);
3052  }
3053  if (UseLocalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3054  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseLocalCheapestInsertionExpensiveChainLns);
3055  }
3056  if (UseGlobalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3057  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseGlobalCheapestInsertionCloseNodesLns);
3058  }
3059  if (UseLocalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3060  size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseLocalCheapestInsertionCloseNodesLns);
3061  }
3062  if (_unknownFields != null) {
3063  size += _unknownFields.CalculateSize();
3064  }
3065  return size;
3066  }
3067 
3068  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3070  if (other == null) {
3071  return;
3072  }
3073  if (other.UseRelocate != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3074  UseRelocate = other.UseRelocate;
3075  }
3076  if (other.UseRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3077  UseRelocatePair = other.UseRelocatePair;
3078  }
3079  if (other.UseLightRelocatePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3080  UseLightRelocatePair = other.UseLightRelocatePair;
3081  }
3082  if (other.UseRelocateNeighbors != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3083  UseRelocateNeighbors = other.UseRelocateNeighbors;
3084  }
3085  if (other.UseRelocateSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3086  UseRelocateSubtrip = other.UseRelocateSubtrip;
3087  }
3088  if (other.UseExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3089  UseExchange = other.UseExchange;
3090  }
3091  if (other.UseExchangePair != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3092  UseExchangePair = other.UseExchangePair;
3093  }
3094  if (other.UseExchangeSubtrip != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3095  UseExchangeSubtrip = other.UseExchangeSubtrip;
3096  }
3097  if (other.UseCross != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3098  UseCross = other.UseCross;
3099  }
3100  if (other.UseCrossExchange != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3101  UseCrossExchange = other.UseCrossExchange;
3102  }
3103  if (other.UseRelocateExpensiveChain != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3104  UseRelocateExpensiveChain = other.UseRelocateExpensiveChain;
3105  }
3106  if (other.UseTwoOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3107  UseTwoOpt = other.UseTwoOpt;
3108  }
3109  if (other.UseOrOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3110  UseOrOpt = other.UseOrOpt;
3111  }
3112  if (other.UseLinKernighan != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3113  UseLinKernighan = other.UseLinKernighan;
3114  }
3115  if (other.UseTspOpt != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3116  UseTspOpt = other.UseTspOpt;
3117  }
3118  if (other.UseMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3119  UseMakeActive = other.UseMakeActive;
3120  }
3121  if (other.UseRelocateAndMakeActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3122  UseRelocateAndMakeActive = other.UseRelocateAndMakeActive;
3123  }
3124  if (other.UseMakeInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3125  UseMakeInactive = other.UseMakeInactive;
3126  }
3127  if (other.UseMakeChainInactive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3128  UseMakeChainInactive = other.UseMakeChainInactive;
3129  }
3130  if (other.UseSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3131  UseSwapActive = other.UseSwapActive;
3132  }
3133  if (other.UseExtendedSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3134  UseExtendedSwapActive = other.UseExtendedSwapActive;
3135  }
3136  if (other.UseNodePairSwapActive != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3137  UseNodePairSwapActive = other.UseNodePairSwapActive;
3138  }
3139  if (other.UsePathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3140  UsePathLns = other.UsePathLns;
3141  }
3142  if (other.UseFullPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3143  UseFullPathLns = other.UseFullPathLns;
3144  }
3145  if (other.UseTspLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3146  UseTspLns = other.UseTspLns;
3147  }
3148  if (other.UseInactiveLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3149  UseInactiveLns = other.UseInactiveLns;
3150  }
3151  if (other.UseGlobalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3152  UseGlobalCheapestInsertionPathLns = other.UseGlobalCheapestInsertionPathLns;
3153  }
3154  if (other.UseLocalCheapestInsertionPathLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3155  UseLocalCheapestInsertionPathLns = other.UseLocalCheapestInsertionPathLns;
3156  }
3157  if (other.UseRelocatePathGlobalCheapestInsertionInsertUnperformed != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3158  UseRelocatePathGlobalCheapestInsertionInsertUnperformed = other.UseRelocatePathGlobalCheapestInsertionInsertUnperformed;
3159  }
3160  if (other.UseGlobalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3161  UseGlobalCheapestInsertionExpensiveChainLns = other.UseGlobalCheapestInsertionExpensiveChainLns;
3162  }
3163  if (other.UseLocalCheapestInsertionExpensiveChainLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3164  UseLocalCheapestInsertionExpensiveChainLns = other.UseLocalCheapestInsertionExpensiveChainLns;
3165  }
3166  if (other.UseGlobalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3167  UseGlobalCheapestInsertionCloseNodesLns = other.UseGlobalCheapestInsertionCloseNodesLns;
3168  }
3169  if (other.UseLocalCheapestInsertionCloseNodesLns != global::Google.OrTools.Util.OptionalBoolean.BoolUnspecified) {
3170  UseLocalCheapestInsertionCloseNodesLns = other.UseLocalCheapestInsertionCloseNodesLns;
3171  }
3172  _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3173  }
3174 
3175  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3176  public void MergeFrom(pb::CodedInputStream input) {
3177  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3178  input.ReadRawMessage(this);
3179  #else
3180  uint tag;
3181  while ((tag = input.ReadTag()) != 0) {
3182  switch(tag) {
3183  default:
3184  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3185  break;
3186  case 8: {
3187  UseRelocate = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3188  break;
3189  }
3190  case 16: {
3191  UseRelocatePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3192  break;
3193  }
3194  case 24: {
3195  UseRelocateNeighbors = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3196  break;
3197  }
3198  case 32: {
3199  UseExchange = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3200  break;
3201  }
3202  case 40: {
3203  UseCross = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3204  break;
3205  }
3206  case 48: {
3207  UseCrossExchange = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3208  break;
3209  }
3210  case 56: {
3211  UseTwoOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3212  break;
3213  }
3214  case 64: {
3215  UseOrOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3216  break;
3217  }
3218  case 72: {
3219  UseLinKernighan = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3220  break;
3221  }
3222  case 80: {
3223  UseTspOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3224  break;
3225  }
3226  case 88: {
3227  UseMakeActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3228  break;
3229  }
3230  case 96: {
3231  UseMakeInactive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3232  break;
3233  }
3234  case 104: {
3235  UseMakeChainInactive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3236  break;
3237  }
3238  case 112: {
3239  UseSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3240  break;
3241  }
3242  case 120: {
3243  UseExtendedSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3244  break;
3245  }
3246  case 128: {
3247  UsePathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3248  break;
3249  }
3250  case 136: {
3251  UseFullPathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3252  break;
3253  }
3254  case 144: {
3255  UseTspLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3256  break;
3257  }
3258  case 152: {
3259  UseInactiveLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3260  break;
3261  }
3262  case 160: {
3263  UseNodePairSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3264  break;
3265  }
3266  case 168: {
3267  UseRelocateAndMakeActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3268  break;
3269  }
3270  case 176: {
3271  UseExchangePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3272  break;
3273  }
3274  case 184: {
3275  UseRelocateExpensiveChain = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3276  break;
3277  }
3278  case 192: {
3279  UseLightRelocatePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3280  break;
3281  }
3282  case 200: {
3283  UseRelocateSubtrip = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3284  break;
3285  }
3286  case 208: {
3287  UseExchangeSubtrip = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3288  break;
3289  }
3290  case 216: {
3291  UseGlobalCheapestInsertionPathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3292  break;
3293  }
3294  case 224: {
3295  UseLocalCheapestInsertionPathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3296  break;
3297  }
3298  case 232: {
3299  UseGlobalCheapestInsertionExpensiveChainLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3300  break;
3301  }
3302  case 240: {
3303  UseLocalCheapestInsertionExpensiveChainLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3304  break;
3305  }
3306  case 248: {
3307  UseGlobalCheapestInsertionCloseNodesLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3308  break;
3309  }
3310  case 256: {
3311  UseLocalCheapestInsertionCloseNodesLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3312  break;
3313  }
3314  case 264: {
3315  UseRelocatePathGlobalCheapestInsertionInsertUnperformed = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3316  break;
3317  }
3318  }
3319  }
3320  #endif
3321  }
3322 
3323  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3324  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3325  void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3326  uint tag;
3327  while ((tag = input.ReadTag()) != 0) {
3328  switch(tag) {
3329  default:
3330  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3331  break;
3332  case 8: {
3333  UseRelocate = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3334  break;
3335  }
3336  case 16: {
3337  UseRelocatePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3338  break;
3339  }
3340  case 24: {
3341  UseRelocateNeighbors = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3342  break;
3343  }
3344  case 32: {
3345  UseExchange = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3346  break;
3347  }
3348  case 40: {
3349  UseCross = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3350  break;
3351  }
3352  case 48: {
3353  UseCrossExchange = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3354  break;
3355  }
3356  case 56: {
3357  UseTwoOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3358  break;
3359  }
3360  case 64: {
3361  UseOrOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3362  break;
3363  }
3364  case 72: {
3365  UseLinKernighan = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3366  break;
3367  }
3368  case 80: {
3369  UseTspOpt = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3370  break;
3371  }
3372  case 88: {
3373  UseMakeActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3374  break;
3375  }
3376  case 96: {
3377  UseMakeInactive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3378  break;
3379  }
3380  case 104: {
3381  UseMakeChainInactive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3382  break;
3383  }
3384  case 112: {
3385  UseSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3386  break;
3387  }
3388  case 120: {
3389  UseExtendedSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3390  break;
3391  }
3392  case 128: {
3393  UsePathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3394  break;
3395  }
3396  case 136: {
3397  UseFullPathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3398  break;
3399  }
3400  case 144: {
3401  UseTspLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3402  break;
3403  }
3404  case 152: {
3405  UseInactiveLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3406  break;
3407  }
3408  case 160: {
3409  UseNodePairSwapActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3410  break;
3411  }
3412  case 168: {
3413  UseRelocateAndMakeActive = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3414  break;
3415  }
3416  case 176: {
3417  UseExchangePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3418  break;
3419  }
3420  case 184: {
3421  UseRelocateExpensiveChain = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3422  break;
3423  }
3424  case 192: {
3425  UseLightRelocatePair = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3426  break;
3427  }
3428  case 200: {
3429  UseRelocateSubtrip = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3430  break;
3431  }
3432  case 208: {
3433  UseExchangeSubtrip = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3434  break;
3435  }
3436  case 216: {
3437  UseGlobalCheapestInsertionPathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3438  break;
3439  }
3440  case 224: {
3441  UseLocalCheapestInsertionPathLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3442  break;
3443  }
3444  case 232: {
3445  UseGlobalCheapestInsertionExpensiveChainLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3446  break;
3447  }
3448  case 240: {
3449  UseLocalCheapestInsertionExpensiveChainLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3450  break;
3451  }
3452  case 248: {
3453  UseGlobalCheapestInsertionCloseNodesLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3454  break;
3455  }
3456  case 256: {
3457  UseLocalCheapestInsertionCloseNodesLns = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3458  break;
3459  }
3460  case 264: {
3461  UseRelocatePathGlobalCheapestInsertionInsertUnperformed = (global::Google.OrTools.Util.OptionalBoolean) input.ReadEnum();
3462  break;
3463  }
3464  }
3465  }
3466  }
3467  #endif
3468 
3469  }
3470 
3474  public sealed partial class ImprovementSearchLimitParameters : pb::IMessage<ImprovementSearchLimitParameters>
3475  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3476  , pb::IBufferMessage
3477  #endif
3478  {
3479  private static readonly pb::MessageParser<ImprovementSearchLimitParameters> _parser = new pb::MessageParser<ImprovementSearchLimitParameters>(() => new ImprovementSearchLimitParameters());
3480  private pb::UnknownFieldSet _unknownFields;
3481  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3482  public static pb::MessageParser<ImprovementSearchLimitParameters> Parser { get { return _parser; } }
3483 
3484  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3485  public static pbr::MessageDescriptor Descriptor {
3486  get { return global::Google.OrTools.ConstraintSolver.RoutingSearchParameters.Descriptor.NestedTypes[1]; }
3487  }
3488 
3489  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3490  pbr::MessageDescriptor pb::IMessage.Descriptor {
3491  get { return Descriptor; }
3492  }
3493 
3494  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3496  OnConstruction();
3497  }
3498 
3499  partial void OnConstruction();
3500 
3501  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3503  improvementRateCoefficient_ = other.improvementRateCoefficient_;
3504  improvementRateSolutionsDistance_ = other.improvementRateSolutionsDistance_;
3505  _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
3506  }
3507 
3508  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3510  return new ImprovementSearchLimitParameters(this);
3511  }
3512 
3514  public const int ImprovementRateCoefficientFieldNumber = 38;
3515  private double improvementRateCoefficient_;
3521  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3522  public double ImprovementRateCoefficient {
3523  get { return improvementRateCoefficient_; }
3524  set {
3525  improvementRateCoefficient_ = value;
3526  }
3527  }
3528 
3530  public const int ImprovementRateSolutionsDistanceFieldNumber = 39;
3531  private int improvementRateSolutionsDistance_;
3539  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3540  public int ImprovementRateSolutionsDistance {
3541  get { return improvementRateSolutionsDistance_; }
3542  set {
3543  improvementRateSolutionsDistance_ = value;
3544  }
3545  }
3546 
3547  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3548  public override bool Equals(object other) {
3549  return Equals(other as ImprovementSearchLimitParameters);
3550  }
3551 
3552  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3554  if (ReferenceEquals(other, null)) {
3555  return false;
3556  }
3557  if (ReferenceEquals(other, this)) {
3558  return true;
3559  }
3560  if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(ImprovementRateCoefficient, other.ImprovementRateCoefficient)) return false;
3561  if (ImprovementRateSolutionsDistance != other.ImprovementRateSolutionsDistance) return false;
3562  return Equals(_unknownFields, other._unknownFields);
3563  }
3564 
3565  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3566  public override int GetHashCode() {
3567  int hash = 1;
3568  if (ImprovementRateCoefficient != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(ImprovementRateCoefficient);
3569  if (ImprovementRateSolutionsDistance != 0) hash ^= ImprovementRateSolutionsDistance.GetHashCode();
3570  if (_unknownFields != null) {
3571  hash ^= _unknownFields.GetHashCode();
3572  }
3573  return hash;
3574  }
3575 
3576  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3577  public override string ToString() {
3578  return pb::JsonFormatter.ToDiagnosticString(this);
3579  }
3580 
3581  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3582  public void WriteTo(pb::CodedOutputStream output) {
3583  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3584  output.WriteRawMessage(this);
3585  #else
3586  if (ImprovementRateCoefficient != 0D) {
3587  output.WriteRawTag(177, 2);
3588  output.WriteDouble(ImprovementRateCoefficient);
3589  }
3590  if (ImprovementRateSolutionsDistance != 0) {
3591  output.WriteRawTag(184, 2);
3592  output.WriteInt32(ImprovementRateSolutionsDistance);
3593  }
3594  if (_unknownFields != null) {
3595  _unknownFields.WriteTo(output);
3596  }
3597  #endif
3598  }
3599 
3600  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3601  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3602  void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
3603  if (ImprovementRateCoefficient != 0D) {
3604  output.WriteRawTag(177, 2);
3605  output.WriteDouble(ImprovementRateCoefficient);
3606  }
3607  if (ImprovementRateSolutionsDistance != 0) {
3608  output.WriteRawTag(184, 2);
3609  output.WriteInt32(ImprovementRateSolutionsDistance);
3610  }
3611  if (_unknownFields != null) {
3612  _unknownFields.WriteTo(ref output);
3613  }
3614  }
3615  #endif
3616 
3617  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3618  public int CalculateSize() {
3619  int size = 0;
3620  if (ImprovementRateCoefficient != 0D) {
3621  size += 2 + 8;
3622  }
3623  if (ImprovementRateSolutionsDistance != 0) {
3624  size += 2 + pb::CodedOutputStream.ComputeInt32Size(ImprovementRateSolutionsDistance);
3625  }
3626  if (_unknownFields != null) {
3627  size += _unknownFields.CalculateSize();
3628  }
3629  return size;
3630  }
3631 
3632  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3634  if (other == null) {
3635  return;
3636  }
3637  if (other.ImprovementRateCoefficient != 0D) {
3638  ImprovementRateCoefficient = other.ImprovementRateCoefficient;
3639  }
3640  if (other.ImprovementRateSolutionsDistance != 0) {
3641  ImprovementRateSolutionsDistance = other.ImprovementRateSolutionsDistance;
3642  }
3643  _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3644  }
3645 
3646  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3647  public void MergeFrom(pb::CodedInputStream input) {
3648  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3649  input.ReadRawMessage(this);
3650  #else
3651  uint tag;
3652  while ((tag = input.ReadTag()) != 0) {
3653  switch(tag) {
3654  default:
3655  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3656  break;
3657  case 305: {
3658  ImprovementRateCoefficient = input.ReadDouble();
3659  break;
3660  }
3661  case 312: {
3662  ImprovementRateSolutionsDistance = input.ReadInt32();
3663  break;
3664  }
3665  }
3666  }
3667  #endif
3668  }
3669 
3670  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3671  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3672  void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3673  uint tag;
3674  while ((tag = input.ReadTag()) != 0) {
3675  switch(tag) {
3676  default:
3677  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3678  break;
3679  case 305: {
3680  ImprovementRateCoefficient = input.ReadDouble();
3681  break;
3682  }
3683  case 312: {
3684  ImprovementRateSolutionsDistance = input.ReadInt32();
3685  break;
3686  }
3687  }
3688  }
3689  }
3690  #endif
3691 
3692  }
3693 
3694  }
3695  #endregion
3696 
3697  }
3698 
3702  public sealed partial class RoutingModelParameters : pb::IMessage<RoutingModelParameters>
3703  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3704  , pb::IBufferMessage
3705  #endif
3706  {
3707  private static readonly pb::MessageParser<RoutingModelParameters> _parser = new pb::MessageParser<RoutingModelParameters>(() => new RoutingModelParameters());
3708  private pb::UnknownFieldSet _unknownFields;
3709  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3710  public static pb::MessageParser<RoutingModelParameters> Parser { get { return _parser; } }
3711 
3712  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3713  public static pbr::MessageDescriptor Descriptor {
3714  get { return global::Google.OrTools.ConstraintSolver.RoutingParametersReflection.Descriptor.MessageTypes[1]; }
3715  }
3716 
3717  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3718  pbr::MessageDescriptor pb::IMessage.Descriptor {
3719  get { return Descriptor; }
3720  }
3721 
3722  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3724  OnConstruction();
3725  }
3726 
3727  partial void OnConstruction();
3728 
3729  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3731  solverParameters_ = other.solverParameters_ != null ? other.solverParameters_.Clone() : null;
3732  reduceVehicleCostModel_ = other.reduceVehicleCostModel_;
3733  maxCallbackCacheSize_ = other.maxCallbackCacheSize_;
3734  _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
3735  }
3736 
3737  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3739  return new RoutingModelParameters(this);
3740  }
3741 
3743  public const int SolverParametersFieldNumber = 1;
3744  private global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters solverParameters_;
3748  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3749  public global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters SolverParameters {
3750  get { return solverParameters_; }
3751  set {
3752  solverParameters_ = value;
3753  }
3754  }
3755 
3757  public const int ReduceVehicleCostModelFieldNumber = 2;
3758  private bool reduceVehicleCostModel_;
3765  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3766  public bool ReduceVehicleCostModel {
3767  get { return reduceVehicleCostModel_; }
3768  set {
3769  reduceVehicleCostModel_ = value;
3770  }
3771  }
3772 
3774  public const int MaxCallbackCacheSizeFieldNumber = 3;
3775  private int maxCallbackCacheSize_;
3780  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3781  public int MaxCallbackCacheSize {
3782  get { return maxCallbackCacheSize_; }
3783  set {
3784  maxCallbackCacheSize_ = value;
3785  }
3786  }
3787 
3788  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3789  public override bool Equals(object other) {
3790  return Equals(other as RoutingModelParameters);
3791  }
3792 
3793  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3794  public bool Equals(RoutingModelParameters other) {
3795  if (ReferenceEquals(other, null)) {
3796  return false;
3797  }
3798  if (ReferenceEquals(other, this)) {
3799  return true;
3800  }
3801  if (!object.Equals(SolverParameters, other.SolverParameters)) return false;
3802  if (ReduceVehicleCostModel != other.ReduceVehicleCostModel) return false;
3803  if (MaxCallbackCacheSize != other.MaxCallbackCacheSize) return false;
3804  return Equals(_unknownFields, other._unknownFields);
3805  }
3806 
3807  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3808  public override int GetHashCode() {
3809  int hash = 1;
3810  if (solverParameters_ != null) hash ^= SolverParameters.GetHashCode();
3811  if (ReduceVehicleCostModel != false) hash ^= ReduceVehicleCostModel.GetHashCode();
3812  if (MaxCallbackCacheSize != 0) hash ^= MaxCallbackCacheSize.GetHashCode();
3813  if (_unknownFields != null) {
3814  hash ^= _unknownFields.GetHashCode();
3815  }
3816  return hash;
3817  }
3818 
3819  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3820  public override string ToString() {
3821  return pb::JsonFormatter.ToDiagnosticString(this);
3822  }
3823 
3824  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3825  public void WriteTo(pb::CodedOutputStream output) {
3826  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3827  output.WriteRawMessage(this);
3828  #else
3829  if (solverParameters_ != null) {
3830  output.WriteRawTag(10);
3831  output.WriteMessage(SolverParameters);
3832  }
3833  if (ReduceVehicleCostModel != false) {
3834  output.WriteRawTag(16);
3835  output.WriteBool(ReduceVehicleCostModel);
3836  }
3837  if (MaxCallbackCacheSize != 0) {
3838  output.WriteRawTag(24);
3839  output.WriteInt32(MaxCallbackCacheSize);
3840  }
3841  if (_unknownFields != null) {
3842  _unknownFields.WriteTo(output);
3843  }
3844  #endif
3845  }
3846 
3847  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3848  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3849  void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
3850  if (solverParameters_ != null) {
3851  output.WriteRawTag(10);
3852  output.WriteMessage(SolverParameters);
3853  }
3854  if (ReduceVehicleCostModel != false) {
3855  output.WriteRawTag(16);
3856  output.WriteBool(ReduceVehicleCostModel);
3857  }
3858  if (MaxCallbackCacheSize != 0) {
3859  output.WriteRawTag(24);
3860  output.WriteInt32(MaxCallbackCacheSize);
3861  }
3862  if (_unknownFields != null) {
3863  _unknownFields.WriteTo(ref output);
3864  }
3865  }
3866  #endif
3867 
3868  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3869  public int CalculateSize() {
3870  int size = 0;
3871  if (solverParameters_ != null) {
3872  size += 1 + pb::CodedOutputStream.ComputeMessageSize(SolverParameters);
3873  }
3874  if (ReduceVehicleCostModel != false) {
3875  size += 1 + 1;
3876  }
3877  if (MaxCallbackCacheSize != 0) {
3878  size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxCallbackCacheSize);
3879  }
3880  if (_unknownFields != null) {
3881  size += _unknownFields.CalculateSize();
3882  }
3883  return size;
3884  }
3885 
3886  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3887  public void MergeFrom(RoutingModelParameters other) {
3888  if (other == null) {
3889  return;
3890  }
3891  if (other.solverParameters_ != null) {
3892  if (solverParameters_ == null) {
3893  SolverParameters = new global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters();
3894  }
3895  SolverParameters.MergeFrom(other.SolverParameters);
3896  }
3897  if (other.ReduceVehicleCostModel != false) {
3898  ReduceVehicleCostModel = other.ReduceVehicleCostModel;
3899  }
3900  if (other.MaxCallbackCacheSize != 0) {
3901  MaxCallbackCacheSize = other.MaxCallbackCacheSize;
3902  }
3903  _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3904  }
3905 
3906  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3907  public void MergeFrom(pb::CodedInputStream input) {
3908  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3909  input.ReadRawMessage(this);
3910  #else
3911  uint tag;
3912  while ((tag = input.ReadTag()) != 0) {
3913  switch(tag) {
3914  default:
3915  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3916  break;
3917  case 10: {
3918  if (solverParameters_ == null) {
3919  SolverParameters = new global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters();
3920  }
3921  input.ReadMessage(SolverParameters);
3922  break;
3923  }
3924  case 16: {
3925  ReduceVehicleCostModel = input.ReadBool();
3926  break;
3927  }
3928  case 24: {
3929  MaxCallbackCacheSize = input.ReadInt32();
3930  break;
3931  }
3932  }
3933  }
3934  #endif
3935  }
3936 
3937  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3938  [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3939  void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3940  uint tag;
3941  while ((tag = input.ReadTag()) != 0) {
3942  switch(tag) {
3943  default:
3944  _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3945  break;
3946  case 10: {
3947  if (solverParameters_ == null) {
3948  SolverParameters = new global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters();
3949  }
3950  input.ReadMessage(SolverParameters);
3951  break;
3952  }
3953  case 16: {
3954  ReduceVehicleCostModel = input.ReadBool();
3955  break;
3956  }
3957  case 24: {
3958  MaxCallbackCacheSize = input.ReadInt32();
3959  break;
3960  }
3961  }
3962  }
3963  }
3964  #endif
3965 
3966  }
3967 
3968  #endregion
3969 
3970 }
3971 
3972 #endregion Designer generated code
global::Google.OrTools.Util.OptionalBoolean UseRelocateExpensiveChain
Operator which detects the relocate_expensive_chain_num_arcs_to_consider most expensive arcs on a pat...
override int GetHashCode()
LocalSearchMetaheuristic()
int CalculateSize()
global::Google.OrTools.Util.OptionalBoolean UseRelocatePathGlobalCheapestInsertionInsertUnperformed
The following operator relocates an entire route to an empty path and then tries to insert the unperf...
override string ToString()
RoutingSearchParameters(RoutingSearchParameters other)
global::Google.OrTools.Util.OptionalBoolean UseGlobalCheapestInsertionExpensiveChainLns
This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider most expensive arcs on a route...
void MergeFrom(RoutingSearchParameters other)
Parameters required for the improvement search limit.
global::Google.OrTools.Util.OptionalBoolean UseGlobalCheapestInsertionCloseNodesLns
The following operator makes a node and its heuristic_close_nodes_lns_num_nodes closest neighbors unp...
ImprovementSearchLimitParameters(ImprovementSearchLimitParameters other)
SchedulingSolver
Underlying solver to use in dimension scheduling, respectively for continuous and mixed models.
global::Google.OrTools.Util.OptionalBoolean UseTspOpt
Sliding TSP operator.
global::Google.OrTools.Util.OptionalBoolean UseTspLns
TSP-base LNS.
int CalculateSize()
LocalSearchNeighborhoodOperators()
void MergeFrom(pb::CodedInputStream input)
global::Google.OrTools.Util.OptionalBoolean UseTwoOpt
— Intra-route operators — Operator which reverves a sub-chain of a path.
ImprovementSearchLimitParameters Clone()
bool Equals(RoutingSearchParameters other)
global::Google.OrTools.Util.OptionalBoolean UseMakeChainInactive
Operator which makes a "chain" of path nodes inactive.
Container for nested types declared in the LocalSearchMetaheuristic message type.
bool Equals(ImprovementSearchLimitParameters other)
override bool Equals(object other)
Parameters which have to be set when creating a RoutingModel.
global::Google.OrTools.Util.OptionalBoolean UseSwapActive
Operator which replaces an active node by an inactive one.
Value
global::Google.OrTools.Util.OptionalBoolean UseRelocateAndMakeActive
Operator which relocates a node while making an inactive one active.
ConstraintSolverParameters Clone()
void MergeFrom(ImprovementSearchLimitParameters other)
global::Google.OrTools.Util.OptionalBoolean UseNodePairSwapActive
Operator which makes an inactive node active and an active pair of nodes inactive OR makes an inactiv...
void WriteTo(pb::CodedOutputStream output)
global::Google.OrTools.Util.OptionalBoolean UseLightRelocatePair
Operator which moves a pair of pickup and delivery nodes after another pair.
global::Google.OrTools.Util.OptionalBoolean UseLinKernighan
Lin-Kernighan operator.
global::Google.Protobuf pb
global::Google.OrTools.Util.OptionalBoolean UseInactiveLns
Operator which relaxes all inactive nodes and one sub-chain of six consecutive arcs.
void MergeFrom(pb::CodedInputStream input)
using System
Definition: Program.cs:14
override bool Equals(object other)
global::Google.OrTools.Util.OptionalBoolean UseLocalCheapestInsertionCloseNodesLns
Same as above, but insertion positions for nodes are determined by the LocalCheapestInsertion heurist...
override int GetHashCode()
void MergeFrom(RoutingModelParameters other)
global::Google.OrTools.Util.OptionalBoolean UseLocalCheapestInsertionPathLns
Same as above but using LocalCheapestInsertion as a heuristic.
global::Google.Protobuf.Reflection pbr
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 UseMakeActive
— Operators on inactive nodes — Operator which inserts an inactive node into a path.
void MergeFrom(pb::CodedInputStream input)
LocalSearchNeighborhoodOperators Clone()
global::Google.OrTools.Util.OptionalBoolean UseMakeInactive
Operator which makes path nodes inactive.
global::Google.OrTools.Util.OptionalBoolean UseCrossExchange
Not implemented yet.
global::Google.OrTools.Util.OptionalBoolean UseCross
Operator which cross exchanges the starting chains of 2 paths, including exchanging the whole paths.
Local search metaheuristics used to guide the search.
bool ReduceVehicleCostModel
Advanced settings.
global::Google.OrTools.Util.OptionalBoolean UseExtendedSwapActive
Operator which makes an inactive node active and an active one inactive.
RoutingModelParameters(RoutingModelParameters other)
First solution strategies, used as starting point of local search.
global::Google.OrTools.Util.OptionalBoolean UseExchangePair
Operator which exchanges the positions of two pair of nodes.
void WriteTo(pb::CodedOutputStream output)
int CalculateSize()
override int GetHashCode()
bool Equals(LocalSearchNeighborhoodOperators other)
int ImprovementRateSolutionsDistance
Parameter that specifies the distance between improvements taken into consideration for calculating t...
global::Google.OrTools.Util.OptionalBoolean UseExchange
Operator which exchanges the positions of two nodes.
Local search neighborhood operators used to build a solutions neighborhood.
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::System.Collections.Generic scg
double ImprovementRateCoefficient
Parameter that regulates exchange rate between objective improvement and number of neighbors spent.
override int GetHashCode()
global::Google.OrTools.Util.OptionalBoolean UseGlobalCheapestInsertionPathLns
— LNS-like large neighborhood search operators using heuristics — Operator which makes all nodes on a...
override string ToString()
LocalSearchNeighborhoodOperators(LocalSearchNeighborhoodOperators other)
RoutingSearchParameters Clone()
RoutingModelParameters()
global::Google.OrTools.Util.OptionalBoolean UseLocalCheapestInsertionExpensiveChainLns
Same as above but using LocalCheapestInsertion as a heuristic for insertion.
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 UsePathLns
— Large neighborhood search operators — Operator which relaxes two sub-chains of three consecutive ar...
ImprovementSearchLimitParameters()
void MergeFrom(LocalSearchNeighborhoodOperators other)
Holder for reflection information generated from ortools/constraint_solver/routing_parameters....
Container for nested types declared in the RoutingSearchParameters message type.
static pbr::FileDescriptor Descriptor
File descriptor for ortools/constraint_solver/routing_parameters.proto
int CalculateSize()
override string ToString()
RoutingSearchParameters()
override int GetHashCode()
void MergeFrom(pb::CodedInputStream input)
RoutingModelParameters Clone()
Container for nested types declared in the FirstSolutionStrategy message type.
bool Equals(RoutingModelParameters other)
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 UseFullPathLns
Operator which relaxes one entire path and all unactive nodes.
void WriteTo(pb::CodedOutputStream output)
override bool Equals(object other)
global::Google.OrTools.Util.OptionalBoolean UseRelocate
— Inter-route operators — Operator which moves a single node to another position.
FirstSolutionStrategy()
override bool Equals(object other)
void WriteTo(pb::CodedOutputStream output)
global::Google.OrTools.Util.OptionalBoolean UseRelocateNeighbors
Relocate neighborhood which moves chains of neighbors.
override string ToString()
global::Google.OrTools.ConstraintSolver.ConstraintSolverParameters SolverParameters
Parameters to use in the underlying constraint solver.
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.Collections pbc
Parameters defining the search used to solve vehicle routing problems.
override int GetHashCode()