""" @generated by mypy-protobuf. Do not edit manually! isort:skip_file Protocol buffer used to parametrize the routing library, in particular the search parameters such as first solution heuristics and local search neighborhoods. """ import builtins import collections.abc import google.protobuf.descriptor import google.protobuf.duration_pb2 import google.protobuf.internal.containers import google.protobuf.internal.enum_type_wrapper import google.protobuf.message import ortools.constraint_solver.routing_enums_pb2 import ortools.constraint_solver.routing_heuristic_parameters_pb2 import ortools.constraint_solver.routing_ils_pb2 import ortools.constraint_solver.solver_parameters_pb2 import ortools.sat.sat_parameters_pb2 import ortools.util.optional_boolean_pb2 import sys import typing if sys.version_info >= (3, 10): import typing as typing_extensions else: import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor @typing.final class RoutingSearchParameters(google.protobuf.message.Message): """Parameters defining the search used to solve vehicle routing problems. If a parameter is unset (or, equivalently, set to its default value), then the routing library will pick its preferred value for that parameter automatically: this should be the case for most parameters. To see those "default" parameters, call GetDefaultRoutingSearchParameters(). Next ID: 73 """ DESCRIPTOR: google.protobuf.descriptor.Descriptor class _SchedulingSolver: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType class _SchedulingSolverEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[RoutingSearchParameters._SchedulingSolver.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor SCHEDULING_UNSET: RoutingSearchParameters._SchedulingSolver.ValueType # 0 SCHEDULING_GLOP: RoutingSearchParameters._SchedulingSolver.ValueType # 1 SCHEDULING_CP_SAT: RoutingSearchParameters._SchedulingSolver.ValueType # 2 class SchedulingSolver(_SchedulingSolver, metaclass=_SchedulingSolverEnumTypeWrapper): """Underlying solver to use in dimension scheduling, respectively for continuous and mixed models. """ SCHEDULING_UNSET: RoutingSearchParameters.SchedulingSolver.ValueType # 0 SCHEDULING_GLOP: RoutingSearchParameters.SchedulingSolver.ValueType # 1 SCHEDULING_CP_SAT: RoutingSearchParameters.SchedulingSolver.ValueType # 2 @typing.final class LocalSearchNeighborhoodOperators(google.protobuf.message.Message): """Local search neighborhood operators used to build a solutions neighborhood. Next ID: 41 """ DESCRIPTOR: google.protobuf.descriptor.Descriptor USE_RELOCATE_FIELD_NUMBER: builtins.int USE_RELOCATE_PAIR_FIELD_NUMBER: builtins.int USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER: builtins.int USE_RELOCATE_NEIGHBORS_FIELD_NUMBER: builtins.int USE_RELOCATE_SUBTRIP_FIELD_NUMBER: builtins.int USE_EXCHANGE_FIELD_NUMBER: builtins.int USE_EXCHANGE_PAIR_FIELD_NUMBER: builtins.int USE_EXCHANGE_SUBTRIP_FIELD_NUMBER: builtins.int USE_CROSS_FIELD_NUMBER: builtins.int USE_CROSS_EXCHANGE_FIELD_NUMBER: builtins.int USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER: builtins.int USE_TWO_OPT_FIELD_NUMBER: builtins.int USE_OR_OPT_FIELD_NUMBER: builtins.int USE_LIN_KERNIGHAN_FIELD_NUMBER: builtins.int USE_TSP_OPT_FIELD_NUMBER: builtins.int USE_MAKE_ACTIVE_FIELD_NUMBER: builtins.int USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER: builtins.int USE_EXCHANGE_AND_MAKE_ACTIVE_FIELD_NUMBER: builtins.int USE_EXCHANGE_PATH_START_ENDS_AND_MAKE_ACTIVE_FIELD_NUMBER: builtins.int USE_MAKE_INACTIVE_FIELD_NUMBER: builtins.int USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER: builtins.int USE_SWAP_ACTIVE_FIELD_NUMBER: builtins.int USE_SWAP_ACTIVE_CHAIN_FIELD_NUMBER: builtins.int USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER: builtins.int USE_SHORTEST_PATH_SWAP_ACTIVE_FIELD_NUMBER: builtins.int USE_SHORTEST_PATH_TWO_OPT_FIELD_NUMBER: builtins.int USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER: builtins.int USE_PATH_LNS_FIELD_NUMBER: builtins.int USE_FULL_PATH_LNS_FIELD_NUMBER: builtins.int USE_TSP_LNS_FIELD_NUMBER: builtins.int USE_INACTIVE_LNS_FIELD_NUMBER: builtins.int USE_GLOBAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER: builtins.int USE_LOCAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER: builtins.int USE_RELOCATE_PATH_GLOBAL_CHEAPEST_INSERTION_INSERT_UNPERFORMED_FIELD_NUMBER: builtins.int USE_GLOBAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER: builtins.int USE_LOCAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER: builtins.int USE_GLOBAL_CHEAPEST_INSERTION_CLOSE_NODES_LNS_FIELD_NUMBER: builtins.int USE_LOCAL_CHEAPEST_INSERTION_CLOSE_NODES_LNS_FIELD_NUMBER: builtins.int USE_GLOBAL_CHEAPEST_INSERTION_VISIT_TYPES_LNS_FIELD_NUMBER: builtins.int USE_LOCAL_CHEAPEST_INSERTION_VISIT_TYPES_LNS_FIELD_NUMBER: builtins.int use_relocate: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """--- Inter-route operators --- Operator which moves a single node to another position. Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5 (where (1, 5) are first and last nodes of the path and can therefore not be moved): 1 -> 3 -> [2] -> 4 -> 5 1 -> 3 -> 4 -> [2] -> 5 1 -> 2 -> 4 -> [3] -> 5 1 -> [4] -> 2 -> 3 -> 5 """ use_relocate_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which moves a pair of pickup and delivery nodes to another position where the first node of the pair must be before the second node on the same path. Compared to the light_relocate_pair operator, tries all possible positions of insertion of a pair (not only after another pair). Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are first and last nodes of the path and can therefore not be moved, and (A, B) is a pair of nodes): 1 -> [A] -> 2 -> [B] -> 3 1 -> 2 -> [A] -> [B] -> 3 """ use_light_relocate_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which moves a pair of pickup and delivery nodes after another pair. Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where (1, 2) and (3, 4) are first and last nodes of paths and can therefore not be moved, and (A, B) and (C, D) are pair of nodes): 1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4 1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4 """ use_relocate_neighbors: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Relocate neighborhood which moves chains of neighbors. The operator starts by relocating a node n after a node m, then continues moving nodes which were after n as long as the "cost" added is less than the "cost" of the arc (m, n). If the new chain doesn't respect the domain of next variables, it will try reordering the nodes until it finds a valid path. Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2) are first and last nodes of the path and can therefore not be moved, A must be performed before B, and A, D and E are located at the same place): 1 -> A -> C -> [B] -> D -> E -> 2 1 -> A -> C -> D -> [B] -> E -> 2 1 -> A -> C -> D -> E -> [B] -> 2 1 -> A -> B -> D -> [C] -> E -> 2 1 -> A -> B -> D -> E -> [C] -> 2 1 -> A -> [D] -> [E] -> B -> C -> 2 1 -> A -> B -> [D] -> [E] -> C -> 2 1 -> A -> [E] -> B -> C -> D -> 2 1 -> A -> B -> [E] -> C -> D -> 2 1 -> A -> B -> C -> [E] -> D -> 2 This operator is extremely useful to move chains of nodes which are located at the same place (for instance nodes part of a same stop). """ use_relocate_subtrip: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Relocate neighborhood that moves subpaths all pickup and delivery pairs have both pickup and delivery inside the subpath or both outside the subpath. For instance, for given paths: 0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8 7 -> 9 Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are: 0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8 7 -> 9 0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8 7 -> 9 0 -> 5 -> 6 -> 8 7 -> A -> B -> A' -> B' -> 9 """ use_exchange: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which exchanges the positions of two nodes. Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5 (where (1, 5) are first and last nodes of the path and can therefore not be moved): 1 -> [3] -> [2] -> 4 -> 5 1 -> [4] -> 3 -> [2] -> 5 1 -> 2 -> [4] -> [3] -> 5 """ use_exchange_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which exchanges the positions of two pair of nodes. Pairs correspond to the pickup and delivery pairs defined in the routing model. Possible neighbor for the paths 1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5 (where (1, 3) and (4, 5) are first and last nodes of the paths and can therefore not be moved, and (A, B) and (C,D) are pairs of nodes): 1 -> [C] -> [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5 """ use_exchange_subtrip: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which exchanges subtrips associated to two pairs of nodes, see use_relocate_subtrip for a definition of subtrips. """ use_cross: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which cross exchanges the starting chains of 2 paths, including exchanging the whole paths. First and last nodes are not moved. Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8 (where (1, 5) and (6, 8) are first and last nodes of the paths and can therefore not be moved): 1 -> [7] -> 3 -> 4 -> 5 6 -> [2] -> 8 1 -> [7] -> 4 -> 5 6 -> [2 -> 3] -> 8 1 -> [7] -> 5 6 -> [2 -> 3 -> 4] -> 8 """ use_cross_exchange: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Not implemented yet. TODO(b/68128619): Implement.""" use_relocate_expensive_chain: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which detects the relocate_expensive_chain_num_arcs_to_consider most expensive arcs on a path, and moves the chain resulting from cutting pairs of arcs among these to another position. Possible neighbors for paths 1 -> 2 (empty) and 3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2 most expensive arcs, and the chain resulting from breaking them is B -> C): 1 -> [B -> C] -> 2 3 -> A -> D -> 4 1 -> 2 3 -> [B -> C] -> A -> D -> 4 1 -> 2 3 -> A -> D -> [B -> C] -> 4 """ use_two_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """--- Intra-route operators --- Operator which reverses a subchain of a path. It is called TwoOpt because it breaks two arcs on the path; resulting paths are called two-optimal. Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5 (where (1, 5) are first and last nodes of the path and can therefore not be moved): 1 -> [3 -> 2] -> 4 -> 5 1 -> [4 -> 3 -> 2] -> 5 1 -> 2 -> [4 -> 3] -> 5 """ use_or_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which moves sub-chains of a path of length 1, 2 and 3 to another position in the same path. When the length of the sub-chain is 1, the operator simply moves a node to another position. Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain length of 2 (where (1, 5) are first and last nodes of the path and can therefore not be moved): 1 -> 4 -> [2 -> 3] -> 5 1 -> [3 -> 4] -> 2 -> 5 The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a path). """ use_lin_kernighan: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Lin-Kernighan operator. While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT move followed by a series of 2-OPT moves. Returns a neighbor for which the global gain is positive. """ use_tsp_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Sliding TSP operator. Uses an exact dynamic programming algorithm to solve the TSP corresponding to path sub-chains. For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6). """ use_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """--- Operators on inactive nodes --- Operator which inserts an inactive node into a path. Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive (where 1 and 4 are first and last nodes of the path) are: 1 -> [5] -> 2 -> 3 -> 4 1 -> 2 -> [5] -> 3 -> 4 1 -> 2 -> 3 -> [5] -> 4 """ use_relocate_and_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which relocates a node while making an inactive one active. As of 3/2017, the operator is limited to two kinds of moves: - Relocating a node and replacing it by an inactive node. Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive (where 1,2 and 5,6 are first and last nodes of paths) is: 1 -> 3 -> 5, 2 -> 4 -> 6. - Relocating a node and inserting an inactive node next to it. Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive (where 1,2 and 5,6 are first and last nodes of paths) is: 1 -> 4 -> 3 -> 5, 2 -> 6. """ use_exchange_and_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which exchanges two nodes and inserts an inactive node. Possible neighbors for paths 0 -> 2 -> 4, 1 -> 3 -> 6 and 5 inactive are: 0 -> 3 -> 4, 1 -> 5 -> 2 -> 6 0 -> 3 -> 5 -> 4, 1 -> 2 -> 6 0 -> 5 -> 3 -> 4, 1 -> 2 -> 6 0 -> 3 -> 4, 1 -> 2 -> 5 -> 6 """ use_exchange_path_start_ends_and_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which exchanges the first and last nodes of two paths and makes a node active. Possible neighbors for paths 0 -> 1 -> 2 -> 7, 6 -> 3 -> 4 -> 8 and 5 inactive are: 0 -> 5 -> 3 -> 4 -> 7, 6 -> 1 -> 2 -> 8 0 -> 3 -> 4 -> 7, 6 -> 1 -> 5 -> 2 -> 8 0 -> 3 -> 4 -> 7, 6 -> 1 -> 2 -> 5 -> 8 0 -> 3 -> 5 -> 4 -> 7, 6 -> 1 -> 2 -> 8 0 -> 3 -> 4 -> 5 -> 7, 6 -> 1 -> 2 -> 8 """ use_make_inactive: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which makes path nodes inactive. Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first and last nodes of the path) are: 1 -> 3 -> 4 with 2 inactive 1 -> 2 -> 4 with 3 inactive """ use_make_chain_inactive: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which makes a "chain" of path nodes inactive. Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first and last nodes of the path) are: 1 -> 3 -> 4 with 2 inactive 1 -> 2 -> 4 with 3 inactive 1 -> 4 with 2 and 3 inactive """ use_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which replaces an active node by an inactive one. Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive (where 1 and 4 are first and last nodes of the path) are: 1 -> [5] -> 3 -> 4 with 2 inactive 1 -> 2 -> [5] -> 4 with 3 inactive """ use_swap_active_chain: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which replaces a chain of active nodes by an inactive one. Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive (where 1 and 4 are first and last nodes of the path) are: 1 -> [5] -> 3 -> 4 with 2 inactive 1 -> 2 -> [5] -> 4 with 3 inactive 1 -> [5] -> 4 with 2 and 3 inactive """ use_extended_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which makes an inactive node active and an active one inactive. It is similar to SwapActiveOperator excepts that it tries to insert the inactive node in all possible positions instead of just the position of the node made inactive. Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive (where 1 and 4 are first and last nodes of the path) are: 1 -> [5] -> 3 -> 4 with 2 inactive 1 -> 3 -> [5] -> 4 with 2 inactive 1 -> [5] -> 2 -> 4 with 3 inactive 1 -> 2 -> [5] -> 4 with 3 inactive """ use_shortest_path_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Swaps active nodes from node alternatives in sequence. Considers chains of nodes with alternatives, builds a DAG from the chain, each "layer" of the DAG being composed of the set of alternatives of the node at a given rank in the chain, fully connected to the next layer. A neighbor is built from the shortest path starting from the node before the chain (source), through the DAG to the node following the chain. """ use_shortest_path_two_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Similar to use_two_opt but returns the shortest path on the DAG of node alternatives of the reversed chain (cf. use_shortest_path_swap_active). """ use_node_pair_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which makes an inactive node active and an active pair of nodes inactive OR makes an inactive pair of nodes active and an active node inactive. Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive (where 1 and 4 are first and last nodes of the path and (2,3) is a pair of nodes) are: 1 -> [5] -> 4 with (2,3) inactive Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive (where 1 and 3 are first and last nodes of the path and (4,5) is a pair of nodes) are: 1 -> [4] -> [5] -> 3 with 2 inactive """ use_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """--- Large neighborhood search operators --- Operator which relaxes two sub-chains of three consecutive arcs each. Each sub-chain is defined by a start node and the next three arcs. Those six arcs are relaxed to build a new neighbor. PATH_LNS explores all possible pairs of starting nodes and so defines n^2 neighbors, n being the number of nodes. Note that the two sub-chains can be part of the same path; they even may overlap. """ use_full_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which relaxes one entire path and all inactive nodes.""" use_tsp_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """TSP-base LNS. Randomly merges consecutive nodes until n "meta"-nodes remain and solves the corresponding TSP. This defines an "unlimited" neighborhood which must be stopped by search limits. To force diversification, the operator iteratively forces each node to serve as base of a meta-node. """ use_inactive_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Operator which relaxes all inactive nodes and one sub-chain of six consecutive arcs. That way the path can be improved by inserting inactive nodes or swapping arcs. """ use_global_cheapest_insertion_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """--- LNS-like large neighborhood search operators using heuristics --- Operator which makes all nodes on a route unperformed, and reinserts them using the GlobalCheapestInsertion heuristic. """ use_local_cheapest_insertion_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Same as above but using LocalCheapestInsertion as a heuristic.""" use_relocate_path_global_cheapest_insertion_insert_unperformed: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """The following operator relocates an entire route to an empty path and then tries to insert the unperformed nodes using the global cheapest insertion heuristic. """ use_global_cheapest_insertion_expensive_chain_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider most expensive arcs on a route, makes the nodes in between pairs of these expensive arcs unperformed, and reinserts them using the GlobalCheapestInsertion heuristic. """ use_local_cheapest_insertion_expensive_chain_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Same as above but using LocalCheapestInsertion as a heuristic for insertion. """ use_global_cheapest_insertion_close_nodes_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """The following operator makes a node and its heuristic_close_nodes_lns_num_nodes closest neighbors unperformed along with each of their corresponding performed pickup/delivery pairs, and then reinserts them using the GlobalCheapestInsertion heuristic. """ use_local_cheapest_insertion_close_nodes_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Same as above, but insertion positions for nodes are determined by the LocalCheapestInsertion heuristic. """ use_global_cheapest_insertion_visit_types_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """The following operator removes all nodes of a visit type connected component from their current route and reinserts them to an empty route using the GlobalCheapestInsertion heuristic. """ use_local_cheapest_insertion_visit_types_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """Same as above, but insertion positions for nodes are determined by the LocalCheapestInsertion heuristic. """ def __init__( self, *, use_relocate: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_relocate_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_light_relocate_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_relocate_neighbors: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_relocate_subtrip: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_exchange: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_exchange_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_exchange_subtrip: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_cross: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_cross_exchange: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_relocate_expensive_chain: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_two_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_or_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_lin_kernighan: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_tsp_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_relocate_and_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_exchange_and_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_exchange_path_start_ends_and_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_make_inactive: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_make_chain_inactive: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_swap_active_chain: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_extended_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_shortest_path_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_shortest_path_two_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_node_pair_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_full_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_tsp_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_inactive_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_global_cheapest_insertion_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_local_cheapest_insertion_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_relocate_path_global_cheapest_insertion_insert_unperformed: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_global_cheapest_insertion_expensive_chain_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_local_cheapest_insertion_expensive_chain_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_global_cheapest_insertion_close_nodes_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_local_cheapest_insertion_close_nodes_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_global_cheapest_insertion_visit_types_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_local_cheapest_insertion_visit_types_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., ) -> None: ... _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["use_cross", b"use_cross", "use_cross_exchange", b"use_cross_exchange", "use_exchange", b"use_exchange", "use_exchange_and_make_active", b"use_exchange_and_make_active", "use_exchange_pair", b"use_exchange_pair", "use_exchange_path_start_ends_and_make_active", b"use_exchange_path_start_ends_and_make_active", "use_exchange_subtrip", b"use_exchange_subtrip", "use_extended_swap_active", b"use_extended_swap_active", "use_full_path_lns", b"use_full_path_lns", "use_global_cheapest_insertion_close_nodes_lns", b"use_global_cheapest_insertion_close_nodes_lns", "use_global_cheapest_insertion_expensive_chain_lns", b"use_global_cheapest_insertion_expensive_chain_lns", "use_global_cheapest_insertion_path_lns", b"use_global_cheapest_insertion_path_lns", "use_global_cheapest_insertion_visit_types_lns", b"use_global_cheapest_insertion_visit_types_lns", "use_inactive_lns", b"use_inactive_lns", "use_light_relocate_pair", b"use_light_relocate_pair", "use_lin_kernighan", b"use_lin_kernighan", "use_local_cheapest_insertion_close_nodes_lns", b"use_local_cheapest_insertion_close_nodes_lns", "use_local_cheapest_insertion_expensive_chain_lns", b"use_local_cheapest_insertion_expensive_chain_lns", "use_local_cheapest_insertion_path_lns", b"use_local_cheapest_insertion_path_lns", "use_local_cheapest_insertion_visit_types_lns", b"use_local_cheapest_insertion_visit_types_lns", "use_make_active", b"use_make_active", "use_make_chain_inactive", b"use_make_chain_inactive", "use_make_inactive", b"use_make_inactive", "use_node_pair_swap_active", b"use_node_pair_swap_active", "use_or_opt", b"use_or_opt", "use_path_lns", b"use_path_lns", "use_relocate", b"use_relocate", "use_relocate_and_make_active", b"use_relocate_and_make_active", "use_relocate_expensive_chain", b"use_relocate_expensive_chain", "use_relocate_neighbors", b"use_relocate_neighbors", "use_relocate_pair", b"use_relocate_pair", "use_relocate_path_global_cheapest_insertion_insert_unperformed", b"use_relocate_path_global_cheapest_insertion_insert_unperformed", "use_relocate_subtrip", b"use_relocate_subtrip", "use_shortest_path_swap_active", b"use_shortest_path_swap_active", "use_shortest_path_two_opt", b"use_shortest_path_two_opt", "use_swap_active", b"use_swap_active", "use_swap_active_chain", b"use_swap_active_chain", "use_tsp_lns", b"use_tsp_lns", "use_tsp_opt", b"use_tsp_opt", "use_two_opt", b"use_two_opt"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... @typing.final class ImprovementSearchLimitParameters(google.protobuf.message.Message): """Parameters required for the improvement search limit.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor IMPROVEMENT_RATE_COEFFICIENT_FIELD_NUMBER: builtins.int IMPROVEMENT_RATE_SOLUTIONS_DISTANCE_FIELD_NUMBER: builtins.int improvement_rate_coefficient: builtins.float """Parameter that regulates exchange rate between objective improvement and number of neighbors spent. The smaller the value, the sooner the limit stops the search. Must be positive. """ improvement_rate_solutions_distance: builtins.int """Parameter that specifies the distance between improvements taken into consideration for calculating the improvement rate. Example: For 5 objective improvements = (10, 8, 6, 4, 2), and the solutions_distance parameter of 2, then the improvement_rate will be computed for (10, 6), (8, 4), and (6, 2). """ def __init__( self, *, improvement_rate_coefficient: builtins.float = ..., improvement_rate_solutions_distance: builtins.int = ..., ) -> None: ... _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["improvement_rate_coefficient", b"improvement_rate_coefficient", "improvement_rate_solutions_distance", b"improvement_rate_solutions_distance"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... FIRST_SOLUTION_STRATEGY_FIELD_NUMBER: builtins.int USE_UNFILTERED_FIRST_SOLUTION_STRATEGY_FIELD_NUMBER: builtins.int SAVINGS_PARAMETERS_FIELD_NUMBER: builtins.int GLOBAL_CHEAPEST_INSERTION_FIRST_SOLUTION_PARAMETERS_FIELD_NUMBER: builtins.int GLOBAL_CHEAPEST_INSERTION_LS_OPERATOR_PARAMETERS_FIELD_NUMBER: builtins.int LOCAL_CHEAPEST_INSERTION_PARAMETERS_FIELD_NUMBER: builtins.int LOCAL_CHEAPEST_COST_INSERTION_PARAMETERS_FIELD_NUMBER: builtins.int CHRISTOFIDES_USE_MINIMUM_MATCHING_FIELD_NUMBER: builtins.int FIRST_SOLUTION_OPTIMIZATION_PERIOD_FIELD_NUMBER: builtins.int LOCAL_SEARCH_OPERATORS_FIELD_NUMBER: builtins.int LS_OPERATOR_NEIGHBORS_RATIO_FIELD_NUMBER: builtins.int LS_OPERATOR_MIN_NEIGHBORS_FIELD_NUMBER: builtins.int USE_MULTI_ARMED_BANDIT_CONCATENATE_OPERATORS_FIELD_NUMBER: builtins.int MULTI_ARMED_BANDIT_COMPOUND_OPERATOR_MEMORY_COEFFICIENT_FIELD_NUMBER: builtins.int MULTI_ARMED_BANDIT_COMPOUND_OPERATOR_EXPLORATION_COEFFICIENT_FIELD_NUMBER: builtins.int MAX_SWAP_ACTIVE_CHAIN_SIZE_FIELD_NUMBER: builtins.int RELOCATE_EXPENSIVE_CHAIN_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER: builtins.int HEURISTIC_EXPENSIVE_CHAIN_LNS_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER: builtins.int HEURISTIC_CLOSE_NODES_LNS_NUM_NODES_FIELD_NUMBER: builtins.int LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER: builtins.int LOCAL_SEARCH_METAHEURISTICS_FIELD_NUMBER: builtins.int NUM_MAX_LOCAL_OPTIMA_BEFORE_METAHEURISTIC_SWITCH_FIELD_NUMBER: builtins.int GUIDED_LOCAL_SEARCH_LAMBDA_COEFFICIENT_FIELD_NUMBER: builtins.int GUIDED_LOCAL_SEARCH_RESET_PENALTIES_ON_NEW_BEST_SOLUTION_FIELD_NUMBER: builtins.int GUIDED_LOCAL_SEARCH_PENALIZE_WITH_VEHICLE_CLASSES_FIELD_NUMBER: builtins.int USE_GUIDED_LOCAL_SEARCH_PENALTIES_IN_LOCAL_SEARCH_OPERATORS_FIELD_NUMBER: builtins.int USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER: builtins.int USE_CP_FIELD_NUMBER: builtins.int USE_CP_SAT_FIELD_NUMBER: builtins.int USE_GENERALIZED_CP_SAT_FIELD_NUMBER: builtins.int SAT_PARAMETERS_FIELD_NUMBER: builtins.int REPORT_INTERMEDIATE_CP_SAT_SOLUTIONS_FIELD_NUMBER: builtins.int FALLBACK_TO_CP_SAT_SIZE_THRESHOLD_FIELD_NUMBER: builtins.int CONTINUOUS_SCHEDULING_SOLVER_FIELD_NUMBER: builtins.int MIXED_INTEGER_SCHEDULING_SOLVER_FIELD_NUMBER: builtins.int DISABLE_SCHEDULING_BEWARE_THIS_MAY_DEGRADE_PERFORMANCE_FIELD_NUMBER: builtins.int OPTIMIZATION_STEP_FIELD_NUMBER: builtins.int NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER: builtins.int SOLUTION_LIMIT_FIELD_NUMBER: builtins.int TIME_LIMIT_FIELD_NUMBER: builtins.int LNS_TIME_LIMIT_FIELD_NUMBER: builtins.int SECONDARY_LS_TIME_LIMIT_RATIO_FIELD_NUMBER: builtins.int IMPROVEMENT_LIMIT_PARAMETERS_FIELD_NUMBER: builtins.int USE_FULL_PROPAGATION_FIELD_NUMBER: builtins.int LOG_SEARCH_FIELD_NUMBER: builtins.int LOG_COST_SCALING_FACTOR_FIELD_NUMBER: builtins.int LOG_COST_OFFSET_FIELD_NUMBER: builtins.int LOG_TAG_FIELD_NUMBER: builtins.int USE_ITERATED_LOCAL_SEARCH_FIELD_NUMBER: builtins.int ITERATED_LOCAL_SEARCH_PARAMETERS_FIELD_NUMBER: builtins.int first_solution_strategy: ortools.constraint_solver.routing_enums_pb2.FirstSolutionStrategy.Value.ValueType """First solution strategies, used as starting point of local search.""" use_unfiltered_first_solution_strategy: builtins.bool """--- Advanced first solutions strategy settings --- Don't touch these unless you know what you are doing. Use filtered version of first solution strategy if available. """ christofides_use_minimum_matching: builtins.bool """If true use minimum matching instead of minimal matching in the Christofides algorithm. """ first_solution_optimization_period: builtins.int """If non zero, a period p indicates that every p node insertions or additions to a path, an optimization of the current partial solution will be performed. As of 12/2023: - this requires that a secondary routing model has been passed to the main one, - this is only supported by LOCAL_CHEAPEST_INSERTION and LOCAL_CHEAPEST_COST_INSERTION. """ ls_operator_neighbors_ratio: builtins.float """Neighbors ratio and minimum number of neighbors considered in local search operators (see GlobalCheapestInsertionParameters.neighbors_ratio and GlobalCheapestInsertionParameters.min_neighbors for more information). """ ls_operator_min_neighbors: builtins.int use_multi_armed_bandit_concatenate_operators: builtins.bool """If true, the solver will use multi-armed bandit concatenate operators. It dynamically chooses the next neighbor operator in order to get the best objective improvement. """ multi_armed_bandit_compound_operator_memory_coefficient: builtins.float """Memory coefficient related to the multi-armed bandit compound operator. Sets how much the objective improvement of previous accepted neighbors influence the current average improvement. This parameter should be between 0 and 1. """ multi_armed_bandit_compound_operator_exploration_coefficient: builtins.float """Positive parameter defining the exploration coefficient of the multi-armed bandit compound operator. Sets how often we explore rarely used and unsuccessful in the past operators """ max_swap_active_chain_size: builtins.int """Maximum size of the chain to make inactive in SwapActiveChainOperator.""" relocate_expensive_chain_num_arcs_to_consider: builtins.int """Number of expensive arcs to consider cutting in the RelocateExpensiveChain neighborhood operator (see LocalSearchNeighborhoodOperators.use_relocate_expensive_chain()). This parameter must be greater than 2. NOTE(user): The number of neighbors generated by the operator for relocate_expensive_chain_num_arcs_to_consider = K is around K*(K-1)/2 * number_of_routes * number_of_nodes. """ heuristic_expensive_chain_lns_num_arcs_to_consider: builtins.int """Number of expensive arcs to consider cutting in the FilteredHeuristicExpensiveChainLNSOperator operator. """ heuristic_close_nodes_lns_num_nodes: builtins.int """Number of closest nodes to consider for each node during the destruction phase of the FilteredHeuristicCloseNodesLNSOperator. """ local_search_metaheuristic: ortools.constraint_solver.routing_enums_pb2.LocalSearchMetaheuristic.Value.ValueType """Local search metaheuristics used to guide the search.""" num_max_local_optima_before_metaheuristic_switch: builtins.int guided_local_search_lambda_coefficient: builtins.float """These are advanced settings which should not be modified unless you know what you are doing. Lambda coefficient used to penalize arc costs when GUIDED_LOCAL_SEARCH is used. Must be positive. """ guided_local_search_reset_penalties_on_new_best_solution: builtins.bool """Whether to reset penalties when a new best solution is found. The effect is that a greedy descent is started before the next penalization phase. """ guided_local_search_penalize_with_vehicle_classes: builtins.bool """When an arc leaving a vehicle start or arriving at a vehicle end is penalized, this field controls whether to penalize all other equivalent arcs with starts or ends in the same vehicle class. """ use_guided_local_search_penalties_in_local_search_operators: builtins.bool """Whether to consider arc penalties in cost functions used in local search operators using arc costs. """ use_depth_first_search: builtins.bool """--- Search control --- If true, the solver should use depth-first search rather than local search to solve the problem. """ use_cp: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """If true, use the CP solver to find a solution. Either local or depth-first search will be used depending on the value of use_depth_first_search. Will be run before the CP-SAT solver (cf. use_cp_sat). """ use_cp_sat: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """If true, use the CP-SAT solver to find a solution. If use_cp is also true, the CP-SAT solver will be run after the CP solver if there is time remaining and will use the CP solution as a hint for the CP-SAT search. As of 5/2019, only TSP models can be solved. """ use_generalized_cp_sat: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType """If true, use the CP-SAT solver to find a solution on generalized routing model. If use_cp is also true, the CP-SAT solver will be run after the CP solver if there is time remaining and will use the CP solution as a hint for the CP-SAT search. """ report_intermediate_cp_sat_solutions: builtins.bool """If use_cp_sat or use_generalized_cp_sat is true, will report intermediate solutions found by CP-SAT to solution listeners. """ fallback_to_cp_sat_size_threshold: builtins.int """If model.Size() is less than the threshold and that no solution has been found, attempt a pass with CP-SAT. """ continuous_scheduling_solver: Global___RoutingSearchParameters.SchedulingSolver.ValueType mixed_integer_scheduling_solver: Global___RoutingSearchParameters.SchedulingSolver.ValueType disable_scheduling_beware_this_may_degrade_performance: builtins.bool """Setting this to true completely disables the LP and MIP scheduling in the solver. This overrides the 2 SchedulingSolver options above. """ optimization_step: builtins.float """Minimum step by which the solution must be improved in local search. 0 means "unspecified". If this value is fractional, it will get rounded to the nearest integer. """ number_of_solutions_to_collect: builtins.int """Number of solutions to collect during the search. Corresponds to the best solutions found during the search. 0 means "unspecified". """ solution_limit: builtins.int """-- Search limits -- Limit to the number of solutions generated during the search. 0 means "unspecified". """ secondary_ls_time_limit_ratio: builtins.float """Ratio of the overall time limit spent in a secondary LS phase with only intra-route and insertion operators, meant to "cleanup" the current solution before stopping the search. TODO(user): Since these operators are very fast, add a parameter to cap the max time allocated for this second phase (e.g. Duration max_secondary_ls_time_limit). """ use_full_propagation: builtins.bool """--- Propagation control --- These are advanced settings which should not be modified unless you know what you are doing. Use constraints with full propagation in routing model (instead of 'light' propagation only). Full propagation is only necessary when using depth-first search or for models which require strong propagation to finalize the value of secondary variables. Changing this setting to true will slow down the search in most cases and increase memory consumption in all cases. """ log_search: builtins.bool """--- Miscellaneous --- Some of these are advanced settings which should not be modified unless you know what you are doing. Activates search logging. For each solution found during the search, the following will be displayed: its objective value, the maximum objective value since the beginning of the search, the elapsed time since the beginning of the search, the number of branches explored in the search tree, the number of failures in the search tree, the depth of the search tree, the number of local search neighbors explored, the number of local search neighbors filtered by local search filters, the number of local search neighbors accepted, the total memory used and the percentage of the search done. """ log_cost_scaling_factor: builtins.float """In logs, cost values will be scaled and offset by the given values in the following way: log_cost_scaling_factor * (cost + log_cost_offset) """ log_cost_offset: builtins.float log_tag: builtins.str """In logs, this tag will be appended to each line corresponding to a new solution. Useful to sort out logs when several solves are run in parallel. """ use_iterated_local_search: builtins.bool """Whether the solver should use an Iterated Local Search approach to solve the problem. """ @property def savings_parameters(self) -> ortools.constraint_solver.routing_heuristic_parameters_pb2.SavingsParameters: """Parameters for the Savings heuristic.""" @property def global_cheapest_insertion_first_solution_parameters(self) -> ortools.constraint_solver.routing_heuristic_parameters_pb2.GlobalCheapestInsertionParameters: """Parameters for the global cheapest insertion heuristic when used as first solution heuristic. """ @property def global_cheapest_insertion_ls_operator_parameters(self) -> ortools.constraint_solver.routing_heuristic_parameters_pb2.GlobalCheapestInsertionParameters: """Parameters for the global cheapest insertion heuristic when used in a local search operator (see local_search_operators.use_global_cheapest_insertion_path_lns and local_search_operators.use_global_cheapest_insertion_chain_lns below). """ @property def local_cheapest_insertion_parameters(self) -> ortools.constraint_solver.routing_heuristic_parameters_pb2.LocalCheapestInsertionParameters: """Parameters for the local cheapest insertion heuristic.""" @property def local_cheapest_cost_insertion_parameters(self) -> ortools.constraint_solver.routing_heuristic_parameters_pb2.LocalCheapestInsertionParameters: """Parameters for the local cheapest cost insertion heuristic.""" @property def local_search_operators(self) -> Global___RoutingSearchParameters.LocalSearchNeighborhoodOperators: ... @property def local_search_metaheuristics(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[ortools.constraint_solver.routing_enums_pb2.LocalSearchMetaheuristic.Value.ValueType]: """Local search metaheuristics alternatively used to guide the search. Every num_max_local_optima_before_metaheuristic_switch local minima found by a metaheurisitic, the solver will switch to the next metaheuristic. Cannot be defined if local_search_metaheuristic is different from UNSET or AUTOMATIC. """ @property def sat_parameters(self) -> ortools.sat.sat_parameters_pb2.SatParameters: """If use_cp_sat or use_generalized_cp_sat is true, contains the SAT algorithm parameters which will be used. """ @property def time_limit(self) -> google.protobuf.duration_pb2.Duration: """Limit to the time spent in the search.""" @property def lns_time_limit(self) -> google.protobuf.duration_pb2.Duration: """Limit to the time spent in the completion search for each local search neighbor. """ @property def improvement_limit_parameters(self) -> Global___RoutingSearchParameters.ImprovementSearchLimitParameters: """The improvement search limit is added to the solver if the following parameters are set. """ @property def iterated_local_search_parameters(self) -> ortools.constraint_solver.routing_ils_pb2.IteratedLocalSearchParameters: """Iterated Local Search parameters.""" def __init__( self, *, first_solution_strategy: ortools.constraint_solver.routing_enums_pb2.FirstSolutionStrategy.Value.ValueType = ..., use_unfiltered_first_solution_strategy: builtins.bool = ..., savings_parameters: ortools.constraint_solver.routing_heuristic_parameters_pb2.SavingsParameters | None = ..., global_cheapest_insertion_first_solution_parameters: ortools.constraint_solver.routing_heuristic_parameters_pb2.GlobalCheapestInsertionParameters | None = ..., global_cheapest_insertion_ls_operator_parameters: ortools.constraint_solver.routing_heuristic_parameters_pb2.GlobalCheapestInsertionParameters | None = ..., local_cheapest_insertion_parameters: ortools.constraint_solver.routing_heuristic_parameters_pb2.LocalCheapestInsertionParameters | None = ..., local_cheapest_cost_insertion_parameters: ortools.constraint_solver.routing_heuristic_parameters_pb2.LocalCheapestInsertionParameters | None = ..., christofides_use_minimum_matching: builtins.bool = ..., first_solution_optimization_period: builtins.int = ..., local_search_operators: Global___RoutingSearchParameters.LocalSearchNeighborhoodOperators | None = ..., ls_operator_neighbors_ratio: builtins.float = ..., ls_operator_min_neighbors: builtins.int = ..., use_multi_armed_bandit_concatenate_operators: builtins.bool = ..., multi_armed_bandit_compound_operator_memory_coefficient: builtins.float = ..., multi_armed_bandit_compound_operator_exploration_coefficient: builtins.float = ..., max_swap_active_chain_size: builtins.int = ..., relocate_expensive_chain_num_arcs_to_consider: builtins.int = ..., heuristic_expensive_chain_lns_num_arcs_to_consider: builtins.int = ..., heuristic_close_nodes_lns_num_nodes: builtins.int = ..., local_search_metaheuristic: ortools.constraint_solver.routing_enums_pb2.LocalSearchMetaheuristic.Value.ValueType = ..., local_search_metaheuristics: collections.abc.Iterable[ortools.constraint_solver.routing_enums_pb2.LocalSearchMetaheuristic.Value.ValueType] | None = ..., num_max_local_optima_before_metaheuristic_switch: builtins.int = ..., guided_local_search_lambda_coefficient: builtins.float = ..., guided_local_search_reset_penalties_on_new_best_solution: builtins.bool = ..., guided_local_search_penalize_with_vehicle_classes: builtins.bool = ..., use_guided_local_search_penalties_in_local_search_operators: builtins.bool = ..., use_depth_first_search: builtins.bool = ..., use_cp: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_cp_sat: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., use_generalized_cp_sat: ortools.util.optional_boolean_pb2.OptionalBoolean.ValueType = ..., sat_parameters: ortools.sat.sat_parameters_pb2.SatParameters | None = ..., report_intermediate_cp_sat_solutions: builtins.bool = ..., fallback_to_cp_sat_size_threshold: builtins.int = ..., continuous_scheduling_solver: Global___RoutingSearchParameters.SchedulingSolver.ValueType = ..., mixed_integer_scheduling_solver: Global___RoutingSearchParameters.SchedulingSolver.ValueType = ..., disable_scheduling_beware_this_may_degrade_performance: builtins.bool | None = ..., optimization_step: builtins.float = ..., number_of_solutions_to_collect: builtins.int = ..., solution_limit: builtins.int = ..., time_limit: google.protobuf.duration_pb2.Duration | None = ..., lns_time_limit: google.protobuf.duration_pb2.Duration | None = ..., secondary_ls_time_limit_ratio: builtins.float = ..., improvement_limit_parameters: Global___RoutingSearchParameters.ImprovementSearchLimitParameters | None = ..., use_full_propagation: builtins.bool = ..., log_search: builtins.bool = ..., log_cost_scaling_factor: builtins.float = ..., log_cost_offset: builtins.float = ..., log_tag: builtins.str = ..., use_iterated_local_search: builtins.bool = ..., iterated_local_search_parameters: ortools.constraint_solver.routing_ils_pb2.IteratedLocalSearchParameters | None = ..., ) -> None: ... _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_disable_scheduling_beware_this_may_degrade_performance", b"_disable_scheduling_beware_this_may_degrade_performance", "disable_scheduling_beware_this_may_degrade_performance", b"disable_scheduling_beware_this_may_degrade_performance", "global_cheapest_insertion_first_solution_parameters", b"global_cheapest_insertion_first_solution_parameters", "global_cheapest_insertion_ls_operator_parameters", b"global_cheapest_insertion_ls_operator_parameters", "improvement_limit_parameters", b"improvement_limit_parameters", "iterated_local_search_parameters", b"iterated_local_search_parameters", "lns_time_limit", b"lns_time_limit", "local_cheapest_cost_insertion_parameters", b"local_cheapest_cost_insertion_parameters", "local_cheapest_insertion_parameters", b"local_cheapest_insertion_parameters", "local_search_operators", b"local_search_operators", "sat_parameters", b"sat_parameters", "savings_parameters", b"savings_parameters", "time_limit", b"time_limit"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_disable_scheduling_beware_this_may_degrade_performance", b"_disable_scheduling_beware_this_may_degrade_performance", "christofides_use_minimum_matching", b"christofides_use_minimum_matching", "continuous_scheduling_solver", b"continuous_scheduling_solver", "disable_scheduling_beware_this_may_degrade_performance", b"disable_scheduling_beware_this_may_degrade_performance", "fallback_to_cp_sat_size_threshold", b"fallback_to_cp_sat_size_threshold", "first_solution_optimization_period", b"first_solution_optimization_period", "first_solution_strategy", b"first_solution_strategy", "global_cheapest_insertion_first_solution_parameters", b"global_cheapest_insertion_first_solution_parameters", "global_cheapest_insertion_ls_operator_parameters", b"global_cheapest_insertion_ls_operator_parameters", "guided_local_search_lambda_coefficient", b"guided_local_search_lambda_coefficient", "guided_local_search_penalize_with_vehicle_classes", b"guided_local_search_penalize_with_vehicle_classes", "guided_local_search_reset_penalties_on_new_best_solution", b"guided_local_search_reset_penalties_on_new_best_solution", "heuristic_close_nodes_lns_num_nodes", b"heuristic_close_nodes_lns_num_nodes", "heuristic_expensive_chain_lns_num_arcs_to_consider", b"heuristic_expensive_chain_lns_num_arcs_to_consider", "improvement_limit_parameters", b"improvement_limit_parameters", "iterated_local_search_parameters", b"iterated_local_search_parameters", "lns_time_limit", b"lns_time_limit", "local_cheapest_cost_insertion_parameters", b"local_cheapest_cost_insertion_parameters", "local_cheapest_insertion_parameters", b"local_cheapest_insertion_parameters", "local_search_metaheuristic", b"local_search_metaheuristic", "local_search_metaheuristics", b"local_search_metaheuristics", "local_search_operators", b"local_search_operators", "log_cost_offset", b"log_cost_offset", "log_cost_scaling_factor", b"log_cost_scaling_factor", "log_search", b"log_search", "log_tag", b"log_tag", "ls_operator_min_neighbors", b"ls_operator_min_neighbors", "ls_operator_neighbors_ratio", b"ls_operator_neighbors_ratio", "max_swap_active_chain_size", b"max_swap_active_chain_size", "mixed_integer_scheduling_solver", b"mixed_integer_scheduling_solver", "multi_armed_bandit_compound_operator_exploration_coefficient", b"multi_armed_bandit_compound_operator_exploration_coefficient", "multi_armed_bandit_compound_operator_memory_coefficient", b"multi_armed_bandit_compound_operator_memory_coefficient", "num_max_local_optima_before_metaheuristic_switch", b"num_max_local_optima_before_metaheuristic_switch", "number_of_solutions_to_collect", b"number_of_solutions_to_collect", "optimization_step", b"optimization_step", "relocate_expensive_chain_num_arcs_to_consider", b"relocate_expensive_chain_num_arcs_to_consider", "report_intermediate_cp_sat_solutions", b"report_intermediate_cp_sat_solutions", "sat_parameters", b"sat_parameters", "savings_parameters", b"savings_parameters", "secondary_ls_time_limit_ratio", b"secondary_ls_time_limit_ratio", "solution_limit", b"solution_limit", "time_limit", b"time_limit", "use_cp", b"use_cp", "use_cp_sat", b"use_cp_sat", "use_depth_first_search", b"use_depth_first_search", "use_full_propagation", b"use_full_propagation", "use_generalized_cp_sat", b"use_generalized_cp_sat", "use_guided_local_search_penalties_in_local_search_operators", b"use_guided_local_search_penalties_in_local_search_operators", "use_iterated_local_search", b"use_iterated_local_search", "use_multi_armed_bandit_concatenate_operators", b"use_multi_armed_bandit_concatenate_operators", "use_unfiltered_first_solution_strategy", b"use_unfiltered_first_solution_strategy"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... _WhichOneofReturnType__disable_scheduling_beware_this_may_degrade_performance: typing_extensions.TypeAlias = typing.Literal["disable_scheduling_beware_this_may_degrade_performance"] _WhichOneofArgType__disable_scheduling_beware_this_may_degrade_performance: typing_extensions.TypeAlias = typing.Literal["_disable_scheduling_beware_this_may_degrade_performance", b"_disable_scheduling_beware_this_may_degrade_performance"] def WhichOneof(self, oneof_group: _WhichOneofArgType__disable_scheduling_beware_this_may_degrade_performance) -> _WhichOneofReturnType__disable_scheduling_beware_this_may_degrade_performance | None: ... Global___RoutingSearchParameters: typing_extensions.TypeAlias = RoutingSearchParameters @typing.final class RoutingModelParameters(google.protobuf.message.Message): """Parameters which have to be set when creating a RoutingModel.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor SOLVER_PARAMETERS_FIELD_NUMBER: builtins.int REDUCE_VEHICLE_COST_MODEL_FIELD_NUMBER: builtins.int MAX_CALLBACK_CACHE_SIZE_FIELD_NUMBER: builtins.int reduce_vehicle_cost_model: builtins.bool """Advanced settings. If set to true reduction of the underlying constraint model will be attempted when all vehicles have exactly the same cost structure. This can result in significant speedups. """ max_callback_cache_size: builtins.int """Cache callback calls if the number of nodes in the model is less or equal to this value. """ @property def solver_parameters(self) -> ortools.constraint_solver.solver_parameters_pb2.ConstraintSolverParameters: """Parameters to use in the underlying constraint solver.""" def __init__( self, *, solver_parameters: ortools.constraint_solver.solver_parameters_pb2.ConstraintSolverParameters | None = ..., reduce_vehicle_cost_model: builtins.bool = ..., max_callback_cache_size: builtins.int = ..., ) -> None: ... _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["solver_parameters", b"solver_parameters"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["max_callback_cache_size", b"max_callback_cache_size", "reduce_vehicle_cost_model", b"reduce_vehicle_cost_model", "solver_parameters", b"solver_parameters"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___RoutingModelParameters: typing_extensions.TypeAlias = RoutingModelParameters