// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: ortools/constraint_solver/routing_parameters.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3012000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3012002 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/inlined_string_field.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include <google/protobuf/duration.pb.h>
#include "ortools/constraint_solver/routing_enums.pb.h"
#include "ortools/constraint_solver/solver_parameters.pb.h"
#include "ortools/util/optional_boolean.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[3]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto;
namespace operations_research {
class RoutingModelParameters;
class RoutingModelParametersDefaultTypeInternal;
extern RoutingModelParametersDefaultTypeInternal _RoutingModelParameters_default_instance_;
class RoutingSearchParameters;
class RoutingSearchParametersDefaultTypeInternal;
extern RoutingSearchParametersDefaultTypeInternal _RoutingSearchParameters_default_instance_;
class RoutingSearchParameters_LocalSearchNeighborhoodOperators;
class RoutingSearchParameters_LocalSearchNeighborhoodOperatorsDefaultTypeInternal;
extern RoutingSearchParameters_LocalSearchNeighborhoodOperatorsDefaultTypeInternal _RoutingSearchParameters_LocalSearchNeighborhoodOperators_default_instance_;
}  // namespace operations_research
PROTOBUF_NAMESPACE_OPEN
template<> ::operations_research::RoutingModelParameters* Arena::CreateMaybeMessage<::operations_research::RoutingModelParameters>(Arena*);
template<> ::operations_research::RoutingSearchParameters* Arena::CreateMaybeMessage<::operations_research::RoutingSearchParameters>(Arena*);
template<> ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* Arena::CreateMaybeMessage<::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace operations_research {

enum RoutingSearchParameters_SchedulingSolver : int {
  RoutingSearchParameters_SchedulingSolver_UNSET = 0,
  RoutingSearchParameters_SchedulingSolver_GLOP = 1,
  RoutingSearchParameters_SchedulingSolver_CP_SAT = 2,
  RoutingSearchParameters_SchedulingSolver_RoutingSearchParameters_SchedulingSolver_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  RoutingSearchParameters_SchedulingSolver_RoutingSearchParameters_SchedulingSolver_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool RoutingSearchParameters_SchedulingSolver_IsValid(int value);
constexpr RoutingSearchParameters_SchedulingSolver RoutingSearchParameters_SchedulingSolver_SchedulingSolver_MIN = RoutingSearchParameters_SchedulingSolver_UNSET;
constexpr RoutingSearchParameters_SchedulingSolver RoutingSearchParameters_SchedulingSolver_SchedulingSolver_MAX = RoutingSearchParameters_SchedulingSolver_CP_SAT;
constexpr int RoutingSearchParameters_SchedulingSolver_SchedulingSolver_ARRAYSIZE = RoutingSearchParameters_SchedulingSolver_SchedulingSolver_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoutingSearchParameters_SchedulingSolver_descriptor();
template<typename T>
inline const std::string& RoutingSearchParameters_SchedulingSolver_Name(T enum_t_value) {
  static_assert(::std::is_same<T, RoutingSearchParameters_SchedulingSolver>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function RoutingSearchParameters_SchedulingSolver_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    RoutingSearchParameters_SchedulingSolver_descriptor(), enum_t_value);
}
inline bool RoutingSearchParameters_SchedulingSolver_Parse(
    const std::string& name, RoutingSearchParameters_SchedulingSolver* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<RoutingSearchParameters_SchedulingSolver>(
    RoutingSearchParameters_SchedulingSolver_descriptor(), name, value);
}
// ===================================================================

class RoutingSearchParameters_LocalSearchNeighborhoodOperators PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators) */ {
 public:
  inline RoutingSearchParameters_LocalSearchNeighborhoodOperators() : RoutingSearchParameters_LocalSearchNeighborhoodOperators(nullptr) {};
  virtual ~RoutingSearchParameters_LocalSearchNeighborhoodOperators();

  RoutingSearchParameters_LocalSearchNeighborhoodOperators(const RoutingSearchParameters_LocalSearchNeighborhoodOperators& from);
  RoutingSearchParameters_LocalSearchNeighborhoodOperators(RoutingSearchParameters_LocalSearchNeighborhoodOperators&& from) noexcept
    : RoutingSearchParameters_LocalSearchNeighborhoodOperators() {
    *this = ::std::move(from);
  }

  inline RoutingSearchParameters_LocalSearchNeighborhoodOperators& operator=(const RoutingSearchParameters_LocalSearchNeighborhoodOperators& from) {
    CopyFrom(from);
    return *this;
  }
  inline RoutingSearchParameters_LocalSearchNeighborhoodOperators& operator=(RoutingSearchParameters_LocalSearchNeighborhoodOperators&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RoutingSearchParameters_LocalSearchNeighborhoodOperators& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RoutingSearchParameters_LocalSearchNeighborhoodOperators* internal_default_instance() {
    return reinterpret_cast<const RoutingSearchParameters_LocalSearchNeighborhoodOperators*>(
               &_RoutingSearchParameters_LocalSearchNeighborhoodOperators_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(RoutingSearchParameters_LocalSearchNeighborhoodOperators& a, RoutingSearchParameters_LocalSearchNeighborhoodOperators& b) {
    a.Swap(&b);
  }
  inline void Swap(RoutingSearchParameters_LocalSearchNeighborhoodOperators* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RoutingSearchParameters_LocalSearchNeighborhoodOperators* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RoutingSearchParameters_LocalSearchNeighborhoodOperators* New() const final {
    return CreateMaybeMessage<RoutingSearchParameters_LocalSearchNeighborhoodOperators>(nullptr);
  }

  RoutingSearchParameters_LocalSearchNeighborhoodOperators* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RoutingSearchParameters_LocalSearchNeighborhoodOperators>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RoutingSearchParameters_LocalSearchNeighborhoodOperators& from);
  void MergeFrom(const RoutingSearchParameters_LocalSearchNeighborhoodOperators& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RoutingSearchParameters_LocalSearchNeighborhoodOperators* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators";
  }
  protected:
  explicit RoutingSearchParameters_LocalSearchNeighborhoodOperators(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto);
    return ::descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kUseRelocateFieldNumber = 1,
    kUseRelocatePairFieldNumber = 2,
    kUseRelocateNeighborsFieldNumber = 3,
    kUseExchangeFieldNumber = 4,
    kUseCrossFieldNumber = 5,
    kUseCrossExchangeFieldNumber = 6,
    kUseTwoOptFieldNumber = 7,
    kUseOrOptFieldNumber = 8,
    kUseLinKernighanFieldNumber = 9,
    kUseTspOptFieldNumber = 10,
    kUseMakeActiveFieldNumber = 11,
    kUseMakeInactiveFieldNumber = 12,
    kUseMakeChainInactiveFieldNumber = 13,
    kUseSwapActiveFieldNumber = 14,
    kUseExtendedSwapActiveFieldNumber = 15,
    kUsePathLnsFieldNumber = 16,
    kUseFullPathLnsFieldNumber = 17,
    kUseTspLnsFieldNumber = 18,
    kUseInactiveLnsFieldNumber = 19,
    kUseNodePairSwapActiveFieldNumber = 20,
    kUseRelocateAndMakeActiveFieldNumber = 21,
    kUseExchangePairFieldNumber = 22,
    kUseRelocateExpensiveChainFieldNumber = 23,
    kUseLightRelocatePairFieldNumber = 24,
    kUseRelocateSubtripFieldNumber = 25,
    kUseExchangeSubtripFieldNumber = 26,
    kUseGlobalCheapestInsertionPathLnsFieldNumber = 27,
    kUseLocalCheapestInsertionPathLnsFieldNumber = 28,
    kUseGlobalCheapestInsertionExpensiveChainLnsFieldNumber = 29,
    kUseLocalCheapestInsertionExpensiveChainLnsFieldNumber = 30,
  };
  // .operations_research.OptionalBoolean use_relocate = 1;
  void clear_use_relocate();
  ::operations_research::OptionalBoolean use_relocate() const;
  void set_use_relocate(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_relocate() const;
  void _internal_set_use_relocate(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_relocate_pair = 2;
  void clear_use_relocate_pair();
  ::operations_research::OptionalBoolean use_relocate_pair() const;
  void set_use_relocate_pair(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_relocate_pair() const;
  void _internal_set_use_relocate_pair(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
  void clear_use_relocate_neighbors();
  ::operations_research::OptionalBoolean use_relocate_neighbors() const;
  void set_use_relocate_neighbors(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_relocate_neighbors() const;
  void _internal_set_use_relocate_neighbors(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_exchange = 4;
  void clear_use_exchange();
  ::operations_research::OptionalBoolean use_exchange() const;
  void set_use_exchange(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_exchange() const;
  void _internal_set_use_exchange(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_cross = 5;
  void clear_use_cross();
  ::operations_research::OptionalBoolean use_cross() const;
  void set_use_cross(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_cross() const;
  void _internal_set_use_cross(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_cross_exchange = 6;
  void clear_use_cross_exchange();
  ::operations_research::OptionalBoolean use_cross_exchange() const;
  void set_use_cross_exchange(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_cross_exchange() const;
  void _internal_set_use_cross_exchange(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_two_opt = 7;
  void clear_use_two_opt();
  ::operations_research::OptionalBoolean use_two_opt() const;
  void set_use_two_opt(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_two_opt() const;
  void _internal_set_use_two_opt(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_or_opt = 8;
  void clear_use_or_opt();
  ::operations_research::OptionalBoolean use_or_opt() const;
  void set_use_or_opt(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_or_opt() const;
  void _internal_set_use_or_opt(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_lin_kernighan = 9;
  void clear_use_lin_kernighan();
  ::operations_research::OptionalBoolean use_lin_kernighan() const;
  void set_use_lin_kernighan(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_lin_kernighan() const;
  void _internal_set_use_lin_kernighan(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_tsp_opt = 10;
  void clear_use_tsp_opt();
  ::operations_research::OptionalBoolean use_tsp_opt() const;
  void set_use_tsp_opt(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_tsp_opt() const;
  void _internal_set_use_tsp_opt(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_make_active = 11;
  void clear_use_make_active();
  ::operations_research::OptionalBoolean use_make_active() const;
  void set_use_make_active(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_make_active() const;
  void _internal_set_use_make_active(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_make_inactive = 12;
  void clear_use_make_inactive();
  ::operations_research::OptionalBoolean use_make_inactive() const;
  void set_use_make_inactive(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_make_inactive() const;
  void _internal_set_use_make_inactive(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
  void clear_use_make_chain_inactive();
  ::operations_research::OptionalBoolean use_make_chain_inactive() const;
  void set_use_make_chain_inactive(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_make_chain_inactive() const;
  void _internal_set_use_make_chain_inactive(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_swap_active = 14;
  void clear_use_swap_active();
  ::operations_research::OptionalBoolean use_swap_active() const;
  void set_use_swap_active(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_swap_active() const;
  void _internal_set_use_swap_active(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_extended_swap_active = 15;
  void clear_use_extended_swap_active();
  ::operations_research::OptionalBoolean use_extended_swap_active() const;
  void set_use_extended_swap_active(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_extended_swap_active() const;
  void _internal_set_use_extended_swap_active(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_path_lns = 16;
  void clear_use_path_lns();
  ::operations_research::OptionalBoolean use_path_lns() const;
  void set_use_path_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_path_lns() const;
  void _internal_set_use_path_lns(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_full_path_lns = 17;
  void clear_use_full_path_lns();
  ::operations_research::OptionalBoolean use_full_path_lns() const;
  void set_use_full_path_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_full_path_lns() const;
  void _internal_set_use_full_path_lns(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_tsp_lns = 18;
  void clear_use_tsp_lns();
  ::operations_research::OptionalBoolean use_tsp_lns() const;
  void set_use_tsp_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_tsp_lns() const;
  void _internal_set_use_tsp_lns(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_inactive_lns = 19;
  void clear_use_inactive_lns();
  ::operations_research::OptionalBoolean use_inactive_lns() const;
  void set_use_inactive_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_inactive_lns() const;
  void _internal_set_use_inactive_lns(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
  void clear_use_node_pair_swap_active();
  ::operations_research::OptionalBoolean use_node_pair_swap_active() const;
  void set_use_node_pair_swap_active(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_node_pair_swap_active() const;
  void _internal_set_use_node_pair_swap_active(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
  void clear_use_relocate_and_make_active();
  ::operations_research::OptionalBoolean use_relocate_and_make_active() const;
  void set_use_relocate_and_make_active(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_relocate_and_make_active() const;
  void _internal_set_use_relocate_and_make_active(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_exchange_pair = 22;
  void clear_use_exchange_pair();
  ::operations_research::OptionalBoolean use_exchange_pair() const;
  void set_use_exchange_pair(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_exchange_pair() const;
  void _internal_set_use_exchange_pair(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
  void clear_use_relocate_expensive_chain();
  ::operations_research::OptionalBoolean use_relocate_expensive_chain() const;
  void set_use_relocate_expensive_chain(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_relocate_expensive_chain() const;
  void _internal_set_use_relocate_expensive_chain(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
  void clear_use_light_relocate_pair();
  ::operations_research::OptionalBoolean use_light_relocate_pair() const;
  void set_use_light_relocate_pair(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_light_relocate_pair() const;
  void _internal_set_use_light_relocate_pair(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
  void clear_use_relocate_subtrip();
  ::operations_research::OptionalBoolean use_relocate_subtrip() const;
  void set_use_relocate_subtrip(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_relocate_subtrip() const;
  void _internal_set_use_relocate_subtrip(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
  void clear_use_exchange_subtrip();
  ::operations_research::OptionalBoolean use_exchange_subtrip() const;
  void set_use_exchange_subtrip(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_exchange_subtrip() const;
  void _internal_set_use_exchange_subtrip(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
  void clear_use_global_cheapest_insertion_path_lns();
  ::operations_research::OptionalBoolean use_global_cheapest_insertion_path_lns() const;
  void set_use_global_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_global_cheapest_insertion_path_lns() const;
  void _internal_set_use_global_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
  void clear_use_local_cheapest_insertion_path_lns();
  ::operations_research::OptionalBoolean use_local_cheapest_insertion_path_lns() const;
  void set_use_local_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_local_cheapest_insertion_path_lns() const;
  void _internal_set_use_local_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
  void clear_use_global_cheapest_insertion_expensive_chain_lns();
  ::operations_research::OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns() const;
  void set_use_global_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_global_cheapest_insertion_expensive_chain_lns() const;
  void _internal_set_use_global_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
  void clear_use_local_cheapest_insertion_expensive_chain_lns();
  ::operations_research::OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns() const;
  void set_use_local_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_local_cheapest_insertion_expensive_chain_lns() const;
  void _internal_set_use_local_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value);
  public:

  // @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int use_relocate_;
  int use_relocate_pair_;
  int use_relocate_neighbors_;
  int use_exchange_;
  int use_cross_;
  int use_cross_exchange_;
  int use_two_opt_;
  int use_or_opt_;
  int use_lin_kernighan_;
  int use_tsp_opt_;
  int use_make_active_;
  int use_make_inactive_;
  int use_make_chain_inactive_;
  int use_swap_active_;
  int use_extended_swap_active_;
  int use_path_lns_;
  int use_full_path_lns_;
  int use_tsp_lns_;
  int use_inactive_lns_;
  int use_node_pair_swap_active_;
  int use_relocate_and_make_active_;
  int use_exchange_pair_;
  int use_relocate_expensive_chain_;
  int use_light_relocate_pair_;
  int use_relocate_subtrip_;
  int use_exchange_subtrip_;
  int use_global_cheapest_insertion_path_lns_;
  int use_local_cheapest_insertion_path_lns_;
  int use_global_cheapest_insertion_expensive_chain_lns_;
  int use_local_cheapest_insertion_expensive_chain_lns_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto;
};
// -------------------------------------------------------------------

class RoutingSearchParameters PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.RoutingSearchParameters) */ {
 public:
  inline RoutingSearchParameters() : RoutingSearchParameters(nullptr) {};
  virtual ~RoutingSearchParameters();

  RoutingSearchParameters(const RoutingSearchParameters& from);
  RoutingSearchParameters(RoutingSearchParameters&& from) noexcept
    : RoutingSearchParameters() {
    *this = ::std::move(from);
  }

  inline RoutingSearchParameters& operator=(const RoutingSearchParameters& from) {
    CopyFrom(from);
    return *this;
  }
  inline RoutingSearchParameters& operator=(RoutingSearchParameters&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RoutingSearchParameters& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RoutingSearchParameters* internal_default_instance() {
    return reinterpret_cast<const RoutingSearchParameters*>(
               &_RoutingSearchParameters_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(RoutingSearchParameters& a, RoutingSearchParameters& b) {
    a.Swap(&b);
  }
  inline void Swap(RoutingSearchParameters* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RoutingSearchParameters* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RoutingSearchParameters* New() const final {
    return CreateMaybeMessage<RoutingSearchParameters>(nullptr);
  }

  RoutingSearchParameters* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RoutingSearchParameters>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RoutingSearchParameters& from);
  void MergeFrom(const RoutingSearchParameters& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RoutingSearchParameters* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.RoutingSearchParameters";
  }
  protected:
  explicit RoutingSearchParameters(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto);
    return ::descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  typedef RoutingSearchParameters_LocalSearchNeighborhoodOperators LocalSearchNeighborhoodOperators;

  typedef RoutingSearchParameters_SchedulingSolver SchedulingSolver;
  static constexpr SchedulingSolver UNSET =
    RoutingSearchParameters_SchedulingSolver_UNSET;
  static constexpr SchedulingSolver GLOP =
    RoutingSearchParameters_SchedulingSolver_GLOP;
  static constexpr SchedulingSolver CP_SAT =
    RoutingSearchParameters_SchedulingSolver_CP_SAT;
  static inline bool SchedulingSolver_IsValid(int value) {
    return RoutingSearchParameters_SchedulingSolver_IsValid(value);
  }
  static constexpr SchedulingSolver SchedulingSolver_MIN =
    RoutingSearchParameters_SchedulingSolver_SchedulingSolver_MIN;
  static constexpr SchedulingSolver SchedulingSolver_MAX =
    RoutingSearchParameters_SchedulingSolver_SchedulingSolver_MAX;
  static constexpr int SchedulingSolver_ARRAYSIZE =
    RoutingSearchParameters_SchedulingSolver_SchedulingSolver_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  SchedulingSolver_descriptor() {
    return RoutingSearchParameters_SchedulingSolver_descriptor();
  }
  template<typename T>
  static inline const std::string& SchedulingSolver_Name(T enum_t_value) {
    static_assert(::std::is_same<T, SchedulingSolver>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function SchedulingSolver_Name.");
    return RoutingSearchParameters_SchedulingSolver_Name(enum_t_value);
  }
  static inline bool SchedulingSolver_Parse(const std::string& name,
      SchedulingSolver* value) {
    return RoutingSearchParameters_SchedulingSolver_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kLocalSearchOperatorsFieldNumber = 3,
    kTimeLimitFieldNumber = 9,
    kLnsTimeLimitFieldNumber = 10,
    kFirstSolutionStrategyFieldNumber = 1,
    kLocalSearchMetaheuristicFieldNumber = 4,
    kGuidedLocalSearchLambdaCoefficientFieldNumber = 5,
    kOptimizationStepFieldNumber = 7,
    kSolutionLimitFieldNumber = 8,
    kUseDepthFirstSearchFieldNumber = 6,
    kUseFullPropagationFieldNumber = 11,
    kLogSearchFieldNumber = 13,
    kUseUnfilteredFirstSolutionStrategyFieldNumber = 2,
    kSavingsAddReverseArcsFieldNumber = 15,
    kSavingsParallelRoutesFieldNumber = 19,
    kChristofidesUseMinimumMatchingFieldNumber = 30,
    kSavingsNeighborsRatioFieldNumber = 14,
    kCheapestInsertionFarthestSeedsRatioFieldNumber = 16,
    kSavingsArcCoefficientFieldNumber = 18,
    kNumberOfSolutionsToCollectFieldNumber = 17,
    kRelocateExpensiveChainNumArcsToConsiderFieldNumber = 20,
    kCheapestInsertionFirstSolutionNeighborsRatioFieldNumber = 21,
    kLogCostScalingFactorFieldNumber = 22,
    kSavingsMaxMemoryUsageBytesFieldNumber = 23,
    kUseCpSatFieldNumber = 27,
    kUseCpFieldNumber = 28,
    kLogCostOffsetFieldNumber = 29,
    kCheapestInsertionLsOperatorNeighborsRatioFieldNumber = 31,
    kMixedIntegerSchedulingSolverFieldNumber = 34,
    kHeuristicExpensiveChainLnsNumArcsToConsiderFieldNumber = 32,
    kContinuousSchedulingSolverFieldNumber = 33,
  };
  // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
  bool has_local_search_operators() const;
  private:
  bool _internal_has_local_search_operators() const;
  public:
  void clear_local_search_operators();
  const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators& local_search_operators() const;
  ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* release_local_search_operators();
  ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* mutable_local_search_operators();
  void set_allocated_local_search_operators(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* local_search_operators);
  private:
  const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators& _internal_local_search_operators() const;
  ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* _internal_mutable_local_search_operators();
  public:
  void unsafe_arena_set_allocated_local_search_operators(
      ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* local_search_operators);
  ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* unsafe_arena_release_local_search_operators();

  // .google.protobuf.Duration time_limit = 9;
  bool has_time_limit() const;
  private:
  bool _internal_has_time_limit() const;
  public:
  void clear_time_limit();
  const PROTOBUF_NAMESPACE_ID::Duration& time_limit() const;
  PROTOBUF_NAMESPACE_ID::Duration* release_time_limit();
  PROTOBUF_NAMESPACE_ID::Duration* mutable_time_limit();
  void set_allocated_time_limit(PROTOBUF_NAMESPACE_ID::Duration* time_limit);
  private:
  const PROTOBUF_NAMESPACE_ID::Duration& _internal_time_limit() const;
  PROTOBUF_NAMESPACE_ID::Duration* _internal_mutable_time_limit();
  public:
  void unsafe_arena_set_allocated_time_limit(
      PROTOBUF_NAMESPACE_ID::Duration* time_limit);
  PROTOBUF_NAMESPACE_ID::Duration* unsafe_arena_release_time_limit();

  // .google.protobuf.Duration lns_time_limit = 10;
  bool has_lns_time_limit() const;
  private:
  bool _internal_has_lns_time_limit() const;
  public:
  void clear_lns_time_limit();
  const PROTOBUF_NAMESPACE_ID::Duration& lns_time_limit() const;
  PROTOBUF_NAMESPACE_ID::Duration* release_lns_time_limit();
  PROTOBUF_NAMESPACE_ID::Duration* mutable_lns_time_limit();
  void set_allocated_lns_time_limit(PROTOBUF_NAMESPACE_ID::Duration* lns_time_limit);
  private:
  const PROTOBUF_NAMESPACE_ID::Duration& _internal_lns_time_limit() const;
  PROTOBUF_NAMESPACE_ID::Duration* _internal_mutable_lns_time_limit();
  public:
  void unsafe_arena_set_allocated_lns_time_limit(
      PROTOBUF_NAMESPACE_ID::Duration* lns_time_limit);
  PROTOBUF_NAMESPACE_ID::Duration* unsafe_arena_release_lns_time_limit();

  // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
  void clear_first_solution_strategy();
  ::operations_research::FirstSolutionStrategy_Value first_solution_strategy() const;
  void set_first_solution_strategy(::operations_research::FirstSolutionStrategy_Value value);
  private:
  ::operations_research::FirstSolutionStrategy_Value _internal_first_solution_strategy() const;
  void _internal_set_first_solution_strategy(::operations_research::FirstSolutionStrategy_Value value);
  public:

  // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
  void clear_local_search_metaheuristic();
  ::operations_research::LocalSearchMetaheuristic_Value local_search_metaheuristic() const;
  void set_local_search_metaheuristic(::operations_research::LocalSearchMetaheuristic_Value value);
  private:
  ::operations_research::LocalSearchMetaheuristic_Value _internal_local_search_metaheuristic() const;
  void _internal_set_local_search_metaheuristic(::operations_research::LocalSearchMetaheuristic_Value value);
  public:

  // double guided_local_search_lambda_coefficient = 5;
  void clear_guided_local_search_lambda_coefficient();
  double guided_local_search_lambda_coefficient() const;
  void set_guided_local_search_lambda_coefficient(double value);
  private:
  double _internal_guided_local_search_lambda_coefficient() const;
  void _internal_set_guided_local_search_lambda_coefficient(double value);
  public:

  // double optimization_step = 7;
  void clear_optimization_step();
  double optimization_step() const;
  void set_optimization_step(double value);
  private:
  double _internal_optimization_step() const;
  void _internal_set_optimization_step(double value);
  public:

  // int64 solution_limit = 8;
  void clear_solution_limit();
  ::PROTOBUF_NAMESPACE_ID::int64 solution_limit() const;
  void set_solution_limit(::PROTOBUF_NAMESPACE_ID::int64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int64 _internal_solution_limit() const;
  void _internal_set_solution_limit(::PROTOBUF_NAMESPACE_ID::int64 value);
  public:

  // bool use_depth_first_search = 6;
  void clear_use_depth_first_search();
  bool use_depth_first_search() const;
  void set_use_depth_first_search(bool value);
  private:
  bool _internal_use_depth_first_search() const;
  void _internal_set_use_depth_first_search(bool value);
  public:

  // bool use_full_propagation = 11;
  void clear_use_full_propagation();
  bool use_full_propagation() const;
  void set_use_full_propagation(bool value);
  private:
  bool _internal_use_full_propagation() const;
  void _internal_set_use_full_propagation(bool value);
  public:

  // bool log_search = 13;
  void clear_log_search();
  bool log_search() const;
  void set_log_search(bool value);
  private:
  bool _internal_log_search() const;
  void _internal_set_log_search(bool value);
  public:

  // bool use_unfiltered_first_solution_strategy = 2;
  void clear_use_unfiltered_first_solution_strategy();
  bool use_unfiltered_first_solution_strategy() const;
  void set_use_unfiltered_first_solution_strategy(bool value);
  private:
  bool _internal_use_unfiltered_first_solution_strategy() const;
  void _internal_set_use_unfiltered_first_solution_strategy(bool value);
  public:

  // bool savings_add_reverse_arcs = 15;
  void clear_savings_add_reverse_arcs();
  bool savings_add_reverse_arcs() const;
  void set_savings_add_reverse_arcs(bool value);
  private:
  bool _internal_savings_add_reverse_arcs() const;
  void _internal_set_savings_add_reverse_arcs(bool value);
  public:

  // bool savings_parallel_routes = 19;
  void clear_savings_parallel_routes();
  bool savings_parallel_routes() const;
  void set_savings_parallel_routes(bool value);
  private:
  bool _internal_savings_parallel_routes() const;
  void _internal_set_savings_parallel_routes(bool value);
  public:

  // bool christofides_use_minimum_matching = 30;
  void clear_christofides_use_minimum_matching();
  bool christofides_use_minimum_matching() const;
  void set_christofides_use_minimum_matching(bool value);
  private:
  bool _internal_christofides_use_minimum_matching() const;
  void _internal_set_christofides_use_minimum_matching(bool value);
  public:

  // double savings_neighbors_ratio = 14;
  void clear_savings_neighbors_ratio();
  double savings_neighbors_ratio() const;
  void set_savings_neighbors_ratio(double value);
  private:
  double _internal_savings_neighbors_ratio() const;
  void _internal_set_savings_neighbors_ratio(double value);
  public:

  // double cheapest_insertion_farthest_seeds_ratio = 16;
  void clear_cheapest_insertion_farthest_seeds_ratio();
  double cheapest_insertion_farthest_seeds_ratio() const;
  void set_cheapest_insertion_farthest_seeds_ratio(double value);
  private:
  double _internal_cheapest_insertion_farthest_seeds_ratio() const;
  void _internal_set_cheapest_insertion_farthest_seeds_ratio(double value);
  public:

  // double savings_arc_coefficient = 18;
  void clear_savings_arc_coefficient();
  double savings_arc_coefficient() const;
  void set_savings_arc_coefficient(double value);
  private:
  double _internal_savings_arc_coefficient() const;
  void _internal_set_savings_arc_coefficient(double value);
  public:

  // int32 number_of_solutions_to_collect = 17;
  void clear_number_of_solutions_to_collect();
  ::PROTOBUF_NAMESPACE_ID::int32 number_of_solutions_to_collect() const;
  void set_number_of_solutions_to_collect(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_number_of_solutions_to_collect() const;
  void _internal_set_number_of_solutions_to_collect(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
  void clear_relocate_expensive_chain_num_arcs_to_consider();
  ::PROTOBUF_NAMESPACE_ID::int32 relocate_expensive_chain_num_arcs_to_consider() const;
  void set_relocate_expensive_chain_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_relocate_expensive_chain_num_arcs_to_consider() const;
  void _internal_set_relocate_expensive_chain_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // double cheapest_insertion_first_solution_neighbors_ratio = 21;
  void clear_cheapest_insertion_first_solution_neighbors_ratio();
  double cheapest_insertion_first_solution_neighbors_ratio() const;
  void set_cheapest_insertion_first_solution_neighbors_ratio(double value);
  private:
  double _internal_cheapest_insertion_first_solution_neighbors_ratio() const;
  void _internal_set_cheapest_insertion_first_solution_neighbors_ratio(double value);
  public:

  // double log_cost_scaling_factor = 22;
  void clear_log_cost_scaling_factor();
  double log_cost_scaling_factor() const;
  void set_log_cost_scaling_factor(double value);
  private:
  double _internal_log_cost_scaling_factor() const;
  void _internal_set_log_cost_scaling_factor(double value);
  public:

  // double savings_max_memory_usage_bytes = 23;
  void clear_savings_max_memory_usage_bytes();
  double savings_max_memory_usage_bytes() const;
  void set_savings_max_memory_usage_bytes(double value);
  private:
  double _internal_savings_max_memory_usage_bytes() const;
  void _internal_set_savings_max_memory_usage_bytes(double value);
  public:

  // .operations_research.OptionalBoolean use_cp_sat = 27;
  void clear_use_cp_sat();
  ::operations_research::OptionalBoolean use_cp_sat() const;
  void set_use_cp_sat(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_cp_sat() const;
  void _internal_set_use_cp_sat(::operations_research::OptionalBoolean value);
  public:

  // .operations_research.OptionalBoolean use_cp = 28;
  void clear_use_cp();
  ::operations_research::OptionalBoolean use_cp() const;
  void set_use_cp(::operations_research::OptionalBoolean value);
  private:
  ::operations_research::OptionalBoolean _internal_use_cp() const;
  void _internal_set_use_cp(::operations_research::OptionalBoolean value);
  public:

  // double log_cost_offset = 29;
  void clear_log_cost_offset();
  double log_cost_offset() const;
  void set_log_cost_offset(double value);
  private:
  double _internal_log_cost_offset() const;
  void _internal_set_log_cost_offset(double value);
  public:

  // double cheapest_insertion_ls_operator_neighbors_ratio = 31;
  void clear_cheapest_insertion_ls_operator_neighbors_ratio();
  double cheapest_insertion_ls_operator_neighbors_ratio() const;
  void set_cheapest_insertion_ls_operator_neighbors_ratio(double value);
  private:
  double _internal_cheapest_insertion_ls_operator_neighbors_ratio() const;
  void _internal_set_cheapest_insertion_ls_operator_neighbors_ratio(double value);
  public:

  // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
  void clear_mixed_integer_scheduling_solver();
  ::operations_research::RoutingSearchParameters_SchedulingSolver mixed_integer_scheduling_solver() const;
  void set_mixed_integer_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value);
  private:
  ::operations_research::RoutingSearchParameters_SchedulingSolver _internal_mixed_integer_scheduling_solver() const;
  void _internal_set_mixed_integer_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value);
  public:

  // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
  void clear_heuristic_expensive_chain_lns_num_arcs_to_consider();
  ::PROTOBUF_NAMESPACE_ID::int32 heuristic_expensive_chain_lns_num_arcs_to_consider() const;
  void set_heuristic_expensive_chain_lns_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_heuristic_expensive_chain_lns_num_arcs_to_consider() const;
  void _internal_set_heuristic_expensive_chain_lns_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
  void clear_continuous_scheduling_solver();
  ::operations_research::RoutingSearchParameters_SchedulingSolver continuous_scheduling_solver() const;
  void set_continuous_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value);
  private:
  ::operations_research::RoutingSearchParameters_SchedulingSolver _internal_continuous_scheduling_solver() const;
  void _internal_set_continuous_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value);
  public:

  // @@protoc_insertion_point(class_scope:operations_research.RoutingSearchParameters)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* local_search_operators_;
  PROTOBUF_NAMESPACE_ID::Duration* time_limit_;
  PROTOBUF_NAMESPACE_ID::Duration* lns_time_limit_;
  int first_solution_strategy_;
  int local_search_metaheuristic_;
  double guided_local_search_lambda_coefficient_;
  double optimization_step_;
  ::PROTOBUF_NAMESPACE_ID::int64 solution_limit_;
  bool use_depth_first_search_;
  bool use_full_propagation_;
  bool log_search_;
  bool use_unfiltered_first_solution_strategy_;
  bool savings_add_reverse_arcs_;
  bool savings_parallel_routes_;
  bool christofides_use_minimum_matching_;
  double savings_neighbors_ratio_;
  double cheapest_insertion_farthest_seeds_ratio_;
  double savings_arc_coefficient_;
  ::PROTOBUF_NAMESPACE_ID::int32 number_of_solutions_to_collect_;
  ::PROTOBUF_NAMESPACE_ID::int32 relocate_expensive_chain_num_arcs_to_consider_;
  double cheapest_insertion_first_solution_neighbors_ratio_;
  double log_cost_scaling_factor_;
  double savings_max_memory_usage_bytes_;
  int use_cp_sat_;
  int use_cp_;
  double log_cost_offset_;
  double cheapest_insertion_ls_operator_neighbors_ratio_;
  int mixed_integer_scheduling_solver_;
  ::PROTOBUF_NAMESPACE_ID::int32 heuristic_expensive_chain_lns_num_arcs_to_consider_;
  int continuous_scheduling_solver_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto;
};
// -------------------------------------------------------------------

class RoutingModelParameters PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.RoutingModelParameters) */ {
 public:
  inline RoutingModelParameters() : RoutingModelParameters(nullptr) {};
  virtual ~RoutingModelParameters();

  RoutingModelParameters(const RoutingModelParameters& from);
  RoutingModelParameters(RoutingModelParameters&& from) noexcept
    : RoutingModelParameters() {
    *this = ::std::move(from);
  }

  inline RoutingModelParameters& operator=(const RoutingModelParameters& from) {
    CopyFrom(from);
    return *this;
  }
  inline RoutingModelParameters& operator=(RoutingModelParameters&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RoutingModelParameters& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RoutingModelParameters* internal_default_instance() {
    return reinterpret_cast<const RoutingModelParameters*>(
               &_RoutingModelParameters_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(RoutingModelParameters& a, RoutingModelParameters& b) {
    a.Swap(&b);
  }
  inline void Swap(RoutingModelParameters* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RoutingModelParameters* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RoutingModelParameters* New() const final {
    return CreateMaybeMessage<RoutingModelParameters>(nullptr);
  }

  RoutingModelParameters* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RoutingModelParameters>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RoutingModelParameters& from);
  void MergeFrom(const RoutingModelParameters& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RoutingModelParameters* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.RoutingModelParameters";
  }
  protected:
  explicit RoutingModelParameters(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto);
    return ::descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kSolverParametersFieldNumber = 1,
    kReduceVehicleCostModelFieldNumber = 2,
    kMaxCallbackCacheSizeFieldNumber = 3,
  };
  // .operations_research.ConstraintSolverParameters solver_parameters = 1;
  bool has_solver_parameters() const;
  private:
  bool _internal_has_solver_parameters() const;
  public:
  void clear_solver_parameters();
  const ::operations_research::ConstraintSolverParameters& solver_parameters() const;
  ::operations_research::ConstraintSolverParameters* release_solver_parameters();
  ::operations_research::ConstraintSolverParameters* mutable_solver_parameters();
  void set_allocated_solver_parameters(::operations_research::ConstraintSolverParameters* solver_parameters);
  private:
  const ::operations_research::ConstraintSolverParameters& _internal_solver_parameters() const;
  ::operations_research::ConstraintSolverParameters* _internal_mutable_solver_parameters();
  public:
  void unsafe_arena_set_allocated_solver_parameters(
      ::operations_research::ConstraintSolverParameters* solver_parameters);
  ::operations_research::ConstraintSolverParameters* unsafe_arena_release_solver_parameters();

  // bool reduce_vehicle_cost_model = 2;
  void clear_reduce_vehicle_cost_model();
  bool reduce_vehicle_cost_model() const;
  void set_reduce_vehicle_cost_model(bool value);
  private:
  bool _internal_reduce_vehicle_cost_model() const;
  void _internal_set_reduce_vehicle_cost_model(bool value);
  public:

  // int32 max_callback_cache_size = 3;
  void clear_max_callback_cache_size();
  ::PROTOBUF_NAMESPACE_ID::int32 max_callback_cache_size() const;
  void set_max_callback_cache_size(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_max_callback_cache_size() const;
  void _internal_set_max_callback_cache_size(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:operations_research.RoutingModelParameters)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::operations_research::ConstraintSolverParameters* solver_parameters_;
  bool reduce_vehicle_cost_model_;
  ::PROTOBUF_NAMESPACE_ID::int32 max_callback_cache_size_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto;
};
// ===================================================================


// ===================================================================

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// RoutingSearchParameters_LocalSearchNeighborhoodOperators

// .operations_research.OptionalBoolean use_relocate = 1;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_relocate() {
  use_relocate_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_relocate() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_relocate_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_relocate() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate)
  return _internal_use_relocate();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_relocate(::operations_research::OptionalBoolean value) {
  
  use_relocate_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_relocate(::operations_research::OptionalBoolean value) {
  _internal_set_use_relocate(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate)
}

// .operations_research.OptionalBoolean use_relocate_pair = 2;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_relocate_pair() {
  use_relocate_pair_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_relocate_pair() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_relocate_pair_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_relocate_pair() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_pair)
  return _internal_use_relocate_pair();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_relocate_pair(::operations_research::OptionalBoolean value) {
  
  use_relocate_pair_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_relocate_pair(::operations_research::OptionalBoolean value) {
  _internal_set_use_relocate_pair(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_pair)
}

// .operations_research.OptionalBoolean use_light_relocate_pair = 24;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_light_relocate_pair() {
  use_light_relocate_pair_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_light_relocate_pair() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_light_relocate_pair_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_light_relocate_pair() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_light_relocate_pair)
  return _internal_use_light_relocate_pair();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_light_relocate_pair(::operations_research::OptionalBoolean value) {
  
  use_light_relocate_pair_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_light_relocate_pair(::operations_research::OptionalBoolean value) {
  _internal_set_use_light_relocate_pair(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_light_relocate_pair)
}

// .operations_research.OptionalBoolean use_relocate_neighbors = 3;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_relocate_neighbors() {
  use_relocate_neighbors_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_relocate_neighbors() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_relocate_neighbors_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_relocate_neighbors() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_neighbors)
  return _internal_use_relocate_neighbors();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_relocate_neighbors(::operations_research::OptionalBoolean value) {
  
  use_relocate_neighbors_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_relocate_neighbors(::operations_research::OptionalBoolean value) {
  _internal_set_use_relocate_neighbors(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_neighbors)
}

// .operations_research.OptionalBoolean use_relocate_subtrip = 25;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_relocate_subtrip() {
  use_relocate_subtrip_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_relocate_subtrip() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_relocate_subtrip_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_relocate_subtrip() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_subtrip)
  return _internal_use_relocate_subtrip();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_relocate_subtrip(::operations_research::OptionalBoolean value) {
  
  use_relocate_subtrip_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_relocate_subtrip(::operations_research::OptionalBoolean value) {
  _internal_set_use_relocate_subtrip(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_subtrip)
}

// .operations_research.OptionalBoolean use_exchange = 4;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_exchange() {
  use_exchange_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_exchange() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_exchange_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_exchange() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_exchange)
  return _internal_use_exchange();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_exchange(::operations_research::OptionalBoolean value) {
  
  use_exchange_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_exchange(::operations_research::OptionalBoolean value) {
  _internal_set_use_exchange(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_exchange)
}

// .operations_research.OptionalBoolean use_exchange_pair = 22;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_exchange_pair() {
  use_exchange_pair_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_exchange_pair() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_exchange_pair_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_exchange_pair() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_exchange_pair)
  return _internal_use_exchange_pair();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_exchange_pair(::operations_research::OptionalBoolean value) {
  
  use_exchange_pair_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_exchange_pair(::operations_research::OptionalBoolean value) {
  _internal_set_use_exchange_pair(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_exchange_pair)
}

// .operations_research.OptionalBoolean use_exchange_subtrip = 26;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_exchange_subtrip() {
  use_exchange_subtrip_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_exchange_subtrip() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_exchange_subtrip_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_exchange_subtrip() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_exchange_subtrip)
  return _internal_use_exchange_subtrip();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_exchange_subtrip(::operations_research::OptionalBoolean value) {
  
  use_exchange_subtrip_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_exchange_subtrip(::operations_research::OptionalBoolean value) {
  _internal_set_use_exchange_subtrip(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_exchange_subtrip)
}

// .operations_research.OptionalBoolean use_cross = 5;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_cross() {
  use_cross_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_cross() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_cross_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_cross() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_cross)
  return _internal_use_cross();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_cross(::operations_research::OptionalBoolean value) {
  
  use_cross_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_cross(::operations_research::OptionalBoolean value) {
  _internal_set_use_cross(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_cross)
}

// .operations_research.OptionalBoolean use_cross_exchange = 6;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_cross_exchange() {
  use_cross_exchange_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_cross_exchange() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_cross_exchange_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_cross_exchange() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_cross_exchange)
  return _internal_use_cross_exchange();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_cross_exchange(::operations_research::OptionalBoolean value) {
  
  use_cross_exchange_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_cross_exchange(::operations_research::OptionalBoolean value) {
  _internal_set_use_cross_exchange(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_cross_exchange)
}

// .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_relocate_expensive_chain() {
  use_relocate_expensive_chain_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_relocate_expensive_chain() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_relocate_expensive_chain_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_relocate_expensive_chain() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_expensive_chain)
  return _internal_use_relocate_expensive_chain();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_relocate_expensive_chain(::operations_research::OptionalBoolean value) {
  
  use_relocate_expensive_chain_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_relocate_expensive_chain(::operations_research::OptionalBoolean value) {
  _internal_set_use_relocate_expensive_chain(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_expensive_chain)
}

// .operations_research.OptionalBoolean use_two_opt = 7;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_two_opt() {
  use_two_opt_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_two_opt() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_two_opt_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_two_opt() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_two_opt)
  return _internal_use_two_opt();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_two_opt(::operations_research::OptionalBoolean value) {
  
  use_two_opt_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_two_opt(::operations_research::OptionalBoolean value) {
  _internal_set_use_two_opt(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_two_opt)
}

// .operations_research.OptionalBoolean use_or_opt = 8;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_or_opt() {
  use_or_opt_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_or_opt() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_or_opt_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_or_opt() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_or_opt)
  return _internal_use_or_opt();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_or_opt(::operations_research::OptionalBoolean value) {
  
  use_or_opt_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_or_opt(::operations_research::OptionalBoolean value) {
  _internal_set_use_or_opt(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_or_opt)
}

// .operations_research.OptionalBoolean use_lin_kernighan = 9;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_lin_kernighan() {
  use_lin_kernighan_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_lin_kernighan() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_lin_kernighan_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_lin_kernighan() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_lin_kernighan)
  return _internal_use_lin_kernighan();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_lin_kernighan(::operations_research::OptionalBoolean value) {
  
  use_lin_kernighan_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_lin_kernighan(::operations_research::OptionalBoolean value) {
  _internal_set_use_lin_kernighan(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_lin_kernighan)
}

// .operations_research.OptionalBoolean use_tsp_opt = 10;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_tsp_opt() {
  use_tsp_opt_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_tsp_opt() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_tsp_opt_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_tsp_opt() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_tsp_opt)
  return _internal_use_tsp_opt();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_tsp_opt(::operations_research::OptionalBoolean value) {
  
  use_tsp_opt_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_tsp_opt(::operations_research::OptionalBoolean value) {
  _internal_set_use_tsp_opt(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_tsp_opt)
}

// .operations_research.OptionalBoolean use_make_active = 11;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_make_active() {
  use_make_active_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_make_active() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_make_active_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_make_active() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_make_active)
  return _internal_use_make_active();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_make_active(::operations_research::OptionalBoolean value) {
  
  use_make_active_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_make_active(::operations_research::OptionalBoolean value) {
  _internal_set_use_make_active(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_make_active)
}

// .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_relocate_and_make_active() {
  use_relocate_and_make_active_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_relocate_and_make_active() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_relocate_and_make_active_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_relocate_and_make_active() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_and_make_active)
  return _internal_use_relocate_and_make_active();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_relocate_and_make_active(::operations_research::OptionalBoolean value) {
  
  use_relocate_and_make_active_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_relocate_and_make_active(::operations_research::OptionalBoolean value) {
  _internal_set_use_relocate_and_make_active(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_relocate_and_make_active)
}

// .operations_research.OptionalBoolean use_make_inactive = 12;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_make_inactive() {
  use_make_inactive_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_make_inactive() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_make_inactive_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_make_inactive() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_make_inactive)
  return _internal_use_make_inactive();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_make_inactive(::operations_research::OptionalBoolean value) {
  
  use_make_inactive_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_make_inactive(::operations_research::OptionalBoolean value) {
  _internal_set_use_make_inactive(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_make_inactive)
}

// .operations_research.OptionalBoolean use_make_chain_inactive = 13;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_make_chain_inactive() {
  use_make_chain_inactive_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_make_chain_inactive() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_make_chain_inactive_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_make_chain_inactive() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_make_chain_inactive)
  return _internal_use_make_chain_inactive();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_make_chain_inactive(::operations_research::OptionalBoolean value) {
  
  use_make_chain_inactive_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_make_chain_inactive(::operations_research::OptionalBoolean value) {
  _internal_set_use_make_chain_inactive(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_make_chain_inactive)
}

// .operations_research.OptionalBoolean use_swap_active = 14;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_swap_active() {
  use_swap_active_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_swap_active() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_swap_active_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_swap_active() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_swap_active)
  return _internal_use_swap_active();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_swap_active(::operations_research::OptionalBoolean value) {
  
  use_swap_active_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_swap_active(::operations_research::OptionalBoolean value) {
  _internal_set_use_swap_active(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_swap_active)
}

// .operations_research.OptionalBoolean use_extended_swap_active = 15;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_extended_swap_active() {
  use_extended_swap_active_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_extended_swap_active() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_extended_swap_active_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_extended_swap_active() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_extended_swap_active)
  return _internal_use_extended_swap_active();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_extended_swap_active(::operations_research::OptionalBoolean value) {
  
  use_extended_swap_active_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_extended_swap_active(::operations_research::OptionalBoolean value) {
  _internal_set_use_extended_swap_active(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_extended_swap_active)
}

// .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_node_pair_swap_active() {
  use_node_pair_swap_active_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_node_pair_swap_active() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_node_pair_swap_active_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_node_pair_swap_active() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_node_pair_swap_active)
  return _internal_use_node_pair_swap_active();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_node_pair_swap_active(::operations_research::OptionalBoolean value) {
  
  use_node_pair_swap_active_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_node_pair_swap_active(::operations_research::OptionalBoolean value) {
  _internal_set_use_node_pair_swap_active(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_node_pair_swap_active)
}

// .operations_research.OptionalBoolean use_path_lns = 16;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_path_lns() {
  use_path_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_path_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_path_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_path_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_path_lns)
  return _internal_use_path_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_path_lns(::operations_research::OptionalBoolean value) {
  
  use_path_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_path_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_path_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_path_lns)
}

// .operations_research.OptionalBoolean use_full_path_lns = 17;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_full_path_lns() {
  use_full_path_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_full_path_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_full_path_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_full_path_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_full_path_lns)
  return _internal_use_full_path_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_full_path_lns(::operations_research::OptionalBoolean value) {
  
  use_full_path_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_full_path_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_full_path_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_full_path_lns)
}

// .operations_research.OptionalBoolean use_tsp_lns = 18;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_tsp_lns() {
  use_tsp_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_tsp_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_tsp_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_tsp_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_tsp_lns)
  return _internal_use_tsp_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_tsp_lns(::operations_research::OptionalBoolean value) {
  
  use_tsp_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_tsp_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_tsp_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_tsp_lns)
}

// .operations_research.OptionalBoolean use_inactive_lns = 19;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_inactive_lns() {
  use_inactive_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_inactive_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_inactive_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_inactive_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_inactive_lns)
  return _internal_use_inactive_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_inactive_lns(::operations_research::OptionalBoolean value) {
  
  use_inactive_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_inactive_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_inactive_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_inactive_lns)
}

// .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_global_cheapest_insertion_path_lns() {
  use_global_cheapest_insertion_path_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_global_cheapest_insertion_path_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_global_cheapest_insertion_path_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_global_cheapest_insertion_path_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_global_cheapest_insertion_path_lns)
  return _internal_use_global_cheapest_insertion_path_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_global_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value) {
  
  use_global_cheapest_insertion_path_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_global_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_global_cheapest_insertion_path_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_global_cheapest_insertion_path_lns)
}

// .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_local_cheapest_insertion_path_lns() {
  use_local_cheapest_insertion_path_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_local_cheapest_insertion_path_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_local_cheapest_insertion_path_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_local_cheapest_insertion_path_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_local_cheapest_insertion_path_lns)
  return _internal_use_local_cheapest_insertion_path_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_local_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value) {
  
  use_local_cheapest_insertion_path_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_local_cheapest_insertion_path_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_local_cheapest_insertion_path_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_local_cheapest_insertion_path_lns)
}

// .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_global_cheapest_insertion_expensive_chain_lns() {
  use_global_cheapest_insertion_expensive_chain_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_global_cheapest_insertion_expensive_chain_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_global_cheapest_insertion_expensive_chain_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_global_cheapest_insertion_expensive_chain_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_global_cheapest_insertion_expensive_chain_lns)
  return _internal_use_global_cheapest_insertion_expensive_chain_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_global_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value) {
  
  use_global_cheapest_insertion_expensive_chain_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_global_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_global_cheapest_insertion_expensive_chain_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_global_cheapest_insertion_expensive_chain_lns)
}

// .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::clear_use_local_cheapest_insertion_expensive_chain_lns() {
  use_local_cheapest_insertion_expensive_chain_lns_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_use_local_cheapest_insertion_expensive_chain_lns() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_local_cheapest_insertion_expensive_chain_lns_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_local_cheapest_insertion_expensive_chain_lns() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_local_cheapest_insertion_expensive_chain_lns)
  return _internal_use_local_cheapest_insertion_expensive_chain_lns();
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::_internal_set_use_local_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value) {
  
  use_local_cheapest_insertion_expensive_chain_lns_ = value;
}
inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::set_use_local_cheapest_insertion_expensive_chain_lns(::operations_research::OptionalBoolean value) {
  _internal_set_use_local_cheapest_insertion_expensive_chain_lns(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators.use_local_cheapest_insertion_expensive_chain_lns)
}

// -------------------------------------------------------------------

// RoutingSearchParameters

// .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
inline void RoutingSearchParameters::clear_first_solution_strategy() {
  first_solution_strategy_ = 0;
}
inline ::operations_research::FirstSolutionStrategy_Value RoutingSearchParameters::_internal_first_solution_strategy() const {
  return static_cast< ::operations_research::FirstSolutionStrategy_Value >(first_solution_strategy_);
}
inline ::operations_research::FirstSolutionStrategy_Value RoutingSearchParameters::first_solution_strategy() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.first_solution_strategy)
  return _internal_first_solution_strategy();
}
inline void RoutingSearchParameters::_internal_set_first_solution_strategy(::operations_research::FirstSolutionStrategy_Value value) {
  
  first_solution_strategy_ = value;
}
inline void RoutingSearchParameters::set_first_solution_strategy(::operations_research::FirstSolutionStrategy_Value value) {
  _internal_set_first_solution_strategy(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.first_solution_strategy)
}

// bool use_unfiltered_first_solution_strategy = 2;
inline void RoutingSearchParameters::clear_use_unfiltered_first_solution_strategy() {
  use_unfiltered_first_solution_strategy_ = false;
}
inline bool RoutingSearchParameters::_internal_use_unfiltered_first_solution_strategy() const {
  return use_unfiltered_first_solution_strategy_;
}
inline bool RoutingSearchParameters::use_unfiltered_first_solution_strategy() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.use_unfiltered_first_solution_strategy)
  return _internal_use_unfiltered_first_solution_strategy();
}
inline void RoutingSearchParameters::_internal_set_use_unfiltered_first_solution_strategy(bool value) {
  
  use_unfiltered_first_solution_strategy_ = value;
}
inline void RoutingSearchParameters::set_use_unfiltered_first_solution_strategy(bool value) {
  _internal_set_use_unfiltered_first_solution_strategy(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.use_unfiltered_first_solution_strategy)
}

// double savings_neighbors_ratio = 14;
inline void RoutingSearchParameters::clear_savings_neighbors_ratio() {
  savings_neighbors_ratio_ = 0;
}
inline double RoutingSearchParameters::_internal_savings_neighbors_ratio() const {
  return savings_neighbors_ratio_;
}
inline double RoutingSearchParameters::savings_neighbors_ratio() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.savings_neighbors_ratio)
  return _internal_savings_neighbors_ratio();
}
inline void RoutingSearchParameters::_internal_set_savings_neighbors_ratio(double value) {
  
  savings_neighbors_ratio_ = value;
}
inline void RoutingSearchParameters::set_savings_neighbors_ratio(double value) {
  _internal_set_savings_neighbors_ratio(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.savings_neighbors_ratio)
}

// double savings_max_memory_usage_bytes = 23;
inline void RoutingSearchParameters::clear_savings_max_memory_usage_bytes() {
  savings_max_memory_usage_bytes_ = 0;
}
inline double RoutingSearchParameters::_internal_savings_max_memory_usage_bytes() const {
  return savings_max_memory_usage_bytes_;
}
inline double RoutingSearchParameters::savings_max_memory_usage_bytes() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.savings_max_memory_usage_bytes)
  return _internal_savings_max_memory_usage_bytes();
}
inline void RoutingSearchParameters::_internal_set_savings_max_memory_usage_bytes(double value) {
  
  savings_max_memory_usage_bytes_ = value;
}
inline void RoutingSearchParameters::set_savings_max_memory_usage_bytes(double value) {
  _internal_set_savings_max_memory_usage_bytes(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.savings_max_memory_usage_bytes)
}

// bool savings_add_reverse_arcs = 15;
inline void RoutingSearchParameters::clear_savings_add_reverse_arcs() {
  savings_add_reverse_arcs_ = false;
}
inline bool RoutingSearchParameters::_internal_savings_add_reverse_arcs() const {
  return savings_add_reverse_arcs_;
}
inline bool RoutingSearchParameters::savings_add_reverse_arcs() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.savings_add_reverse_arcs)
  return _internal_savings_add_reverse_arcs();
}
inline void RoutingSearchParameters::_internal_set_savings_add_reverse_arcs(bool value) {
  
  savings_add_reverse_arcs_ = value;
}
inline void RoutingSearchParameters::set_savings_add_reverse_arcs(bool value) {
  _internal_set_savings_add_reverse_arcs(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.savings_add_reverse_arcs)
}

// double savings_arc_coefficient = 18;
inline void RoutingSearchParameters::clear_savings_arc_coefficient() {
  savings_arc_coefficient_ = 0;
}
inline double RoutingSearchParameters::_internal_savings_arc_coefficient() const {
  return savings_arc_coefficient_;
}
inline double RoutingSearchParameters::savings_arc_coefficient() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.savings_arc_coefficient)
  return _internal_savings_arc_coefficient();
}
inline void RoutingSearchParameters::_internal_set_savings_arc_coefficient(double value) {
  
  savings_arc_coefficient_ = value;
}
inline void RoutingSearchParameters::set_savings_arc_coefficient(double value) {
  _internal_set_savings_arc_coefficient(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.savings_arc_coefficient)
}

// bool savings_parallel_routes = 19;
inline void RoutingSearchParameters::clear_savings_parallel_routes() {
  savings_parallel_routes_ = false;
}
inline bool RoutingSearchParameters::_internal_savings_parallel_routes() const {
  return savings_parallel_routes_;
}
inline bool RoutingSearchParameters::savings_parallel_routes() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.savings_parallel_routes)
  return _internal_savings_parallel_routes();
}
inline void RoutingSearchParameters::_internal_set_savings_parallel_routes(bool value) {
  
  savings_parallel_routes_ = value;
}
inline void RoutingSearchParameters::set_savings_parallel_routes(bool value) {
  _internal_set_savings_parallel_routes(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.savings_parallel_routes)
}

// double cheapest_insertion_farthest_seeds_ratio = 16;
inline void RoutingSearchParameters::clear_cheapest_insertion_farthest_seeds_ratio() {
  cheapest_insertion_farthest_seeds_ratio_ = 0;
}
inline double RoutingSearchParameters::_internal_cheapest_insertion_farthest_seeds_ratio() const {
  return cheapest_insertion_farthest_seeds_ratio_;
}
inline double RoutingSearchParameters::cheapest_insertion_farthest_seeds_ratio() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.cheapest_insertion_farthest_seeds_ratio)
  return _internal_cheapest_insertion_farthest_seeds_ratio();
}
inline void RoutingSearchParameters::_internal_set_cheapest_insertion_farthest_seeds_ratio(double value) {
  
  cheapest_insertion_farthest_seeds_ratio_ = value;
}
inline void RoutingSearchParameters::set_cheapest_insertion_farthest_seeds_ratio(double value) {
  _internal_set_cheapest_insertion_farthest_seeds_ratio(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.cheapest_insertion_farthest_seeds_ratio)
}

// double cheapest_insertion_first_solution_neighbors_ratio = 21;
inline void RoutingSearchParameters::clear_cheapest_insertion_first_solution_neighbors_ratio() {
  cheapest_insertion_first_solution_neighbors_ratio_ = 0;
}
inline double RoutingSearchParameters::_internal_cheapest_insertion_first_solution_neighbors_ratio() const {
  return cheapest_insertion_first_solution_neighbors_ratio_;
}
inline double RoutingSearchParameters::cheapest_insertion_first_solution_neighbors_ratio() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.cheapest_insertion_first_solution_neighbors_ratio)
  return _internal_cheapest_insertion_first_solution_neighbors_ratio();
}
inline void RoutingSearchParameters::_internal_set_cheapest_insertion_first_solution_neighbors_ratio(double value) {
  
  cheapest_insertion_first_solution_neighbors_ratio_ = value;
}
inline void RoutingSearchParameters::set_cheapest_insertion_first_solution_neighbors_ratio(double value) {
  _internal_set_cheapest_insertion_first_solution_neighbors_ratio(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.cheapest_insertion_first_solution_neighbors_ratio)
}

// double cheapest_insertion_ls_operator_neighbors_ratio = 31;
inline void RoutingSearchParameters::clear_cheapest_insertion_ls_operator_neighbors_ratio() {
  cheapest_insertion_ls_operator_neighbors_ratio_ = 0;
}
inline double RoutingSearchParameters::_internal_cheapest_insertion_ls_operator_neighbors_ratio() const {
  return cheapest_insertion_ls_operator_neighbors_ratio_;
}
inline double RoutingSearchParameters::cheapest_insertion_ls_operator_neighbors_ratio() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.cheapest_insertion_ls_operator_neighbors_ratio)
  return _internal_cheapest_insertion_ls_operator_neighbors_ratio();
}
inline void RoutingSearchParameters::_internal_set_cheapest_insertion_ls_operator_neighbors_ratio(double value) {
  
  cheapest_insertion_ls_operator_neighbors_ratio_ = value;
}
inline void RoutingSearchParameters::set_cheapest_insertion_ls_operator_neighbors_ratio(double value) {
  _internal_set_cheapest_insertion_ls_operator_neighbors_ratio(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.cheapest_insertion_ls_operator_neighbors_ratio)
}

// bool christofides_use_minimum_matching = 30;
inline void RoutingSearchParameters::clear_christofides_use_minimum_matching() {
  christofides_use_minimum_matching_ = false;
}
inline bool RoutingSearchParameters::_internal_christofides_use_minimum_matching() const {
  return christofides_use_minimum_matching_;
}
inline bool RoutingSearchParameters::christofides_use_minimum_matching() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.christofides_use_minimum_matching)
  return _internal_christofides_use_minimum_matching();
}
inline void RoutingSearchParameters::_internal_set_christofides_use_minimum_matching(bool value) {
  
  christofides_use_minimum_matching_ = value;
}
inline void RoutingSearchParameters::set_christofides_use_minimum_matching(bool value) {
  _internal_set_christofides_use_minimum_matching(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.christofides_use_minimum_matching)
}

// .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
inline bool RoutingSearchParameters::_internal_has_local_search_operators() const {
  return this != internal_default_instance() && local_search_operators_ != nullptr;
}
inline bool RoutingSearchParameters::has_local_search_operators() const {
  return _internal_has_local_search_operators();
}
inline void RoutingSearchParameters::clear_local_search_operators() {
  if (GetArena() == nullptr && local_search_operators_ != nullptr) {
    delete local_search_operators_;
  }
  local_search_operators_ = nullptr;
}
inline const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators& RoutingSearchParameters::_internal_local_search_operators() const {
  const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* p = local_search_operators_;
  return p != nullptr ? *p : *reinterpret_cast<const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators*>(
      &::operations_research::_RoutingSearchParameters_LocalSearchNeighborhoodOperators_default_instance_);
}
inline const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators& RoutingSearchParameters::local_search_operators() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.local_search_operators)
  return _internal_local_search_operators();
}
inline void RoutingSearchParameters::unsafe_arena_set_allocated_local_search_operators(
    ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* local_search_operators) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(local_search_operators_);
  }
  local_search_operators_ = local_search_operators;
  if (local_search_operators) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:operations_research.RoutingSearchParameters.local_search_operators)
}
inline ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* RoutingSearchParameters::release_local_search_operators() {
  auto temp = unsafe_arena_release_local_search_operators();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* RoutingSearchParameters::unsafe_arena_release_local_search_operators() {
  // @@protoc_insertion_point(field_release:operations_research.RoutingSearchParameters.local_search_operators)
  
  ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* temp = local_search_operators_;
  local_search_operators_ = nullptr;
  return temp;
}
inline ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* RoutingSearchParameters::_internal_mutable_local_search_operators() {
  
  if (local_search_operators_ == nullptr) {
    auto* p = CreateMaybeMessage<::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators>(GetArena());
    local_search_operators_ = p;
  }
  return local_search_operators_;
}
inline ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* RoutingSearchParameters::mutable_local_search_operators() {
  // @@protoc_insertion_point(field_mutable:operations_research.RoutingSearchParameters.local_search_operators)
  return _internal_mutable_local_search_operators();
}
inline void RoutingSearchParameters::set_allocated_local_search_operators(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* local_search_operators) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete local_search_operators_;
  }
  if (local_search_operators) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(local_search_operators);
    if (message_arena != submessage_arena) {
      local_search_operators = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, local_search_operators, submessage_arena);
    }
    
  } else {
    
  }
  local_search_operators_ = local_search_operators;
  // @@protoc_insertion_point(field_set_allocated:operations_research.RoutingSearchParameters.local_search_operators)
}

// int32 relocate_expensive_chain_num_arcs_to_consider = 20;
inline void RoutingSearchParameters::clear_relocate_expensive_chain_num_arcs_to_consider() {
  relocate_expensive_chain_num_arcs_to_consider_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingSearchParameters::_internal_relocate_expensive_chain_num_arcs_to_consider() const {
  return relocate_expensive_chain_num_arcs_to_consider_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingSearchParameters::relocate_expensive_chain_num_arcs_to_consider() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.relocate_expensive_chain_num_arcs_to_consider)
  return _internal_relocate_expensive_chain_num_arcs_to_consider();
}
inline void RoutingSearchParameters::_internal_set_relocate_expensive_chain_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  relocate_expensive_chain_num_arcs_to_consider_ = value;
}
inline void RoutingSearchParameters::set_relocate_expensive_chain_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_relocate_expensive_chain_num_arcs_to_consider(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.relocate_expensive_chain_num_arcs_to_consider)
}

// int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
inline void RoutingSearchParameters::clear_heuristic_expensive_chain_lns_num_arcs_to_consider() {
  heuristic_expensive_chain_lns_num_arcs_to_consider_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingSearchParameters::_internal_heuristic_expensive_chain_lns_num_arcs_to_consider() const {
  return heuristic_expensive_chain_lns_num_arcs_to_consider_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingSearchParameters::heuristic_expensive_chain_lns_num_arcs_to_consider() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.heuristic_expensive_chain_lns_num_arcs_to_consider)
  return _internal_heuristic_expensive_chain_lns_num_arcs_to_consider();
}
inline void RoutingSearchParameters::_internal_set_heuristic_expensive_chain_lns_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  heuristic_expensive_chain_lns_num_arcs_to_consider_ = value;
}
inline void RoutingSearchParameters::set_heuristic_expensive_chain_lns_num_arcs_to_consider(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_heuristic_expensive_chain_lns_num_arcs_to_consider(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.heuristic_expensive_chain_lns_num_arcs_to_consider)
}

// .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
inline void RoutingSearchParameters::clear_local_search_metaheuristic() {
  local_search_metaheuristic_ = 0;
}
inline ::operations_research::LocalSearchMetaheuristic_Value RoutingSearchParameters::_internal_local_search_metaheuristic() const {
  return static_cast< ::operations_research::LocalSearchMetaheuristic_Value >(local_search_metaheuristic_);
}
inline ::operations_research::LocalSearchMetaheuristic_Value RoutingSearchParameters::local_search_metaheuristic() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.local_search_metaheuristic)
  return _internal_local_search_metaheuristic();
}
inline void RoutingSearchParameters::_internal_set_local_search_metaheuristic(::operations_research::LocalSearchMetaheuristic_Value value) {
  
  local_search_metaheuristic_ = value;
}
inline void RoutingSearchParameters::set_local_search_metaheuristic(::operations_research::LocalSearchMetaheuristic_Value value) {
  _internal_set_local_search_metaheuristic(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.local_search_metaheuristic)
}

// double guided_local_search_lambda_coefficient = 5;
inline void RoutingSearchParameters::clear_guided_local_search_lambda_coefficient() {
  guided_local_search_lambda_coefficient_ = 0;
}
inline double RoutingSearchParameters::_internal_guided_local_search_lambda_coefficient() const {
  return guided_local_search_lambda_coefficient_;
}
inline double RoutingSearchParameters::guided_local_search_lambda_coefficient() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.guided_local_search_lambda_coefficient)
  return _internal_guided_local_search_lambda_coefficient();
}
inline void RoutingSearchParameters::_internal_set_guided_local_search_lambda_coefficient(double value) {
  
  guided_local_search_lambda_coefficient_ = value;
}
inline void RoutingSearchParameters::set_guided_local_search_lambda_coefficient(double value) {
  _internal_set_guided_local_search_lambda_coefficient(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.guided_local_search_lambda_coefficient)
}

// bool use_depth_first_search = 6;
inline void RoutingSearchParameters::clear_use_depth_first_search() {
  use_depth_first_search_ = false;
}
inline bool RoutingSearchParameters::_internal_use_depth_first_search() const {
  return use_depth_first_search_;
}
inline bool RoutingSearchParameters::use_depth_first_search() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.use_depth_first_search)
  return _internal_use_depth_first_search();
}
inline void RoutingSearchParameters::_internal_set_use_depth_first_search(bool value) {
  
  use_depth_first_search_ = value;
}
inline void RoutingSearchParameters::set_use_depth_first_search(bool value) {
  _internal_set_use_depth_first_search(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.use_depth_first_search)
}

// .operations_research.OptionalBoolean use_cp = 28;
inline void RoutingSearchParameters::clear_use_cp() {
  use_cp_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters::_internal_use_cp() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_cp_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters::use_cp() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.use_cp)
  return _internal_use_cp();
}
inline void RoutingSearchParameters::_internal_set_use_cp(::operations_research::OptionalBoolean value) {
  
  use_cp_ = value;
}
inline void RoutingSearchParameters::set_use_cp(::operations_research::OptionalBoolean value) {
  _internal_set_use_cp(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.use_cp)
}

// .operations_research.OptionalBoolean use_cp_sat = 27;
inline void RoutingSearchParameters::clear_use_cp_sat() {
  use_cp_sat_ = 0;
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters::_internal_use_cp_sat() const {
  return static_cast< ::operations_research::OptionalBoolean >(use_cp_sat_);
}
inline ::operations_research::OptionalBoolean RoutingSearchParameters::use_cp_sat() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.use_cp_sat)
  return _internal_use_cp_sat();
}
inline void RoutingSearchParameters::_internal_set_use_cp_sat(::operations_research::OptionalBoolean value) {
  
  use_cp_sat_ = value;
}
inline void RoutingSearchParameters::set_use_cp_sat(::operations_research::OptionalBoolean value) {
  _internal_set_use_cp_sat(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.use_cp_sat)
}

// .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
inline void RoutingSearchParameters::clear_continuous_scheduling_solver() {
  continuous_scheduling_solver_ = 0;
}
inline ::operations_research::RoutingSearchParameters_SchedulingSolver RoutingSearchParameters::_internal_continuous_scheduling_solver() const {
  return static_cast< ::operations_research::RoutingSearchParameters_SchedulingSolver >(continuous_scheduling_solver_);
}
inline ::operations_research::RoutingSearchParameters_SchedulingSolver RoutingSearchParameters::continuous_scheduling_solver() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.continuous_scheduling_solver)
  return _internal_continuous_scheduling_solver();
}
inline void RoutingSearchParameters::_internal_set_continuous_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value) {
  
  continuous_scheduling_solver_ = value;
}
inline void RoutingSearchParameters::set_continuous_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value) {
  _internal_set_continuous_scheduling_solver(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.continuous_scheduling_solver)
}

// .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
inline void RoutingSearchParameters::clear_mixed_integer_scheduling_solver() {
  mixed_integer_scheduling_solver_ = 0;
}
inline ::operations_research::RoutingSearchParameters_SchedulingSolver RoutingSearchParameters::_internal_mixed_integer_scheduling_solver() const {
  return static_cast< ::operations_research::RoutingSearchParameters_SchedulingSolver >(mixed_integer_scheduling_solver_);
}
inline ::operations_research::RoutingSearchParameters_SchedulingSolver RoutingSearchParameters::mixed_integer_scheduling_solver() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.mixed_integer_scheduling_solver)
  return _internal_mixed_integer_scheduling_solver();
}
inline void RoutingSearchParameters::_internal_set_mixed_integer_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value) {
  
  mixed_integer_scheduling_solver_ = value;
}
inline void RoutingSearchParameters::set_mixed_integer_scheduling_solver(::operations_research::RoutingSearchParameters_SchedulingSolver value) {
  _internal_set_mixed_integer_scheduling_solver(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.mixed_integer_scheduling_solver)
}

// double optimization_step = 7;
inline void RoutingSearchParameters::clear_optimization_step() {
  optimization_step_ = 0;
}
inline double RoutingSearchParameters::_internal_optimization_step() const {
  return optimization_step_;
}
inline double RoutingSearchParameters::optimization_step() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.optimization_step)
  return _internal_optimization_step();
}
inline void RoutingSearchParameters::_internal_set_optimization_step(double value) {
  
  optimization_step_ = value;
}
inline void RoutingSearchParameters::set_optimization_step(double value) {
  _internal_set_optimization_step(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.optimization_step)
}

// int32 number_of_solutions_to_collect = 17;
inline void RoutingSearchParameters::clear_number_of_solutions_to_collect() {
  number_of_solutions_to_collect_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingSearchParameters::_internal_number_of_solutions_to_collect() const {
  return number_of_solutions_to_collect_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingSearchParameters::number_of_solutions_to_collect() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.number_of_solutions_to_collect)
  return _internal_number_of_solutions_to_collect();
}
inline void RoutingSearchParameters::_internal_set_number_of_solutions_to_collect(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  number_of_solutions_to_collect_ = value;
}
inline void RoutingSearchParameters::set_number_of_solutions_to_collect(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_number_of_solutions_to_collect(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.number_of_solutions_to_collect)
}

// int64 solution_limit = 8;
inline void RoutingSearchParameters::clear_solution_limit() {
  solution_limit_ = PROTOBUF_LONGLONG(0);
}
inline ::PROTOBUF_NAMESPACE_ID::int64 RoutingSearchParameters::_internal_solution_limit() const {
  return solution_limit_;
}
inline ::PROTOBUF_NAMESPACE_ID::int64 RoutingSearchParameters::solution_limit() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.solution_limit)
  return _internal_solution_limit();
}
inline void RoutingSearchParameters::_internal_set_solution_limit(::PROTOBUF_NAMESPACE_ID::int64 value) {
  
  solution_limit_ = value;
}
inline void RoutingSearchParameters::set_solution_limit(::PROTOBUF_NAMESPACE_ID::int64 value) {
  _internal_set_solution_limit(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.solution_limit)
}

// .google.protobuf.Duration time_limit = 9;
inline bool RoutingSearchParameters::_internal_has_time_limit() const {
  return this != internal_default_instance() && time_limit_ != nullptr;
}
inline bool RoutingSearchParameters::has_time_limit() const {
  return _internal_has_time_limit();
}
inline const PROTOBUF_NAMESPACE_ID::Duration& RoutingSearchParameters::_internal_time_limit() const {
  const PROTOBUF_NAMESPACE_ID::Duration* p = time_limit_;
  return p != nullptr ? *p : *reinterpret_cast<const PROTOBUF_NAMESPACE_ID::Duration*>(
      &PROTOBUF_NAMESPACE_ID::_Duration_default_instance_);
}
inline const PROTOBUF_NAMESPACE_ID::Duration& RoutingSearchParameters::time_limit() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.time_limit)
  return _internal_time_limit();
}
inline void RoutingSearchParameters::unsafe_arena_set_allocated_time_limit(
    PROTOBUF_NAMESPACE_ID::Duration* time_limit) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(time_limit_);
  }
  time_limit_ = time_limit;
  if (time_limit) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:operations_research.RoutingSearchParameters.time_limit)
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::release_time_limit() {
  auto temp = unsafe_arena_release_time_limit();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::unsafe_arena_release_time_limit() {
  // @@protoc_insertion_point(field_release:operations_research.RoutingSearchParameters.time_limit)
  
  PROTOBUF_NAMESPACE_ID::Duration* temp = time_limit_;
  time_limit_ = nullptr;
  return temp;
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::_internal_mutable_time_limit() {
  
  if (time_limit_ == nullptr) {
    auto* p = CreateMaybeMessage<PROTOBUF_NAMESPACE_ID::Duration>(GetArena());
    time_limit_ = p;
  }
  return time_limit_;
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::mutable_time_limit() {
  // @@protoc_insertion_point(field_mutable:operations_research.RoutingSearchParameters.time_limit)
  return _internal_mutable_time_limit();
}
inline void RoutingSearchParameters::set_allocated_time_limit(PROTOBUF_NAMESPACE_ID::Duration* time_limit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(time_limit_);
  }
  if (time_limit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(time_limit)->GetArena();
    if (message_arena != submessage_arena) {
      time_limit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, time_limit, submessage_arena);
    }
    
  } else {
    
  }
  time_limit_ = time_limit;
  // @@protoc_insertion_point(field_set_allocated:operations_research.RoutingSearchParameters.time_limit)
}

// .google.protobuf.Duration lns_time_limit = 10;
inline bool RoutingSearchParameters::_internal_has_lns_time_limit() const {
  return this != internal_default_instance() && lns_time_limit_ != nullptr;
}
inline bool RoutingSearchParameters::has_lns_time_limit() const {
  return _internal_has_lns_time_limit();
}
inline const PROTOBUF_NAMESPACE_ID::Duration& RoutingSearchParameters::_internal_lns_time_limit() const {
  const PROTOBUF_NAMESPACE_ID::Duration* p = lns_time_limit_;
  return p != nullptr ? *p : *reinterpret_cast<const PROTOBUF_NAMESPACE_ID::Duration*>(
      &PROTOBUF_NAMESPACE_ID::_Duration_default_instance_);
}
inline const PROTOBUF_NAMESPACE_ID::Duration& RoutingSearchParameters::lns_time_limit() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.lns_time_limit)
  return _internal_lns_time_limit();
}
inline void RoutingSearchParameters::unsafe_arena_set_allocated_lns_time_limit(
    PROTOBUF_NAMESPACE_ID::Duration* lns_time_limit) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lns_time_limit_);
  }
  lns_time_limit_ = lns_time_limit;
  if (lns_time_limit) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:operations_research.RoutingSearchParameters.lns_time_limit)
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::release_lns_time_limit() {
  auto temp = unsafe_arena_release_lns_time_limit();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::unsafe_arena_release_lns_time_limit() {
  // @@protoc_insertion_point(field_release:operations_research.RoutingSearchParameters.lns_time_limit)
  
  PROTOBUF_NAMESPACE_ID::Duration* temp = lns_time_limit_;
  lns_time_limit_ = nullptr;
  return temp;
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::_internal_mutable_lns_time_limit() {
  
  if (lns_time_limit_ == nullptr) {
    auto* p = CreateMaybeMessage<PROTOBUF_NAMESPACE_ID::Duration>(GetArena());
    lns_time_limit_ = p;
  }
  return lns_time_limit_;
}
inline PROTOBUF_NAMESPACE_ID::Duration* RoutingSearchParameters::mutable_lns_time_limit() {
  // @@protoc_insertion_point(field_mutable:operations_research.RoutingSearchParameters.lns_time_limit)
  return _internal_mutable_lns_time_limit();
}
inline void RoutingSearchParameters::set_allocated_lns_time_limit(PROTOBUF_NAMESPACE_ID::Duration* lns_time_limit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(lns_time_limit_);
  }
  if (lns_time_limit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lns_time_limit)->GetArena();
    if (message_arena != submessage_arena) {
      lns_time_limit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, lns_time_limit, submessage_arena);
    }
    
  } else {
    
  }
  lns_time_limit_ = lns_time_limit;
  // @@protoc_insertion_point(field_set_allocated:operations_research.RoutingSearchParameters.lns_time_limit)
}

// bool use_full_propagation = 11;
inline void RoutingSearchParameters::clear_use_full_propagation() {
  use_full_propagation_ = false;
}
inline bool RoutingSearchParameters::_internal_use_full_propagation() const {
  return use_full_propagation_;
}
inline bool RoutingSearchParameters::use_full_propagation() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.use_full_propagation)
  return _internal_use_full_propagation();
}
inline void RoutingSearchParameters::_internal_set_use_full_propagation(bool value) {
  
  use_full_propagation_ = value;
}
inline void RoutingSearchParameters::set_use_full_propagation(bool value) {
  _internal_set_use_full_propagation(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.use_full_propagation)
}

// bool log_search = 13;
inline void RoutingSearchParameters::clear_log_search() {
  log_search_ = false;
}
inline bool RoutingSearchParameters::_internal_log_search() const {
  return log_search_;
}
inline bool RoutingSearchParameters::log_search() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.log_search)
  return _internal_log_search();
}
inline void RoutingSearchParameters::_internal_set_log_search(bool value) {
  
  log_search_ = value;
}
inline void RoutingSearchParameters::set_log_search(bool value) {
  _internal_set_log_search(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.log_search)
}

// double log_cost_scaling_factor = 22;
inline void RoutingSearchParameters::clear_log_cost_scaling_factor() {
  log_cost_scaling_factor_ = 0;
}
inline double RoutingSearchParameters::_internal_log_cost_scaling_factor() const {
  return log_cost_scaling_factor_;
}
inline double RoutingSearchParameters::log_cost_scaling_factor() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.log_cost_scaling_factor)
  return _internal_log_cost_scaling_factor();
}
inline void RoutingSearchParameters::_internal_set_log_cost_scaling_factor(double value) {
  
  log_cost_scaling_factor_ = value;
}
inline void RoutingSearchParameters::set_log_cost_scaling_factor(double value) {
  _internal_set_log_cost_scaling_factor(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.log_cost_scaling_factor)
}

// double log_cost_offset = 29;
inline void RoutingSearchParameters::clear_log_cost_offset() {
  log_cost_offset_ = 0;
}
inline double RoutingSearchParameters::_internal_log_cost_offset() const {
  return log_cost_offset_;
}
inline double RoutingSearchParameters::log_cost_offset() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingSearchParameters.log_cost_offset)
  return _internal_log_cost_offset();
}
inline void RoutingSearchParameters::_internal_set_log_cost_offset(double value) {
  
  log_cost_offset_ = value;
}
inline void RoutingSearchParameters::set_log_cost_offset(double value) {
  _internal_set_log_cost_offset(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingSearchParameters.log_cost_offset)
}

// -------------------------------------------------------------------

// RoutingModelParameters

// .operations_research.ConstraintSolverParameters solver_parameters = 1;
inline bool RoutingModelParameters::_internal_has_solver_parameters() const {
  return this != internal_default_instance() && solver_parameters_ != nullptr;
}
inline bool RoutingModelParameters::has_solver_parameters() const {
  return _internal_has_solver_parameters();
}
inline const ::operations_research::ConstraintSolverParameters& RoutingModelParameters::_internal_solver_parameters() const {
  const ::operations_research::ConstraintSolverParameters* p = solver_parameters_;
  return p != nullptr ? *p : *reinterpret_cast<const ::operations_research::ConstraintSolverParameters*>(
      &::operations_research::_ConstraintSolverParameters_default_instance_);
}
inline const ::operations_research::ConstraintSolverParameters& RoutingModelParameters::solver_parameters() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingModelParameters.solver_parameters)
  return _internal_solver_parameters();
}
inline void RoutingModelParameters::unsafe_arena_set_allocated_solver_parameters(
    ::operations_research::ConstraintSolverParameters* solver_parameters) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(solver_parameters_);
  }
  solver_parameters_ = solver_parameters;
  if (solver_parameters) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:operations_research.RoutingModelParameters.solver_parameters)
}
inline ::operations_research::ConstraintSolverParameters* RoutingModelParameters::release_solver_parameters() {
  auto temp = unsafe_arena_release_solver_parameters();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::operations_research::ConstraintSolverParameters* RoutingModelParameters::unsafe_arena_release_solver_parameters() {
  // @@protoc_insertion_point(field_release:operations_research.RoutingModelParameters.solver_parameters)
  
  ::operations_research::ConstraintSolverParameters* temp = solver_parameters_;
  solver_parameters_ = nullptr;
  return temp;
}
inline ::operations_research::ConstraintSolverParameters* RoutingModelParameters::_internal_mutable_solver_parameters() {
  
  if (solver_parameters_ == nullptr) {
    auto* p = CreateMaybeMessage<::operations_research::ConstraintSolverParameters>(GetArena());
    solver_parameters_ = p;
  }
  return solver_parameters_;
}
inline ::operations_research::ConstraintSolverParameters* RoutingModelParameters::mutable_solver_parameters() {
  // @@protoc_insertion_point(field_mutable:operations_research.RoutingModelParameters.solver_parameters)
  return _internal_mutable_solver_parameters();
}
inline void RoutingModelParameters::set_allocated_solver_parameters(::operations_research::ConstraintSolverParameters* solver_parameters) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(solver_parameters_);
  }
  if (solver_parameters) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(solver_parameters)->GetArena();
    if (message_arena != submessage_arena) {
      solver_parameters = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, solver_parameters, submessage_arena);
    }
    
  } else {
    
  }
  solver_parameters_ = solver_parameters;
  // @@protoc_insertion_point(field_set_allocated:operations_research.RoutingModelParameters.solver_parameters)
}

// bool reduce_vehicle_cost_model = 2;
inline void RoutingModelParameters::clear_reduce_vehicle_cost_model() {
  reduce_vehicle_cost_model_ = false;
}
inline bool RoutingModelParameters::_internal_reduce_vehicle_cost_model() const {
  return reduce_vehicle_cost_model_;
}
inline bool RoutingModelParameters::reduce_vehicle_cost_model() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingModelParameters.reduce_vehicle_cost_model)
  return _internal_reduce_vehicle_cost_model();
}
inline void RoutingModelParameters::_internal_set_reduce_vehicle_cost_model(bool value) {
  
  reduce_vehicle_cost_model_ = value;
}
inline void RoutingModelParameters::set_reduce_vehicle_cost_model(bool value) {
  _internal_set_reduce_vehicle_cost_model(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingModelParameters.reduce_vehicle_cost_model)
}

// int32 max_callback_cache_size = 3;
inline void RoutingModelParameters::clear_max_callback_cache_size() {
  max_callback_cache_size_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingModelParameters::_internal_max_callback_cache_size() const {
  return max_callback_cache_size_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RoutingModelParameters::max_callback_cache_size() const {
  // @@protoc_insertion_point(field_get:operations_research.RoutingModelParameters.max_callback_cache_size)
  return _internal_max_callback_cache_size();
}
inline void RoutingModelParameters::_internal_set_max_callback_cache_size(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  max_callback_cache_size_ = value;
}
inline void RoutingModelParameters::set_max_callback_cache_size(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_max_callback_cache_size(value);
  // @@protoc_insertion_point(field_set:operations_research.RoutingModelParameters.max_callback_cache_size)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)

}  // namespace operations_research

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::operations_research::RoutingSearchParameters_SchedulingSolver> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::operations_research::RoutingSearchParameters_SchedulingSolver>() {
  return ::operations_research::RoutingSearchParameters_SchedulingSolver_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
