Interface RoutingSearchParameters.LocalSearchNeighborhoodOperatorsOrBuilder

    • Method Detail

      • getUseRelocateValue

        int getUseRelocateValue()
         --- Inter-route operators ---
         Operator which moves a single node to another position.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
         (where (1, 5) are first and last nodes of the path and can therefore not
         be moved):
           1 ->  3  -> [2] ->  4  -> 5
           1 ->  3  ->  4  -> [2] -> 5
           1 ->  2  ->  4  -> [3] -> 5
           1 -> [4] ->  2  ->  3  -> 5
         
        .operations_research.OptionalBoolean use_relocate = 1;
        Returns:
        The enum numeric value on the wire for useRelocate.
      • getUseRelocate

        OptionalBoolean getUseRelocate()
         --- Inter-route operators ---
         Operator which moves a single node to another position.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
         (where (1, 5) are first and last nodes of the path and can therefore not
         be moved):
           1 ->  3  -> [2] ->  4  -> 5
           1 ->  3  ->  4  -> [2] -> 5
           1 ->  2  ->  4  -> [3] -> 5
           1 -> [4] ->  2  ->  3  -> 5
         
        .operations_research.OptionalBoolean use_relocate = 1;
        Returns:
        The useRelocate.
      • getUseRelocatePairValue

        int getUseRelocatePairValue()
         Operator which moves a pair of pickup and delivery nodes to another
         position where the first node of the pair must be before the second node
         on the same path. Compared to the light_relocate_pair operator, tries all
         possible positions of insertion of a pair (not only after another pair).
         Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
         first and last nodes of the path and can therefore not be moved, and
         (A, B) is a pair of nodes):
           1 -> [A] ->  2  -> [B] -> 3
           1 ->  2  -> [A] -> [B] -> 3
         
        .operations_research.OptionalBoolean use_relocate_pair = 2;
        Returns:
        The enum numeric value on the wire for useRelocatePair.
      • getUseRelocatePair

        OptionalBoolean getUseRelocatePair()
         Operator which moves a pair of pickup and delivery nodes to another
         position where the first node of the pair must be before the second node
         on the same path. Compared to the light_relocate_pair operator, tries all
         possible positions of insertion of a pair (not only after another pair).
         Possible neighbors for the path 1 -> A -> B -> 2 -> 3 (where (1, 3) are
         first and last nodes of the path and can therefore not be moved, and
         (A, B) is a pair of nodes):
           1 -> [A] ->  2  -> [B] -> 3
           1 ->  2  -> [A] -> [B] -> 3
         
        .operations_research.OptionalBoolean use_relocate_pair = 2;
        Returns:
        The useRelocatePair.
      • getUseLightRelocatePairValue

        int getUseLightRelocatePairValue()
         Operator which moves a pair of pickup and delivery nodes after another
         pair.
         Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
         (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
         be moved, and (A, B) and (C, D) are pair of nodes):
           1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
           1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
         
        .operations_research.OptionalBoolean use_light_relocate_pair = 24;
        Returns:
        The enum numeric value on the wire for useLightRelocatePair.
      • getUseLightRelocatePair

        OptionalBoolean getUseLightRelocatePair()
         Operator which moves a pair of pickup and delivery nodes after another
         pair.
         Possible neighbors for paths 1 -> A -> B -> 2, 3 -> C -> D -> 4 (where
         (1, 2) and (3, 4) are first and last nodes of paths and can therefore not
         be moved, and (A, B) and (C, D) are pair of nodes):
           1 -> 2, 3 -> C -> [A] -> D -> [B] -> 4
           1 -> A -> [C] -> B -> [D] -> 2, 3 -> 4
         
        .operations_research.OptionalBoolean use_light_relocate_pair = 24;
        Returns:
        The useLightRelocatePair.
      • getUseRelocateNeighborsValue

        int getUseRelocateNeighborsValue()
         Relocate neighborhood which moves chains of neighbors.
         The operator starts by relocating a node n after a node m, then continues
         moving nodes which were after n as long as the "cost" added is less than
         the "cost" of the arc (m, n). If the new chain doesn't respect the domain
         of next variables, it will try reordering the nodes until it finds a
         valid path.
         Possible neighbors for path 1 -> A -> B -> C -> D -> E -> 2 (where (1, 2)
         are first and last nodes of the path and can therefore not be moved, A
         must be performed before B, and A, D and E are located at the same
         place):
         1 -> A -> C -> [B] -> D -> E -> 2
         1 -> A -> C -> D -> [B] -> E -> 2
         1 -> A -> C -> D -> E -> [B] -> 2
         1 -> A -> B -> D -> [C] -> E -> 2
         1 -> A -> B -> D -> E -> [C] -> 2
         1 -> A -> [D] -> [E] -> B -> C -> 2
         1 -> A -> B -> [D] -> [E] ->  C -> 2
         1 -> A -> [E] -> B -> C -> D -> 2
         1 -> A -> B -> [E] -> C -> D -> 2
         1 -> A -> B -> C -> [E] -> D -> 2
         This operator is extremely useful to move chains of nodes which are
         located at the same place (for instance nodes part of a same stop).
         
        .operations_research.OptionalBoolean use_relocate_neighbors = 3;
        Returns:
        The enum numeric value on the wire for useRelocateNeighbors.
      • getUseRelocateNeighbors

        OptionalBoolean getUseRelocateNeighbors()
         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).
         
        .operations_research.OptionalBoolean use_relocate_neighbors = 3;
        Returns:
        The useRelocateNeighbors.
      • getUseRelocateSubtripValue

        int getUseRelocateSubtripValue()
         Relocate neighborhood that moves subpaths all pickup and delivery
         pairs have both pickup and delivery inside the subpath or both outside
         the subpath. For instance, for given paths:
         0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
         7 -> 9
         Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
         0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
         7 -> 9
        
         0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
         7 -> 9
        
         0 -> 5 -> 6 -> 8
         7 -> A -> B -> A' -> B' -> 9
         
        .operations_research.OptionalBoolean use_relocate_subtrip = 25;
        Returns:
        The enum numeric value on the wire for useRelocateSubtrip.
      • getUseRelocateSubtrip

        OptionalBoolean getUseRelocateSubtrip()
         Relocate neighborhood that moves subpaths all pickup and delivery
         pairs have both pickup and delivery inside the subpath or both outside
         the subpath. For instance, for given paths:
         0 -> A -> B -> A' -> B' -> 5 -> 6 -> 8
         7 -> 9
         Pairs (A,A') and (B,B') are interleaved, so the expected neighbors are:
         0 -> 5 -> A -> B -> A' -> B' -> 6 -> 8
         7 -> 9
        
         0 -> 5 -> 6 -> A -> B -> A' -> B' -> 8
         7 -> 9
        
         0 -> 5 -> 6 -> 8
         7 -> A -> B -> A' -> B' -> 9
         
        .operations_research.OptionalBoolean use_relocate_subtrip = 25;
        Returns:
        The useRelocateSubtrip.
      • getUseExchangeValue

        int getUseExchangeValue()
         Operator which exchanges the positions of two nodes.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
         (where (1, 5) are first and last nodes of the path and can therefore not
         be moved):
           1 -> [3] -> [2] ->  4  -> 5
           1 -> [4] ->  3  -> [2] -> 5
           1 ->  2  -> [4] -> [3] -> 5
         
        .operations_research.OptionalBoolean use_exchange = 4;
        Returns:
        The enum numeric value on the wire for useExchange.
      • getUseExchange

        OptionalBoolean getUseExchange()
         Operator which exchanges the positions of two nodes.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5
         (where (1, 5) are first and last nodes of the path and can therefore not
         be moved):
           1 -> [3] -> [2] ->  4  -> 5
           1 -> [4] ->  3  -> [2] -> 5
           1 ->  2  -> [4] -> [3] -> 5
         
        .operations_research.OptionalBoolean use_exchange = 4;
        Returns:
        The useExchange.
      • getUseExchangePairValue

        int getUseExchangePairValue()
         Operator which exchanges the positions of two pair of nodes. Pairs
         correspond to the pickup and delivery pairs defined in the routing model.
         Possible neighbor for the paths
         1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
         (where (1, 3) and (4, 5) are first and last nodes of the paths and can
         therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
           1 -> [C] ->  [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
         
        .operations_research.OptionalBoolean use_exchange_pair = 22;
        Returns:
        The enum numeric value on the wire for useExchangePair.
      • getUseExchangePair

        OptionalBoolean getUseExchangePair()
         Operator which exchanges the positions of two pair of nodes. Pairs
         correspond to the pickup and delivery pairs defined in the routing model.
         Possible neighbor for the paths
         1 -> A -> B -> 2 -> 3 and 4 -> C -> D -> 5
         (where (1, 3) and (4, 5) are first and last nodes of the paths and can
         therefore not be moved, and (A, B) and (C,D) are pairs of nodes):
           1 -> [C] ->  [D] -> 2 -> 3, 4 -> [A] -> [B] -> 5
         
        .operations_research.OptionalBoolean use_exchange_pair = 22;
        Returns:
        The useExchangePair.
      • getUseExchangeSubtripValue

        int getUseExchangeSubtripValue()
         Operator which exchanges subtrips associated to two pairs of nodes,
         see use_relocate_subtrip for a definition of subtrips.
         
        .operations_research.OptionalBoolean use_exchange_subtrip = 26;
        Returns:
        The enum numeric value on the wire for useExchangeSubtrip.
      • getUseExchangeSubtrip

        OptionalBoolean getUseExchangeSubtrip()
         Operator which exchanges subtrips associated to two pairs of nodes,
         see use_relocate_subtrip for a definition of subtrips.
         
        .operations_research.OptionalBoolean use_exchange_subtrip = 26;
        Returns:
        The useExchangeSubtrip.
      • getUseCrossValue

        int getUseCrossValue()
         Operator which cross exchanges the starting chains of 2 paths, including
         exchanging the whole paths.
         First and last nodes are not moved.
         Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
         (where (1, 5) and (6, 8) are first and last nodes of the paths and can
         therefore not be moved):
           1 -> [7] -> 3 -> 4 -> 5  6 -> [2] -> 8
           1 -> [7] -> 4 -> 5       6 -> [2 -> 3] -> 8
           1 -> [7] -> 5            6 -> [2 -> 3 -> 4] -> 8
         
        .operations_research.OptionalBoolean use_cross = 5;
        Returns:
        The enum numeric value on the wire for useCross.
      • getUseCross

        OptionalBoolean getUseCross()
         Operator which cross exchanges the starting chains of 2 paths, including
         exchanging the whole paths.
         First and last nodes are not moved.
         Possible neighbors for the paths 1 -> 2 -> 3 -> 4 -> 5 and 6 -> 7 -> 8
         (where (1, 5) and (6, 8) are first and last nodes of the paths and can
         therefore not be moved):
           1 -> [7] -> 3 -> 4 -> 5  6 -> [2] -> 8
           1 -> [7] -> 4 -> 5       6 -> [2 -> 3] -> 8
           1 -> [7] -> 5            6 -> [2 -> 3 -> 4] -> 8
         
        .operations_research.OptionalBoolean use_cross = 5;
        Returns:
        The useCross.
      • getUseCrossExchangeValue

        int getUseCrossExchangeValue()
         Not implemented yet. TODO(b/68128619): Implement.
         
        .operations_research.OptionalBoolean use_cross_exchange = 6;
        Returns:
        The enum numeric value on the wire for useCrossExchange.
      • getUseCrossExchange

        OptionalBoolean getUseCrossExchange()
         Not implemented yet. TODO(b/68128619): Implement.
         
        .operations_research.OptionalBoolean use_cross_exchange = 6;
        Returns:
        The useCrossExchange.
      • getUseRelocateExpensiveChainValue

        int getUseRelocateExpensiveChainValue()
         Operator which detects the relocate_expensive_chain_num_arcs_to_consider
         most expensive arcs on a path, and moves the chain resulting from cutting
         pairs of arcs among these to another position.
         Possible neighbors for paths 1 -> 2 (empty) and
         3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
         most expensive arcs, and the chain resulting from breaking them is
         B -> C):
           1 -> [B -> C] -> 2     3 -> A -> D -> 4
           1 -> 2      3 -> [B -> C] -> A -> D -> 4
           1 -> 2      3 -> A -> D -> [B -> C] -> 4
         
        .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
        Returns:
        The enum numeric value on the wire for useRelocateExpensiveChain.
      • getUseRelocateExpensiveChain

        OptionalBoolean getUseRelocateExpensiveChain()
         Operator which detects the relocate_expensive_chain_num_arcs_to_consider
         most expensive arcs on a path, and moves the chain resulting from cutting
         pairs of arcs among these to another position.
         Possible neighbors for paths 1 -> 2 (empty) and
         3 -> A ------> B --> C -----> D -> 4 (where A -> B and C -> D are the 2
         most expensive arcs, and the chain resulting from breaking them is
         B -> C):
           1 -> [B -> C] -> 2     3 -> A -> D -> 4
           1 -> 2      3 -> [B -> C] -> A -> D -> 4
           1 -> 2      3 -> A -> D -> [B -> C] -> 4
         
        .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
        Returns:
        The useRelocateExpensiveChain.
      • getUseTwoOptValue

        int getUseTwoOptValue()
         --- 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
         
        .operations_research.OptionalBoolean use_two_opt = 7;
        Returns:
        The enum numeric value on the wire for useTwoOpt.
      • getUseTwoOpt

        OptionalBoolean getUseTwoOpt()
         --- 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
         
        .operations_research.OptionalBoolean use_two_opt = 7;
        Returns:
        The useTwoOpt.
      • getUseOrOptValue

        int getUseOrOptValue()
         Operator which moves sub-chains of a path of length 1, 2 and 3 to another
         position in the same path.
         When the length of the sub-chain is 1, the operator simply moves a node
         to another position.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
         length of 2 (where (1, 5) are first and last nodes of the path and can
         therefore not be moved):
           1 ->  4 -> [2 -> 3] -> 5
           1 -> [3 -> 4] -> 2  -> 5
         The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
         path).
         
        .operations_research.OptionalBoolean use_or_opt = 8;
        Returns:
        The enum numeric value on the wire for useOrOpt.
      • getUseOrOpt

        OptionalBoolean getUseOrOpt()
         Operator which moves sub-chains of a path of length 1, 2 and 3 to another
         position in the same path.
         When the length of the sub-chain is 1, the operator simply moves a node
         to another position.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 -> 5, for a sub-chain
         length of 2 (where (1, 5) are first and last nodes of the path and can
         therefore not be moved):
           1 ->  4 -> [2 -> 3] -> 5
           1 -> [3 -> 4] -> 2  -> 5
         The OR_OPT operator is a limited version of 3-Opt (breaks 3 arcs on a
         path).
         
        .operations_research.OptionalBoolean use_or_opt = 8;
        Returns:
        The useOrOpt.
      • getUseLinKernighanValue

        int getUseLinKernighanValue()
         Lin-Kernighan operator.
         While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
         move followed by a series of 2-OPT moves. Returns a neighbor for which
         the global gain is positive.
         
        .operations_research.OptionalBoolean use_lin_kernighan = 9;
        Returns:
        The enum numeric value on the wire for useLinKernighan.
      • getUseLinKernighan

        OptionalBoolean getUseLinKernighan()
         Lin-Kernighan operator.
         While the accumulated local gain is positive, performs a 2-OPT or a 3-OPT
         move followed by a series of 2-OPT moves. Returns a neighbor for which
         the global gain is positive.
         
        .operations_research.OptionalBoolean use_lin_kernighan = 9;
        Returns:
        The useLinKernighan.
      • getUseTspOptValue

        int getUseTspOptValue()
         Sliding TSP operator.
         Uses an exact dynamic programming algorithm to solve the TSP
         corresponding to path sub-chains.
         For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
         nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
         cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
         
        .operations_research.OptionalBoolean use_tsp_opt = 10;
        Returns:
        The enum numeric value on the wire for useTspOpt.
      • getUseTspOpt

        OptionalBoolean getUseTspOpt()
         Sliding TSP operator.
         Uses an exact dynamic programming algorithm to solve the TSP
         corresponding to path sub-chains.
         For a subchain 1 -> 2 -> 3 -> 4 -> 5 -> 6, solves the TSP on
         nodes A, 2, 3, 4, 5, where A is a merger of nodes 1 and 6 such that
         cost(A,i) = cost(1,i) and cost(i,A) = cost(i,6).
         
        .operations_research.OptionalBoolean use_tsp_opt = 10;
        Returns:
        The useTspOpt.
      • getUseMakeActiveValue

        int getUseMakeActiveValue()
         --- Operators on inactive nodes ---
         Operator which inserts an inactive node into a path.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path) are:
           1 -> [5] ->  2  ->  3  -> 4
           1 ->  2  -> [5] ->  3  -> 4
           1 ->  2  ->  3  -> [5] -> 4
         
        .operations_research.OptionalBoolean use_make_active = 11;
        Returns:
        The enum numeric value on the wire for useMakeActive.
      • getUseMakeActive

        OptionalBoolean getUseMakeActive()
         --- Operators on inactive nodes ---
         Operator which inserts an inactive node into a path.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path) are:
           1 -> [5] ->  2  ->  3  -> 4
           1 ->  2  -> [5] ->  3  -> 4
           1 ->  2  ->  3  -> [5] -> 4
         
        .operations_research.OptionalBoolean use_make_active = 11;
        Returns:
        The useMakeActive.
      • getUseRelocateAndMakeActiveValue

        int getUseRelocateAndMakeActiveValue()
         Operator which relocates a node while making an inactive one active.
         As of 3/2017, the operator is limited to two kinds of moves:
         - Relocating a node and replacing it by an inactive node.
           Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
           (where 1,2 and 5,6 are first and last nodes of paths) is:
           1 -> 3 -> 5, 2 -> 4 -> 6.
         - Relocating a node and inserting an inactive node next to it.
           Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
           (where 1,2 and 5,6 are first and last nodes of paths) is:
           1 -> 4 -> 3 -> 5, 2 -> 6.
         
        .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
        Returns:
        The enum numeric value on the wire for useRelocateAndMakeActive.
      • getUseRelocateAndMakeActive

        OptionalBoolean getUseRelocateAndMakeActive()
         Operator which relocates a node while making an inactive one active.
         As of 3/2017, the operator is limited to two kinds of moves:
         - Relocating a node and replacing it by an inactive node.
           Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
           (where 1,2 and 5,6 are first and last nodes of paths) is:
           1 -> 3 -> 5, 2 -> 4 -> 6.
         - Relocating a node and inserting an inactive node next to it.
           Possible neighbor for path 1 -> 5, 2 -> 3 -> 6 and 4 inactive
           (where 1,2 and 5,6 are first and last nodes of paths) is:
           1 -> 4 -> 3 -> 5, 2 -> 6.
         
        .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
        Returns:
        The useRelocateAndMakeActive.
      • getUseMakeInactiveValue

        int getUseMakeInactiveValue()
         Operator which makes path nodes inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
         and last nodes of the path) are:
           1 -> 3 -> 4 with 2 inactive
           1 -> 2 -> 4 with 3 inactive
         
        .operations_research.OptionalBoolean use_make_inactive = 12;
        Returns:
        The enum numeric value on the wire for useMakeInactive.
      • getUseMakeInactive

        OptionalBoolean getUseMakeInactive()
         Operator which makes path nodes inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
         and last nodes of the path) are:
           1 -> 3 -> 4 with 2 inactive
           1 -> 2 -> 4 with 3 inactive
         
        .operations_research.OptionalBoolean use_make_inactive = 12;
        Returns:
        The useMakeInactive.
      • getUseMakeChainInactiveValue

        int getUseMakeChainInactiveValue()
         Operator which makes a "chain" of path nodes inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
         and last nodes of the path) are:
           1 -> 3 -> 4 with 2 inactive
           1 -> 2 -> 4 with 3 inactive
           1 -> 4 with 2 and 3 inactive
         
        .operations_research.OptionalBoolean use_make_chain_inactive = 13;
        Returns:
        The enum numeric value on the wire for useMakeChainInactive.
      • getUseMakeChainInactive

        OptionalBoolean getUseMakeChainInactive()
         Operator which makes a "chain" of path nodes inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 (where 1 and 4 are first
         and last nodes of the path) are:
           1 -> 3 -> 4 with 2 inactive
           1 -> 2 -> 4 with 3 inactive
           1 -> 4 with 2 and 3 inactive
         
        .operations_research.OptionalBoolean use_make_chain_inactive = 13;
        Returns:
        The useMakeChainInactive.
      • getUseSwapActiveValue

        int getUseSwapActiveValue()
         Operator which replaces an active node by an inactive one.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path) are:
           1 -> [5] ->  3  -> 4 with 2 inactive
           1 ->  2  -> [5] -> 4 with 3 inactive
         
        .operations_research.OptionalBoolean use_swap_active = 14;
        Returns:
        The enum numeric value on the wire for useSwapActive.
      • getUseSwapActive

        OptionalBoolean getUseSwapActive()
         Operator which replaces an active node by an inactive one.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path) are:
           1 -> [5] ->  3  -> 4 with 2 inactive
           1 ->  2  -> [5] -> 4 with 3 inactive
         
        .operations_research.OptionalBoolean use_swap_active = 14;
        Returns:
        The useSwapActive.
      • getUseExtendedSwapActiveValue

        int getUseExtendedSwapActiveValue()
         Operator which makes an inactive node active and an active one inactive.
         It is similar to SwapActiveOperator excepts that it tries to insert the
         inactive node in all possible positions instead of just the position of
         the node made inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path) are:
           1 -> [5] ->  3  -> 4 with 2 inactive
           1 ->  3  -> [5] -> 4 with 2 inactive
           1 -> [5] ->  2  -> 4 with 3 inactive
           1 ->  2  -> [5] -> 4 with 3 inactive
         
        .operations_research.OptionalBoolean use_extended_swap_active = 15;
        Returns:
        The enum numeric value on the wire for useExtendedSwapActive.
      • getUseExtendedSwapActive

        OptionalBoolean getUseExtendedSwapActive()
         Operator which makes an inactive node active and an active one inactive.
         It is similar to SwapActiveOperator excepts that it tries to insert the
         inactive node in all possible positions instead of just the position of
         the node made inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path) are:
           1 -> [5] ->  3  -> 4 with 2 inactive
           1 ->  3  -> [5] -> 4 with 2 inactive
           1 -> [5] ->  2  -> 4 with 3 inactive
           1 ->  2  -> [5] -> 4 with 3 inactive
         
        .operations_research.OptionalBoolean use_extended_swap_active = 15;
        Returns:
        The useExtendedSwapActive.
      • getUseShortestPathSwapActiveValue

        int getUseShortestPathSwapActiveValue()
         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.
         
        .operations_research.OptionalBoolean use_shortest_path_swap_active = 34;
        Returns:
        The enum numeric value on the wire for useShortestPathSwapActive.
      • getUseShortestPathSwapActive

        OptionalBoolean getUseShortestPathSwapActive()
         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.
         
        .operations_research.OptionalBoolean use_shortest_path_swap_active = 34;
        Returns:
        The useShortestPathSwapActive.
      • getUseNodePairSwapActiveValue

        int getUseNodePairSwapActiveValue()
         Operator which makes an inactive node active and an active pair of nodes
         inactive OR makes an inactive pair of nodes active and an active node
         inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
         of nodes) are:
           1 -> [5] -> 4 with (2,3) inactive
         Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
         (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
         of nodes) are:
           1 -> [4] -> [5] -> 3 with 2 inactive
         
        .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
        Returns:
        The enum numeric value on the wire for useNodePairSwapActive.
      • getUseNodePairSwapActive

        OptionalBoolean getUseNodePairSwapActive()
         Operator which makes an inactive node active and an active pair of nodes
         inactive OR makes an inactive pair of nodes active and an active node
         inactive.
         Possible neighbors for the path 1 -> 2 -> 3 -> 4 with 5 inactive
         (where 1 and 4 are first and last nodes of the path and (2,3) is a pair
         of nodes) are:
           1 -> [5] -> 4 with (2,3) inactive
         Possible neighbors for the path 1 -> 2 -> 3 with (4,5) inactive
         (where 1 and 3 are first and last nodes of the path and (4,5) is a pair
         of nodes) are:
           1 -> [4] -> [5] -> 3 with 2 inactive
         
        .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
        Returns:
        The useNodePairSwapActive.
      • getUsePathLnsValue

        int getUsePathLnsValue()
         --- Large neighborhood search operators ---
         Operator which relaxes two sub-chains of three consecutive arcs each.
         Each sub-chain is defined by a start node and the next three arcs. Those
         six arcs are relaxed to build a new neighbor.
         PATH_LNS explores all possible pairs of starting nodes and so defines
         n^2 neighbors, n being the number of nodes.
         Note that the two sub-chains can be part of the same path; they even may
         overlap.
         
        .operations_research.OptionalBoolean use_path_lns = 16;
        Returns:
        The enum numeric value on the wire for usePathLns.
      • getUsePathLns

        OptionalBoolean getUsePathLns()
         --- Large neighborhood search operators ---
         Operator which relaxes two sub-chains of three consecutive arcs each.
         Each sub-chain is defined by a start node and the next three arcs. Those
         six arcs are relaxed to build a new neighbor.
         PATH_LNS explores all possible pairs of starting nodes and so defines
         n^2 neighbors, n being the number of nodes.
         Note that the two sub-chains can be part of the same path; they even may
         overlap.
         
        .operations_research.OptionalBoolean use_path_lns = 16;
        Returns:
        The usePathLns.
      • getUseFullPathLnsValue

        int getUseFullPathLnsValue()
         Operator which relaxes one entire path and all inactive nodes.
         
        .operations_research.OptionalBoolean use_full_path_lns = 17;
        Returns:
        The enum numeric value on the wire for useFullPathLns.
      • getUseFullPathLns

        OptionalBoolean getUseFullPathLns()
         Operator which relaxes one entire path and all inactive nodes.
         
        .operations_research.OptionalBoolean use_full_path_lns = 17;
        Returns:
        The useFullPathLns.
      • getUseTspLnsValue

        int getUseTspLnsValue()
         TSP-base LNS.
         Randomly merges consecutive nodes until n "meta"-nodes remain and solves
         the corresponding TSP.
         This defines an "unlimited" neighborhood which must be stopped by search
         limits. To force diversification, the operator iteratively forces each
         node to serve as base of a meta-node.
         
        .operations_research.OptionalBoolean use_tsp_lns = 18;
        Returns:
        The enum numeric value on the wire for useTspLns.
      • getUseTspLns

        OptionalBoolean getUseTspLns()
         TSP-base LNS.
         Randomly merges consecutive nodes until n "meta"-nodes remain and solves
         the corresponding TSP.
         This defines an "unlimited" neighborhood which must be stopped by search
         limits. To force diversification, the operator iteratively forces each
         node to serve as base of a meta-node.
         
        .operations_research.OptionalBoolean use_tsp_lns = 18;
        Returns:
        The useTspLns.
      • getUseInactiveLnsValue

        int getUseInactiveLnsValue()
         Operator which relaxes all inactive nodes and one sub-chain of six
         consecutive arcs. That way the path can be improved by inserting inactive
         nodes or swapping arcs.
         
        .operations_research.OptionalBoolean use_inactive_lns = 19;
        Returns:
        The enum numeric value on the wire for useInactiveLns.
      • getUseInactiveLns

        OptionalBoolean getUseInactiveLns()
         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.
         
        .operations_research.OptionalBoolean use_inactive_lns = 19;
        Returns:
        The useInactiveLns.
      • getUseGlobalCheapestInsertionPathLnsValue

        int getUseGlobalCheapestInsertionPathLnsValue()
         --- LNS-like large neighborhood search operators using heuristics ---
         Operator which makes all nodes on a route unperformed, and reinserts them
         using the GlobalCheapestInsertion heuristic.
         
        .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
        Returns:
        The enum numeric value on the wire for useGlobalCheapestInsertionPathLns.
      • getUseGlobalCheapestInsertionPathLns

        OptionalBoolean getUseGlobalCheapestInsertionPathLns()
         --- LNS-like large neighborhood search operators using heuristics ---
         Operator which makes all nodes on a route unperformed, and reinserts them
         using the GlobalCheapestInsertion heuristic.
         
        .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
        Returns:
        The useGlobalCheapestInsertionPathLns.
      • getUseLocalCheapestInsertionPathLnsValue

        int getUseLocalCheapestInsertionPathLnsValue()
         Same as above but using LocalCheapestInsertion as a heuristic.
         
        .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
        Returns:
        The enum numeric value on the wire for useLocalCheapestInsertionPathLns.
      • getUseLocalCheapestInsertionPathLns

        OptionalBoolean getUseLocalCheapestInsertionPathLns()
         Same as above but using LocalCheapestInsertion as a heuristic.
         
        .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
        Returns:
        The useLocalCheapestInsertionPathLns.
      • getUseRelocatePathGlobalCheapestInsertionInsertUnperformedValue

        int getUseRelocatePathGlobalCheapestInsertionInsertUnperformedValue()
         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.
         
        .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
        Returns:
        The enum numeric value on the wire for useRelocatePathGlobalCheapestInsertionInsertUnperformed.
      • getUseRelocatePathGlobalCheapestInsertionInsertUnperformed

        OptionalBoolean getUseRelocatePathGlobalCheapestInsertionInsertUnperformed()
         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.
         
        .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
        Returns:
        The useRelocatePathGlobalCheapestInsertionInsertUnperformed.
      • getUseGlobalCheapestInsertionExpensiveChainLnsValue

        int getUseGlobalCheapestInsertionExpensiveChainLnsValue()
         This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
         most expensive arcs on a route, makes the nodes in between pairs of these
         expensive arcs unperformed, and reinserts them using the
         GlobalCheapestInsertion heuristic.
         
        .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
        Returns:
        The enum numeric value on the wire for useGlobalCheapestInsertionExpensiveChainLns.
      • getUseGlobalCheapestInsertionExpensiveChainLns

        OptionalBoolean getUseGlobalCheapestInsertionExpensiveChainLns()
         This operator finds heuristic_expensive_chain_lns_num_arcs_to_consider
         most expensive arcs on a route, makes the nodes in between pairs of these
         expensive arcs unperformed, and reinserts them using the
         GlobalCheapestInsertion heuristic.
         
        .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
        Returns:
        The useGlobalCheapestInsertionExpensiveChainLns.
      • getUseLocalCheapestInsertionExpensiveChainLnsValue

        int getUseLocalCheapestInsertionExpensiveChainLnsValue()
         Same as above but using LocalCheapestInsertion as a heuristic for
         insertion.
         
        .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
        Returns:
        The enum numeric value on the wire for useLocalCheapestInsertionExpensiveChainLns.
      • getUseLocalCheapestInsertionExpensiveChainLns

        OptionalBoolean getUseLocalCheapestInsertionExpensiveChainLns()
         Same as above but using LocalCheapestInsertion as a heuristic for
         insertion.
         
        .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
        Returns:
        The useLocalCheapestInsertionExpensiveChainLns.
      • getUseGlobalCheapestInsertionCloseNodesLnsValue

        int getUseGlobalCheapestInsertionCloseNodesLnsValue()
         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.
         
        .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
        Returns:
        The enum numeric value on the wire for useGlobalCheapestInsertionCloseNodesLns.
      • getUseGlobalCheapestInsertionCloseNodesLns

        OptionalBoolean getUseGlobalCheapestInsertionCloseNodesLns()
         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.
         
        .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
        Returns:
        The useGlobalCheapestInsertionCloseNodesLns.
      • getUseLocalCheapestInsertionCloseNodesLnsValue

        int getUseLocalCheapestInsertionCloseNodesLnsValue()
         Same as above, but insertion positions for nodes are determined by the
         LocalCheapestInsertion heuristic.
         
        .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
        Returns:
        The enum numeric value on the wire for useLocalCheapestInsertionCloseNodesLns.
      • getUseLocalCheapestInsertionCloseNodesLns

        OptionalBoolean getUseLocalCheapestInsertionCloseNodesLns()
         Same as above, but insertion positions for nodes are determined by the
         LocalCheapestInsertion heuristic.
         
        .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
        Returns:
        The useLocalCheapestInsertionCloseNodesLns.